diff --git a/actions/bcr-pr-review-approver/action.yml b/actions/bcr-pr-review-approver/action.yml
deleted file mode 100644
index 2b226c8..0000000
--- a/actions/bcr-pr-review-approver/action.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-name: 'BCR PR Review Approver'
-description: 'Helps approve and merge PRs of Bazel Central Registry.'
-inputs:
-  token:
-    description: 'The GitHub token'
-    required: false
-    default: ${{ github.token }}
-runs:
-  using: 'node20'
-  main: 'index.js'
diff --git a/actions/bcr-pr-review-approver/index.js b/actions/bcr-pr-review-approver/index.js
deleted file mode 100644
index 05fe598..0000000
--- a/actions/bcr-pr-review-approver/index.js
+++ /dev/null
@@ -1,262 +0,0 @@
-const { getInput, setFailed } = require('@actions/core');
-const { context, getOctokit } = require("@actions/github");
-
-// Keep this function in sync with the one in actions/bcr-pr-review-notifier/index.js
-async function fetchAllModifiedModules(octokit, owner, repo, prNumber) {
-  let page = 1;
-  const perPage = 100; // GitHub's max per_page value
-  let accumulate = new Set();
-  let response;
-
-  do {
-    response = await octokit.rest.pulls.listFiles({
-      owner,
-      repo,
-      pull_number: prNumber,
-      per_page: perPage,
-      page,
-    });
-
-    response.data.forEach(file => {
-      const match = file.filename.match(/^modules\/([^\/]+)\//);
-      if (match) {
-        accumulate.add(match[1]);
-      }
-    });
-
-    page++;
-  } while (response.data.length === perPage);
-
-  return accumulate;
-}
-
-// Keep this function in sync with the one in actions/bcr-pr-review-notifier/index.js
-async function generateMaintainersMap(octokit, owner, repo, modifiedModules) {
-  const maintainersMap = new Map(); // Map: maintainer GitHub username -> Set of module they maintain
-  const modulesWithoutGithubMaintainers = new Set(); // Set of module names without module maintainers
-  for (const moduleName of modifiedModules) {
-    console.log(`Fetching metadata for module: ${moduleName}`);
-    try {
-      const { data: metadataContent } = await octokit.rest.repos.getContent({
-        owner,
-        repo,
-        path: `modules/${moduleName}/metadata.json`,
-        ref: 'main',
-      });
-
-      const metadata = JSON.parse(Buffer.from(metadataContent.content, 'base64').toString('utf-8'));
-      let hasGithubMaintainer = false;
-      metadata.maintainers.forEach(maintainer => {
-        if (maintainer.github) { // Check if the github field is specified
-          hasGithubMaintainer = true;
-          if (!maintainersMap.has(maintainer.github)) {
-            maintainersMap.set(maintainer.github, new Set());
-          }
-          maintainersMap.get(maintainer.github).add(moduleName);
-        }
-      });
-
-      if (!hasGithubMaintainer) {
-        modulesWithoutGithubMaintainers.add(moduleName);
-      }
-    } catch (error) {
-      if (error.status === 404) {
-        console.log(`Module ${moduleName} does not have a metadata.json file on the main branch.`);
-        modulesWithoutGithubMaintainers.add(moduleName);
-      } else {
-        console.error(`Error processing module ${moduleName}: ${error}`);
-        setFailed(`Failed to notify maintainers for module ${moduleName}`);
-      }
-    }
-  }
-  return [maintainersMap, modulesWithoutGithubMaintainers];
-}
-
-async function getPrApprovers(octokit, owner, repo, prNumber) {
-  // Get the commits for the PR
-  const commits = await octokit.rest.pulls.listCommits({
-    owner,
-    repo,
-    pull_number: prNumber,
-  });
-
-  // Filter out the merge commits whose parents length is larger than 1
-  const nonMergeCommits = commits.data.filter(commit => commit.parents.length === 1);
-
-  // Get the latest commit submitted time
-  const latestCommit = nonMergeCommits[nonMergeCommits.length - 1];
-  const latestCommitTime = new Date(latestCommit.commit.author.date);
-  console.log(`Latest commit: ${latestCommit.sha}`);
-  console.log(`Latest commit time: ${latestCommitTime}`);
-
-  // Get review events for the PR
-  const reviewEvents = await octokit.rest.pulls.listReviews({
-    owner,
-    repo,
-    pull_number: prNumber,
-  });
-
-  // For each reviewer, collect their latest review that are newer than the latest non-merge commit
-  // Key: reviewer, Value: review
-  const latestReviews = new Map();
-  reviewEvents.data.forEach(review => {
-    if (new Date(review.submitted_at) < latestCommitTime) {
-      return;
-    }
-
-    const reviewer = review.user.login;
-
-    if (!latestReviews.has(reviewer)) {
-      latestReviews.set(reviewer, review);
-      return;
-    }
-
-    existingSubmittedAt = new Date(latestReviews.get(reviewer).submitted_at);
-    submittedAt = new Date(review.submitted_at);
-    if (submittedAt > existingSubmittedAt) {
-      latestReviews.set(reviewer, review);
-    }
-  });
-
-  // Print out the latest valid reviews and collect approvers
-  console.log(`Latest Reviews:`);
-  const approvers = new Set();
-  latestReviews.forEach(review => {
-    console.log(`- Reviewer: ${review.user.login}, State: ${review.state}, Submitted At: ${review.submitted_at}`);
-    if (review.state === 'APPROVED') {
-      approvers.add(review.user.login);
-    }
-  });
-
-  // Print out the approvers
-  console.log(`Approvers: ${Array.from(approvers).join(', ')}`);
-
-  return approvers;
-}
-
-async function checkIfAllModifiedModulesApproved(modifiedModules, maintainersMap, approvers) {
-  let allModulesApproved = true;
-  const modulesNotApproved = [];
-
-  for (const module of modifiedModules) {
-    let moduleApproved = false;
-    for (const [maintainer, maintainedModules] of maintainersMap.entries()) {
-      if (maintainedModules.has(module) && approvers.has(maintainer)) {
-        moduleApproved = true;
-        console.log(`Module '${module}' has maintainers' approval from '${maintainer}'.`);
-        break;
-      }
-    }
-    if (!moduleApproved) {
-      allModulesApproved = false;
-      modulesNotApproved.push(module);
-      console.log(`Module '${module}' does not have maintainers' approval.`);
-    }
-  }
-
-
-  if (!allModulesApproved) {
-    console.log(`Cannot auto-merge this PR, the following modules do not have maintainers' approval: ${modulesNotApproved.join(', ')}`);
-  } else {
-    console.log('All modified modules have maintainers\' approval');
-  }
-
-  return allModulesApproved;
-}
-
-async function reviewPR(octokit, owner, repo, prNumber) {
-
-  console.log('\n');
-  console.log(`Processing PR #${prNumber}`);
-
-  // Fetch modified modules
-  const modifiedModules = await fetchAllModifiedModules(octokit, owner, repo, prNumber);
-  console.log(`Modified modules: ${Array.from(modifiedModules).join(', ')}`);
-  if (modifiedModules.size === 0) {
-    console.log('No modules are modified in this PR');
-    return;
-  }
-
-  // Figure out maintainers for each modified module
-  const [ maintainersMap, modulesWithoutGithubMaintainers ] = await generateMaintainersMap(octokit, owner, repo, modifiedModules);
-  console.log('Maintainers Map:');
-  for (const [maintainer, maintainedModules] of maintainersMap.entries()) {
-    console.log(`- Maintainer: ${maintainer}, Modules: ${Array.from(maintainedModules).join(', ')}`);
-  }
-
-  // If modulesWithoutGithubMaintainers is not empty, then return
-  if (modulesWithoutGithubMaintainers.size > 0) {
-    console.log(`Cannot auto-merge this PR with maintainers approval because the following modules do not have maintainers with GitHub usernames: ${Array.from(modulesWithoutGithubMaintainers).join(', ')}`);
-    return;
-  }
-
-  // Get the approvers for the PR
-  const approvers = await getPrApprovers(octokit, owner, repo, prNumber);
-
-  // Verify if all modified modules have at least one maintainer's approval
-  const allModulesApproved = await checkIfAllModifiedModulesApproved(modifiedModules, maintainersMap, approvers);
-
-  const myLogin = context.actor;
-
-  // Approve the PR if not previously approved and all modules are approved
-  if (allModulesApproved) {
-    if (!approvers.has(myLogin)) {
-      console.log('Approving the PR');
-      await octokit.rest.pulls.createReview({
-        owner,
-        repo,
-        pull_number: prNumber,
-        event: 'APPROVE',
-        body: 'Hello @bazelbuild/bcr-maintainers, all modules in this PR have been approved by their maintainers. Please take a final look to merge this PR.',
-      });
-    }
-
-    // TODO: Enable the following when it's safe to do so.
-    // // Try to merge the PR
-    // try {
-    //   await octokit.rest.pulls.merge({
-    //     owner,
-    //     repo,
-    //     pull_number: prNumber,
-    //   });
-    // } catch (error) {
-    //   console.error('Failed to merge PR:', error.message);
-    //   console.error('This PR is not mergeable probably due to failed presubmits.');
-    // }
-  }
-
-  // Discard previous approvals if not all modules are approved
-  if (!allModulesApproved && approvers.has(myLogin)) {
-    console.log('Discarding previous approval');
-    await octokit.rest.pulls.createReview({
-      owner,
-      repo,
-      pull_number: prNumber,
-      event: 'REQUEST_CHANGES',
-      body: 'Require module maintainers\' approval.',
-    });
-  }
-}
-
-async function run() {
-  const token = getInput("token");
-  const octokit = getOctokit(token);
-  const { owner, repo } = context.repo;
-
-  // Get all open PRs from the repo
-  const prs = await octokit.rest.pulls.list({
-    owner,
-    repo,
-    state: 'open',
-  });
-
-  // Review each PR
-  for (const pr of prs.data) {
-    await reviewPR(octokit, owner, repo, pr.number);
-  }
-}
-
-run().catch(err => {
-  console.error(err);
-  setFailed(err.message);
-});
diff --git a/actions/bcr-pr-review-approver/package.json b/actions/bcr-pr-review-approver/package.json
deleted file mode 100644
index 890189e..0000000
--- a/actions/bcr-pr-review-approver/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "name": "bcr-pr-review-approver",
-  "version": "1.0.0",
-  "description": "",
-  "main": "index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "author": "",
-  "license": "ISC",
-  "dependencies": {
-    "@actions/core": "^1.10.1",
-    "@actions/github": "^6.0.0"
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/action.yml b/actions/bcr-pr-review-notifier/action.yml
deleted file mode 100644
index 9612e08..0000000
--- a/actions/bcr-pr-review-notifier/action.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-name: 'BCR PR Review Notifier'
-description: 'Helps notify people for reviewing PRs of Bazel Central Registry.'
-inputs:
-  token:
-    description: 'The GitHub token'
-    required: false
-    default: ${{ github.token }}
-runs:
-  using: 'node20'
-  main: 'index.js'
diff --git a/actions/bcr-pr-review-notifier/index.js b/actions/bcr-pr-review-notifier/index.js
deleted file mode 100644
index 920c7f9..0000000
--- a/actions/bcr-pr-review-notifier/index.js
+++ /dev/null
@@ -1,168 +0,0 @@
-const { getInput, setFailed } = require('@actions/core');
-const { context, getOctokit } = require("@actions/github");
-
-// Keep this function in sync with the one in actions/bcr-pr-review-reviewer/index.js
-async function fetchAllModifiedModules(octokit, owner, repo, prNumber) {
-  let page = 1;
-  const perPage = 100; // GitHub's max per_page value
-  let accumulate = new Set();
-  let response;
-
-  do {
-    response = await octokit.rest.pulls.listFiles({
-      owner,
-      repo,
-      pull_number: prNumber,
-      per_page: perPage,
-      page,
-    });
-
-    response.data.forEach(file => {
-      const match = file.filename.match(/^modules\/([^\/]+)\//);
-      if (match) {
-        accumulate.add(match[1]);
-      }
-    });
-
-    page++;
-  } while (response.data.length === perPage);
-
-  return accumulate;
-}
-
-// Keep this function in sync with the one in actions/bcr-pr-review-reviewer/index.js
-async function generateMaintainersMap(octokit, owner, repo, modifiedModules) {
-  const maintainersMap = new Map(); // Map: maintainer GitHub username -> Set of module they maintain
-  const modulesWithoutGithubMaintainers = new Set(); // Set of module names without module maintainers
-  for (const moduleName of modifiedModules) {
-    console.log(`Fetching metadata for module: ${moduleName}`);
-    try {
-      const { data: metadataContent } = await octokit.rest.repos.getContent({
-        owner,
-        repo,
-        path: `modules/${moduleName}/metadata.json`,
-        ref: 'main',
-      });
-
-      const metadata = JSON.parse(Buffer.from(metadataContent.content, 'base64').toString('utf-8'));
-      let hasGithubMaintainer = false;
-      metadata.maintainers.forEach(maintainer => {
-        if (maintainer.github) { // Check if the github field is specified
-          hasGithubMaintainer = true;
-          if (!maintainersMap.has(maintainer.github)) {
-            maintainersMap.set(maintainer.github, new Set());
-          }
-          maintainersMap.get(maintainer.github).add(moduleName);
-        }
-      });
-
-      if (!hasGithubMaintainer) {
-        modulesWithoutGithubMaintainers.add(moduleName);
-      }
-    } catch (error) {
-      if (error.status === 404) {
-        console.log(`Module ${moduleName} does not have a metadata.json file on the main branch.`);
-        modulesWithoutGithubMaintainers.add(moduleName);
-      } else {
-        console.error(`Error processing module ${moduleName}: ${error}`);
-        setFailed(`Failed to notify maintainers for module ${moduleName}`);
-      }
-    }
-  }
-  return [maintainersMap, modulesWithoutGithubMaintainers];
-}
-
-async function notifyMaintainers(octokit, owner, repo, prNumber, maintainersMap) {
-  // For the list of maintainers who maintain the same set of modules, we want to group them together
-  const moduleListToMaintainers = new Map(); // Map: Serialized Module List -> Maintainers
-
-  // Populate moduleListToMaintainers based on maintainersMap
-  for (const [maintainer, modules] of maintainersMap.entries()) {
-    const modulesList = Array.from(modules).sort().join(', '); // Serialize module list
-    if (!moduleListToMaintainers.has(modulesList)) {
-      moduleListToMaintainers.set(modulesList, new Set());
-    }
-    moduleListToMaintainers.get(modulesList).add(`@${maintainer}`);
-  }
-
-  // Notify maintainers based on grouped module lists
-  const prAuthor = context.payload.pull_request.user.login;
-  for (const [modulesList, maintainers] of moduleListToMaintainers.entries()) {
-    // Skip notifying the PR author if they are one of the module maintainers
-    const maintainersCopy = new Set(maintainers);
-    if (maintainersCopy.has(`@${prAuthor}`)) {
-      console.log(`Skipping notifying PR author ${prAuthor} from the maintainers list for modules: ${modulesList}`);
-      maintainersCopy.delete(`@${prAuthor}`);
-    }
-    if (maintainersCopy.size === 0) {
-      continue;
-    }
-    const maintainersList = Array.from(maintainersCopy).join(', ');
-    console.log(`Notifying ${maintainersList} for modules: ${modulesList}`);
-    const commentBody = `Hello ${maintainersList}, modules you maintain (${modulesList}) have been updated in this PR. Please review the changes.`;
-    await postComment(octokit, owner, repo, prNumber, commentBody);
-  }
-}
-
-async function postComment(octokit, owner, repo, prNumber, body) {
-  // Check if the same comment already exists for the PR in the past two weeks
-  const existingComments = await octokit.rest.issues.listComments({
-    owner,
-    repo,
-    issue_number: prNumber,
-    since: new Date(Date.now() - 14 * 24 * 60 * 60 * 1000).toISOString(), // Two weeks ago
-  });
-
-  const commentExists = existingComments.data.some(comment => comment.body === body);
-  if (commentExists) {
-    console.log('Skipping comment as it\'s already posted for the PR within the past two weeks.');
-    return;
-  }
-
-  const comment = {
-    owner,
-    repo,
-    issue_number: prNumber,
-    body,
-  };
-  await octokit.rest.issues.createComment(comment).catch(error => {
-    console.error(`Failed to post comment: ${error}`);
-    setFailed(`Failed to notify maintainers: ${error}`);
-  });
-}
-
-async function run() {
-  const token = getInput("token");
-  const octokit = getOctokit(token);
-
-  const prNumber = context.issue.number;
-  if (!prNumber) {
-    console.log('Could not get pull request number from context, exiting');
-    return;
-  }
-  console.log(`Processing PR #${prNumber}`);
-
-  const { owner, repo } = context.repo;
-
-  // Fetch modified modules
-  const modifiedModules = await fetchAllModifiedModules(octokit, owner, repo, prNumber);
-  console.log(`Modified modules: ${Array.from(modifiedModules).join(', ')}`);
-
-  // Figure out maintainers for each modified module
-  const [ maintainersMap, modulesWithoutGithubMaintainers ] = await generateMaintainersMap(octokit, owner, repo, modifiedModules);
-
-  // Notify maintainers for modules with module maintainers
-  await notifyMaintainers(octokit, owner, repo, prNumber, maintainersMap);
-
-  // Notify BCR maintainers for modules without module maintainers
-  if (modulesWithoutGithubMaintainers.size > 0) {
-    const modulesList = Array.from(modulesWithoutGithubMaintainers).join(', ');
-    console.log(`Notifying @bazelbuild/bcr-maintainers for modules: ${modulesList}`);
-    await postComment(octokit, owner, repo, prNumber, `Hello @bazelbuild/bcr-maintainers, modules without existing maintainers (${modulesList}) have been updated in this PR. Please review the changes.`);
-  }
-}
-
-run().catch(err => {
-  console.error(err);
-  setFailed(err.message);
-});
diff --git a/actions/bcr-pr-review-notifier/node_modules/.bin/uuid b/actions/bcr-pr-review-notifier/node_modules/.bin/uuid
deleted file mode 120000
index 588f70e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/.bin/uuid
+++ /dev/null
@@ -1 +0,0 @@
-../uuid/dist/bin/uuid
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/.package-lock.json b/actions/bcr-pr-review-notifier/node_modules/.package-lock.json
deleted file mode 100644
index a1f3013..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/.package-lock.json
+++ /dev/null
@@ -1,218 +0,0 @@
-{
-  "name": "bcr-pr-review-notifier",
-  "version": "1.0.0",
-  "lockfileVersion": 3,
-  "requires": true,
-  "packages": {
-    "node_modules/@actions/core": {
-      "version": "1.10.1",
-      "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz",
-      "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==",
-      "dependencies": {
-        "@actions/http-client": "^2.0.1",
-        "uuid": "^8.3.2"
-      }
-    },
-    "node_modules/@actions/github": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz",
-      "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==",
-      "dependencies": {
-        "@actions/http-client": "^2.2.0",
-        "@octokit/core": "^5.0.1",
-        "@octokit/plugin-paginate-rest": "^9.0.0",
-        "@octokit/plugin-rest-endpoint-methods": "^10.0.0"
-      }
-    },
-    "node_modules/@actions/http-client": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.0.tgz",
-      "integrity": "sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==",
-      "dependencies": {
-        "tunnel": "^0.0.6",
-        "undici": "^5.25.4"
-      }
-    },
-    "node_modules/@fastify/busboy": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz",
-      "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==",
-      "engines": {
-        "node": ">=14"
-      }
-    },
-    "node_modules/@octokit/auth-token": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
-      "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/@octokit/core": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.1.0.tgz",
-      "integrity": "sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==",
-      "dependencies": {
-        "@octokit/auth-token": "^4.0.0",
-        "@octokit/graphql": "^7.0.0",
-        "@octokit/request": "^8.0.2",
-        "@octokit/request-error": "^5.0.0",
-        "@octokit/types": "^12.0.0",
-        "before-after-hook": "^2.2.0",
-        "universal-user-agent": "^6.0.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/@octokit/endpoint": {
-      "version": "9.0.4",
-      "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz",
-      "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==",
-      "dependencies": {
-        "@octokit/types": "^12.0.0",
-        "universal-user-agent": "^6.0.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/@octokit/graphql": {
-      "version": "7.0.2",
-      "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz",
-      "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==",
-      "dependencies": {
-        "@octokit/request": "^8.0.1",
-        "@octokit/types": "^12.0.0",
-        "universal-user-agent": "^6.0.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/@octokit/openapi-types": {
-      "version": "19.1.0",
-      "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz",
-      "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw=="
-    },
-    "node_modules/@octokit/plugin-paginate-rest": {
-      "version": "9.1.5",
-      "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz",
-      "integrity": "sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==",
-      "dependencies": {
-        "@octokit/types": "^12.4.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      },
-      "peerDependencies": {
-        "@octokit/core": ">=5"
-      }
-    },
-    "node_modules/@octokit/plugin-rest-endpoint-methods": {
-      "version": "10.2.0",
-      "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.2.0.tgz",
-      "integrity": "sha512-ePbgBMYtGoRNXDyKGvr9cyHjQ163PbwD0y1MkDJCpkO2YH4OeXX40c4wYHKikHGZcpGPbcRLuy0unPUuafco8Q==",
-      "dependencies": {
-        "@octokit/types": "^12.3.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      },
-      "peerDependencies": {
-        "@octokit/core": ">=5"
-      }
-    },
-    "node_modules/@octokit/request": {
-      "version": "8.1.6",
-      "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz",
-      "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==",
-      "dependencies": {
-        "@octokit/endpoint": "^9.0.0",
-        "@octokit/request-error": "^5.0.0",
-        "@octokit/types": "^12.0.0",
-        "universal-user-agent": "^6.0.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/@octokit/request-error": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz",
-      "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==",
-      "dependencies": {
-        "@octokit/types": "^12.0.0",
-        "deprecation": "^2.0.0",
-        "once": "^1.4.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/@octokit/types": {
-      "version": "12.4.0",
-      "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.4.0.tgz",
-      "integrity": "sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==",
-      "dependencies": {
-        "@octokit/openapi-types": "^19.1.0"
-      }
-    },
-    "node_modules/before-after-hook": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
-      "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ=="
-    },
-    "node_modules/deprecation": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
-      "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
-    },
-    "node_modules/once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
-      "dependencies": {
-        "wrappy": "1"
-      }
-    },
-    "node_modules/tunnel": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
-      "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
-      "engines": {
-        "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
-      }
-    },
-    "node_modules/undici": {
-      "version": "5.28.2",
-      "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz",
-      "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==",
-      "dependencies": {
-        "@fastify/busboy": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=14.0"
-      }
-    },
-    "node_modules/universal-user-agent": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
-      "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ=="
-    },
-    "node_modules/uuid": {
-      "version": "8.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-      "bin": {
-        "uuid": "dist/bin/uuid"
-      }
-    },
-    "node_modules/wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
-    }
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/LICENSE.md b/actions/bcr-pr-review-notifier/node_modules/@actions/core/LICENSE.md
deleted file mode 100644
index dbae2ed..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/LICENSE.md
+++ /dev/null
@@ -1,9 +0,0 @@
-The MIT License (MIT)
-
-Copyright 2019 GitHub
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/README.md b/actions/bcr-pr-review-notifier/node_modules/@actions/core/README.md
deleted file mode 100644
index 8a47143..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/README.md
+++ /dev/null
@@ -1,335 +0,0 @@
-# `@actions/core`
-
-> Core functions for setting results, logging, registering secrets and exporting variables across actions
-
-## Usage
-
-### Import the package
-
-```js
-// javascript
-const core = require('@actions/core');
-
-// typescript
-import * as core from '@actions/core';
-```
-
-#### Inputs/Outputs
-
-Action inputs can be read with `getInput` which returns a `string` or `getBooleanInput` which parses a boolean based on the [yaml 1.2 specification](https://yaml.org/spec/1.2/spec.html#id2804923). If `required` set to be false, the input should have a default value in `action.yml`.
-
-Outputs can be set with `setOutput` which makes them available to be mapped into inputs of other actions to ensure they are decoupled.
-
-```js
-const myInput = core.getInput('inputName', { required: true });
-const myBooleanInput = core.getBooleanInput('booleanInputName', { required: true });
-const myMultilineInput = core.getMultilineInput('multilineInputName', { required: true });
-core.setOutput('outputKey', 'outputVal');
-```
-
-#### Exporting variables
-
-Since each step runs in a separate process, you can use `exportVariable` to add it to this step and future steps environment blocks.
-
-```js
-core.exportVariable('envVar', 'Val');
-```
-
-#### Setting a secret
-
-Setting a secret registers the secret with the runner to ensure it is masked in logs.
-
-```js
-core.setSecret('myPassword');
-```
-
-#### PATH Manipulation
-
-To make a tool's path available in the path for the remainder of the job (without altering the machine or containers state), use `addPath`.  The runner will prepend the path given to the jobs PATH.
-
-```js
-core.addPath('/path/to/mytool');
-```
-
-#### Exit codes
-
-You should use this library to set the failing exit code for your action.  If status is not set and the script runs to completion, that will lead to a success.
-
-```js
-const core = require('@actions/core');
-
-try {
-  // Do stuff
-}
-catch (err) {
-  // setFailed logs the message and sets a failing exit code
-  core.setFailed(`Action failed with error ${err}`);
-}
-```
-
-Note that `setNeutral` is not yet implemented in actions V2 but equivalent functionality is being planned.
-
-#### Logging
-
-Finally, this library provides some utilities for logging. Note that debug logging is hidden from the logs by default. This behavior can be toggled by enabling the [Step Debug Logs](../../docs/action-debugging.md#step-debug-logs).
-
-```js
-const core = require('@actions/core');
-
-const myInput = core.getInput('input');
-try {
-  core.debug('Inside try block');
-  
-  if (!myInput) {
-    core.warning('myInput was not set');
-  }
-  
-  if (core.isDebug()) {
-    // curl -v https://github.com
-  } else {
-    // curl https://github.com
-  }
-
-  // Do stuff
-  core.info('Output to the actions build log')
-
-  core.notice('This is a message that will also emit an annotation')
-}
-catch (err) {
-  core.error(`Error ${err}, action may still succeed though`);
-}
-```
-
-This library can also wrap chunks of output in foldable groups.
-
-```js
-const core = require('@actions/core')
-
-// Manually wrap output
-core.startGroup('Do some function')
-doSomeFunction()
-core.endGroup()
-
-// Wrap an asynchronous function call
-const result = await core.group('Do something async', async () => {
-  const response = await doSomeHTTPRequest()
-  return response
-})
-```
-
-#### Annotations
-
-This library has 3 methods that will produce [annotations](https://docs.github.com/en/rest/reference/checks#create-a-check-run). 
-```js
-core.error('This is a bad error, action may still succeed though.')
-
-core.warning('Something went wrong, but it\'s not bad enough to fail the build.')
-
-core.notice('Something happened that you might want to know about.')
-```
-
-These will surface to the UI in the Actions page and on Pull Requests. They look something like this:
-
-![Annotations Image](../../docs/assets/annotations.png)
-
-These annotations can also be attached to particular lines and columns of your source files to show exactly where a problem is occuring. 
-
-These options are: 
-```typescript
-export interface AnnotationProperties {
-  /**
-   * A title for the annotation.
-   */
-  title?: string
-
-  /**
-   * The name of the file for which the annotation should be created.
-   */
-  file?: string
-
-  /**
-   * The start line for the annotation.
-   */
-  startLine?: number
-
-  /**
-   * The end line for the annotation. Defaults to `startLine` when `startLine` is provided.
-   */
-  endLine?: number
-
-  /**
-   * The start column for the annotation. Cannot be sent when `startLine` and `endLine` are different values.
-   */
-  startColumn?: number
-
-  /**
-   * The end column for the annotation. Cannot be sent when `startLine` and `endLine` are different values.
-   * Defaults to `startColumn` when `startColumn` is provided.
-   */
-  endColumn?: number
-}
-```
-
-#### Styling output
-
-Colored output is supported in the Action logs via standard [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code). 3/4 bit, 8 bit and 24 bit colors are all supported.
-
-Foreground colors:
-
-```js
-// 3/4 bit
-core.info('\u001b[35mThis foreground will be magenta')
-
-// 8 bit
-core.info('\u001b[38;5;6mThis foreground will be cyan')
-
-// 24 bit
-core.info('\u001b[38;2;255;0;0mThis foreground will be bright red')
-```
-
-Background colors:
-
-```js
-// 3/4 bit
-core.info('\u001b[43mThis background will be yellow');
-
-// 8 bit
-core.info('\u001b[48;5;6mThis background will be cyan')
-
-// 24 bit
-core.info('\u001b[48;2;255;0;0mThis background will be bright red')
-```
-
-Special styles:
-
-```js
-core.info('\u001b[1mBold text')
-core.info('\u001b[3mItalic text')
-core.info('\u001b[4mUnderlined text')
-```
-
-ANSI escape codes can be combined with one another:
-
-```js
-core.info('\u001b[31;46mRed foreground with a cyan background and \u001b[1mbold text at the end');
-```
-
-> Note: Escape codes reset at the start of each line
-
-```js
-core.info('\u001b[35mThis foreground will be magenta')
-core.info('This foreground will reset to the default')
-```
-
-Manually typing escape codes can be a little difficult, but you can use third party modules such as [ansi-styles](https://github.com/chalk/ansi-styles).
-
-```js
-const style = require('ansi-styles');
-core.info(style.color.ansi16m.hex('#abcdef') + 'Hello world!')
-```
-
-#### Action state
-
-You can use this library to save state and get state for sharing information between a given wrapper action:
-
-**action.yml**:
-
-```yaml
-name: 'Wrapper action sample'
-inputs:
-  name:
-    default: 'GitHub'
-runs:
-  using: 'node12'
-  main: 'main.js'
-  post: 'cleanup.js'
-```
-
-In action's `main.js`:
-
-```js
-const core = require('@actions/core');
-
-core.saveState("pidToKill", 12345);
-```
-
-In action's `cleanup.js`:
-
-```js
-const core = require('@actions/core');
-
-var pid = core.getState("pidToKill");
-
-process.kill(pid);
-```
-
-#### OIDC Token
-
-You can use these methods to interact with the GitHub OIDC provider and get a JWT ID token which would help to get access token from third party cloud providers.
-
-**Method Name**: getIDToken()
-
-**Inputs**
-
-audience : optional
-
-**Outputs**
-
-A [JWT](https://jwt.io/) ID Token
-
-In action's `main.ts`:
-```js
-const core = require('@actions/core');
-async function getIDTokenAction(): Promise<void> {
-  
-   const audience = core.getInput('audience', {required: false})
-   
-   const id_token1 = await core.getIDToken()            // ID Token with default audience
-   const id_token2 = await core.getIDToken(audience)    // ID token with custom audience
-   
-   // this id_token can be used to get access token from third party cloud providers
-}
-getIDTokenAction()
-```
-
-In action's `actions.yml`:
-
-```yaml
-name: 'GetIDToken'
-description: 'Get ID token from Github OIDC provider'
-inputs:
-  audience:  
-    description: 'Audience for which the ID token is intended for'
-    required: false
-outputs:
-  id_token1: 
-    description: 'ID token obtained from OIDC provider'
-  id_token2: 
-    description: 'ID token obtained from OIDC provider'
-runs:
-  using: 'node12'
-  main: 'dist/index.js'
-```
-
-#### Filesystem path helpers
-
-You can use these methods to manipulate file paths across operating systems.
-
-The `toPosixPath` function converts input paths to Posix-style (Linux) paths.
-The `toWin32Path` function converts input paths to Windows-style paths. These
-functions work independently of the underlying runner operating system.
-
-```js
-toPosixPath('\\foo\\bar') // => /foo/bar
-toWin32Path('/foo/bar') // => \foo\bar
-```
-
-The `toPlatformPath` function converts input paths to the expected value on the runner's operating system.
-
-```js
-// On a Windows runner.
-toPlatformPath('/foo/bar') // => \foo\bar
-
-// On a Linux runner.
-toPlatformPath('\\foo\\bar') // => /foo/bar
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/command.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/command.d.ts
deleted file mode 100644
index 53f8f4b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/command.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-export interface CommandProperties {
-    [key: string]: any;
-}
-/**
- * Commands
- *
- * Command Format:
- *   ::name key=value,key=value::message
- *
- * Examples:
- *   ::warning::This is the message
- *   ::set-env name=MY_VAR::some value
- */
-export declare function issueCommand(command: string, properties: CommandProperties, message: any): void;
-export declare function issue(name: string, message?: string): void;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/command.js b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/command.js
deleted file mode 100644
index 0b28c66..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/command.js
+++ /dev/null
@@ -1,92 +0,0 @@
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
-    Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
-    o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-    __setModuleDefault(result, mod);
-    return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.issue = exports.issueCommand = void 0;
-const os = __importStar(require("os"));
-const utils_1 = require("./utils");
-/**
- * Commands
- *
- * Command Format:
- *   ::name key=value,key=value::message
- *
- * Examples:
- *   ::warning::This is the message
- *   ::set-env name=MY_VAR::some value
- */
-function issueCommand(command, properties, message) {
-    const cmd = new Command(command, properties, message);
-    process.stdout.write(cmd.toString() + os.EOL);
-}
-exports.issueCommand = issueCommand;
-function issue(name, message = '') {
-    issueCommand(name, {}, message);
-}
-exports.issue = issue;
-const CMD_STRING = '::';
-class Command {
-    constructor(command, properties, message) {
-        if (!command) {
-            command = 'missing.command';
-        }
-        this.command = command;
-        this.properties = properties;
-        this.message = message;
-    }
-    toString() {
-        let cmdStr = CMD_STRING + this.command;
-        if (this.properties && Object.keys(this.properties).length > 0) {
-            cmdStr += ' ';
-            let first = true;
-            for (const key in this.properties) {
-                if (this.properties.hasOwnProperty(key)) {
-                    const val = this.properties[key];
-                    if (val) {
-                        if (first) {
-                            first = false;
-                        }
-                        else {
-                            cmdStr += ',';
-                        }
-                        cmdStr += `${key}=${escapeProperty(val)}`;
-                    }
-                }
-            }
-        }
-        cmdStr += `${CMD_STRING}${escapeData(this.message)}`;
-        return cmdStr;
-    }
-}
-function escapeData(s) {
-    return utils_1.toCommandValue(s)
-        .replace(/%/g, '%25')
-        .replace(/\r/g, '%0D')
-        .replace(/\n/g, '%0A');
-}
-function escapeProperty(s) {
-    return utils_1.toCommandValue(s)
-        .replace(/%/g, '%25')
-        .replace(/\r/g, '%0D')
-        .replace(/\n/g, '%0A')
-        .replace(/:/g, '%3A')
-        .replace(/,/g, '%2C');
-}
-//# sourceMappingURL=command.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/command.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/command.js.map
deleted file mode 100644
index 51c7c63..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/command.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,mCAAsC;AAWtC;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,UAA6B,EAC7B,OAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AAC/C,CAAC;AAPD,oCAOC;AAED,SAAgB,KAAK,CAAC,IAAY,EAAE,OAAO,GAAG,EAAE;IAC9C,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC;AAFD,sBAEC;AAED,MAAM,UAAU,GAAG,IAAI,CAAA;AAEvB,MAAM,OAAO;IAKX,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe;QACzE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,iBAAiB,CAAA;SAC5B;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAA;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,MAAM,IAAI,GAAG,CAAA;YACb,IAAI,KAAK,GAAG,IAAI,CAAA;YAChB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;oBAChC,IAAI,GAAG,EAAE;wBACP,IAAI,KAAK,EAAE;4BACT,KAAK,GAAG,KAAK,CAAA;yBACd;6BAAM;4BACL,MAAM,IAAI,GAAG,CAAA;yBACd;wBAED,MAAM,IAAI,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAA;qBAC1C;iBACF;aACF;SACF;QAED,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;QACpD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,UAAU,CAAC,CAAM;IACxB,OAAO,sBAAc,CAAC,CAAC,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,CAAM;IAC5B,OAAO,sBAAc,CAAC,CAAC,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACzB,CAAC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/core.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/core.d.ts
deleted file mode 100644
index ceecdd3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/core.d.ts
+++ /dev/null
@@ -1,198 +0,0 @@
-/**
- * Interface for getInput options
- */
-export interface InputOptions {
-    /** Optional. Whether the input is required. If required and not present, will throw. Defaults to false */
-    required?: boolean;
-    /** Optional. Whether leading/trailing whitespace will be trimmed for the input. Defaults to true */
-    trimWhitespace?: boolean;
-}
-/**
- * The code to exit an action
- */
-export declare enum ExitCode {
-    /**
-     * A code indicating that the action was successful
-     */
-    Success = 0,
-    /**
-     * A code indicating that the action was a failure
-     */
-    Failure = 1
-}
-/**
- * Optional properties that can be sent with annotation commands (notice, error, and warning)
- * See: https://docs.github.com/en/rest/reference/checks#create-a-check-run for more information about annotations.
- */
-export interface AnnotationProperties {
-    /**
-     * A title for the annotation.
-     */
-    title?: string;
-    /**
-     * The path of the file for which the annotation should be created.
-     */
-    file?: string;
-    /**
-     * The start line for the annotation.
-     */
-    startLine?: number;
-    /**
-     * The end line for the annotation. Defaults to `startLine` when `startLine` is provided.
-     */
-    endLine?: number;
-    /**
-     * The start column for the annotation. Cannot be sent when `startLine` and `endLine` are different values.
-     */
-    startColumn?: number;
-    /**
-     * The end column for the annotation. Cannot be sent when `startLine` and `endLine` are different values.
-     * Defaults to `startColumn` when `startColumn` is provided.
-     */
-    endColumn?: number;
-}
-/**
- * Sets env variable for this action and future actions in the job
- * @param name the name of the variable to set
- * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify
- */
-export declare function exportVariable(name: string, val: any): void;
-/**
- * Registers a secret which will get masked from logs
- * @param secret value of the secret
- */
-export declare function setSecret(secret: string): void;
-/**
- * Prepends inputPath to the PATH (for this action and future actions)
- * @param inputPath
- */
-export declare function addPath(inputPath: string): void;
-/**
- * Gets the value of an input.
- * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.
- * Returns an empty string if the value is not defined.
- *
- * @param     name     name of the input to get
- * @param     options  optional. See InputOptions.
- * @returns   string
- */
-export declare function getInput(name: string, options?: InputOptions): string;
-/**
- * Gets the values of an multiline input.  Each value is also trimmed.
- *
- * @param     name     name of the input to get
- * @param     options  optional. See InputOptions.
- * @returns   string[]
- *
- */
-export declare function getMultilineInput(name: string, options?: InputOptions): string[];
-/**
- * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification.
- * Support boolean input list: `true | True | TRUE | false | False | FALSE` .
- * The return value is also in boolean type.
- * ref: https://yaml.org/spec/1.2/spec.html#id2804923
- *
- * @param     name     name of the input to get
- * @param     options  optional. See InputOptions.
- * @returns   boolean
- */
-export declare function getBooleanInput(name: string, options?: InputOptions): boolean;
-/**
- * Sets the value of an output.
- *
- * @param     name     name of the output to set
- * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify
- */
-export declare function setOutput(name: string, value: any): void;
-/**
- * Enables or disables the echoing of commands into stdout for the rest of the step.
- * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.
- *
- */
-export declare function setCommandEcho(enabled: boolean): void;
-/**
- * Sets the action status to failed.
- * When the action exits it will be with an exit code of 1
- * @param message add error issue message
- */
-export declare function setFailed(message: string | Error): void;
-/**
- * Gets whether Actions Step Debug is on or not
- */
-export declare function isDebug(): boolean;
-/**
- * Writes debug message to user log
- * @param message debug message
- */
-export declare function debug(message: string): void;
-/**
- * Adds an error issue
- * @param message error issue message. Errors will be converted to string via toString()
- * @param properties optional properties to add to the annotation.
- */
-export declare function error(message: string | Error, properties?: AnnotationProperties): void;
-/**
- * Adds a warning issue
- * @param message warning issue message. Errors will be converted to string via toString()
- * @param properties optional properties to add to the annotation.
- */
-export declare function warning(message: string | Error, properties?: AnnotationProperties): void;
-/**
- * Adds a notice issue
- * @param message notice issue message. Errors will be converted to string via toString()
- * @param properties optional properties to add to the annotation.
- */
-export declare function notice(message: string | Error, properties?: AnnotationProperties): void;
-/**
- * Writes info to log with console.log.
- * @param message info message
- */
-export declare function info(message: string): void;
-/**
- * Begin an output group.
- *
- * Output until the next `groupEnd` will be foldable in this group
- *
- * @param name The name of the output group
- */
-export declare function startGroup(name: string): void;
-/**
- * End an output group.
- */
-export declare function endGroup(): void;
-/**
- * Wrap an asynchronous function call in a group.
- *
- * Returns the same type as the function itself.
- *
- * @param name The name of the group
- * @param fn The function to wrap in the group
- */
-export declare function group<T>(name: string, fn: () => Promise<T>): Promise<T>;
-/**
- * Saves state for current action, the state can only be retrieved by this action's post job execution.
- *
- * @param     name     name of the state to store
- * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify
- */
-export declare function saveState(name: string, value: any): void;
-/**
- * Gets the value of an state set by this action's main execution.
- *
- * @param     name     name of the state to get
- * @returns   string
- */
-export declare function getState(name: string): string;
-export declare function getIDToken(aud?: string): Promise<string>;
-/**
- * Summary exports
- */
-export { summary } from './summary';
-/**
- * @deprecated use core.summary
- */
-export { markdownSummary } from './summary';
-/**
- * Path exports
- */
-export { toPosixPath, toWin32Path, toPlatformPath } from './path-utils';
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/core.js b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/core.js
deleted file mode 100644
index 48df6ad..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/core.js
+++ /dev/null
@@ -1,336 +0,0 @@
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
-    Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
-    o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-    __setModuleDefault(result, mod);
-    return result;
-};
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;
-const command_1 = require("./command");
-const file_command_1 = require("./file-command");
-const utils_1 = require("./utils");
-const os = __importStar(require("os"));
-const path = __importStar(require("path"));
-const oidc_utils_1 = require("./oidc-utils");
-/**
- * The code to exit an action
- */
-var ExitCode;
-(function (ExitCode) {
-    /**
-     * A code indicating that the action was successful
-     */
-    ExitCode[ExitCode["Success"] = 0] = "Success";
-    /**
-     * A code indicating that the action was a failure
-     */
-    ExitCode[ExitCode["Failure"] = 1] = "Failure";
-})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));
-//-----------------------------------------------------------------------
-// Variables
-//-----------------------------------------------------------------------
-/**
- * Sets env variable for this action and future actions in the job
- * @param name the name of the variable to set
- * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify
- */
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function exportVariable(name, val) {
-    const convertedVal = utils_1.toCommandValue(val);
-    process.env[name] = convertedVal;
-    const filePath = process.env['GITHUB_ENV'] || '';
-    if (filePath) {
-        return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val));
-    }
-    command_1.issueCommand('set-env', { name }, convertedVal);
-}
-exports.exportVariable = exportVariable;
-/**
- * Registers a secret which will get masked from logs
- * @param secret value of the secret
- */
-function setSecret(secret) {
-    command_1.issueCommand('add-mask', {}, secret);
-}
-exports.setSecret = setSecret;
-/**
- * Prepends inputPath to the PATH (for this action and future actions)
- * @param inputPath
- */
-function addPath(inputPath) {
-    const filePath = process.env['GITHUB_PATH'] || '';
-    if (filePath) {
-        file_command_1.issueFileCommand('PATH', inputPath);
-    }
-    else {
-        command_1.issueCommand('add-path', {}, inputPath);
-    }
-    process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
-}
-exports.addPath = addPath;
-/**
- * Gets the value of an input.
- * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.
- * Returns an empty string if the value is not defined.
- *
- * @param     name     name of the input to get
- * @param     options  optional. See InputOptions.
- * @returns   string
- */
-function getInput(name, options) {
-    const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';
-    if (options && options.required && !val) {
-        throw new Error(`Input required and not supplied: ${name}`);
-    }
-    if (options && options.trimWhitespace === false) {
-        return val;
-    }
-    return val.trim();
-}
-exports.getInput = getInput;
-/**
- * Gets the values of an multiline input.  Each value is also trimmed.
- *
- * @param     name     name of the input to get
- * @param     options  optional. See InputOptions.
- * @returns   string[]
- *
- */
-function getMultilineInput(name, options) {
-    const inputs = getInput(name, options)
-        .split('\n')
-        .filter(x => x !== '');
-    if (options && options.trimWhitespace === false) {
-        return inputs;
-    }
-    return inputs.map(input => input.trim());
-}
-exports.getMultilineInput = getMultilineInput;
-/**
- * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification.
- * Support boolean input list: `true | True | TRUE | false | False | FALSE` .
- * The return value is also in boolean type.
- * ref: https://yaml.org/spec/1.2/spec.html#id2804923
- *
- * @param     name     name of the input to get
- * @param     options  optional. See InputOptions.
- * @returns   boolean
- */
-function getBooleanInput(name, options) {
-    const trueValue = ['true', 'True', 'TRUE'];
-    const falseValue = ['false', 'False', 'FALSE'];
-    const val = getInput(name, options);
-    if (trueValue.includes(val))
-        return true;
-    if (falseValue.includes(val))
-        return false;
-    throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` +
-        `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
-}
-exports.getBooleanInput = getBooleanInput;
-/**
- * Sets the value of an output.
- *
- * @param     name     name of the output to set
- * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify
- */
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function setOutput(name, value) {
-    const filePath = process.env['GITHUB_OUTPUT'] || '';
-    if (filePath) {
-        return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value));
-    }
-    process.stdout.write(os.EOL);
-    command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value));
-}
-exports.setOutput = setOutput;
-/**
- * Enables or disables the echoing of commands into stdout for the rest of the step.
- * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.
- *
- */
-function setCommandEcho(enabled) {
-    command_1.issue('echo', enabled ? 'on' : 'off');
-}
-exports.setCommandEcho = setCommandEcho;
-//-----------------------------------------------------------------------
-// Results
-//-----------------------------------------------------------------------
-/**
- * Sets the action status to failed.
- * When the action exits it will be with an exit code of 1
- * @param message add error issue message
- */
-function setFailed(message) {
-    process.exitCode = ExitCode.Failure;
-    error(message);
-}
-exports.setFailed = setFailed;
-//-----------------------------------------------------------------------
-// Logging Commands
-//-----------------------------------------------------------------------
-/**
- * Gets whether Actions Step Debug is on or not
- */
-function isDebug() {
-    return process.env['RUNNER_DEBUG'] === '1';
-}
-exports.isDebug = isDebug;
-/**
- * Writes debug message to user log
- * @param message debug message
- */
-function debug(message) {
-    command_1.issueCommand('debug', {}, message);
-}
-exports.debug = debug;
-/**
- * Adds an error issue
- * @param message error issue message. Errors will be converted to string via toString()
- * @param properties optional properties to add to the annotation.
- */
-function error(message, properties = {}) {
-    command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
-}
-exports.error = error;
-/**
- * Adds a warning issue
- * @param message warning issue message. Errors will be converted to string via toString()
- * @param properties optional properties to add to the annotation.
- */
-function warning(message, properties = {}) {
-    command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
-}
-exports.warning = warning;
-/**
- * Adds a notice issue
- * @param message notice issue message. Errors will be converted to string via toString()
- * @param properties optional properties to add to the annotation.
- */
-function notice(message, properties = {}) {
-    command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
-}
-exports.notice = notice;
-/**
- * Writes info to log with console.log.
- * @param message info message
- */
-function info(message) {
-    process.stdout.write(message + os.EOL);
-}
-exports.info = info;
-/**
- * Begin an output group.
- *
- * Output until the next `groupEnd` will be foldable in this group
- *
- * @param name The name of the output group
- */
-function startGroup(name) {
-    command_1.issue('group', name);
-}
-exports.startGroup = startGroup;
-/**
- * End an output group.
- */
-function endGroup() {
-    command_1.issue('endgroup');
-}
-exports.endGroup = endGroup;
-/**
- * Wrap an asynchronous function call in a group.
- *
- * Returns the same type as the function itself.
- *
- * @param name The name of the group
- * @param fn The function to wrap in the group
- */
-function group(name, fn) {
-    return __awaiter(this, void 0, void 0, function* () {
-        startGroup(name);
-        let result;
-        try {
-            result = yield fn();
-        }
-        finally {
-            endGroup();
-        }
-        return result;
-    });
-}
-exports.group = group;
-//-----------------------------------------------------------------------
-// Wrapper action state
-//-----------------------------------------------------------------------
-/**
- * Saves state for current action, the state can only be retrieved by this action's post job execution.
- *
- * @param     name     name of the state to store
- * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify
- */
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function saveState(name, value) {
-    const filePath = process.env['GITHUB_STATE'] || '';
-    if (filePath) {
-        return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value));
-    }
-    command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value));
-}
-exports.saveState = saveState;
-/**
- * Gets the value of an state set by this action's main execution.
- *
- * @param     name     name of the state to get
- * @returns   string
- */
-function getState(name) {
-    return process.env[`STATE_${name}`] || '';
-}
-exports.getState = getState;
-function getIDToken(aud) {
-    return __awaiter(this, void 0, void 0, function* () {
-        return yield oidc_utils_1.OidcClient.getIDToken(aud);
-    });
-}
-exports.getIDToken = getIDToken;
-/**
- * Summary exports
- */
-var summary_1 = require("./summary");
-Object.defineProperty(exports, "summary", { enumerable: true, get: function () { return summary_1.summary; } });
-/**
- * @deprecated use core.summary
- */
-var summary_2 = require("./summary");
-Object.defineProperty(exports, "markdownSummary", { enumerable: true, get: function () { return summary_2.markdownSummary; } });
-/**
- * Path exports
- */
-var path_utils_1 = require("./path-utils");
-Object.defineProperty(exports, "toPosixPath", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } });
-Object.defineProperty(exports, "toWin32Path", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } });
-Object.defineProperty(exports, "toPlatformPath", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } });
-//# sourceMappingURL=core.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/core.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/core.js.map
deleted file mode 100644
index 99f7fd8..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/core.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA6C;AAC7C,iDAAuE;AACvE,mCAA2D;AAE3D,uCAAwB;AACxB,2CAA4B;AAE5B,6CAAuC;AAavC;;GAEG;AACH,IAAY,QAUX;AAVD,WAAY,QAAQ;IAClB;;OAEG;IACH,6CAAW,CAAA;IAEX;;OAEG;IACH,6CAAW,CAAA;AACb,CAAC,EAVW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAUnB;AAuCD,yEAAyE;AACzE,YAAY;AACZ,yEAAyE;AAEzE;;;;GAIG;AACH,8DAA8D;AAC9D,SAAgB,cAAc,CAAC,IAAY,EAAE,GAAQ;IACnD,MAAM,YAAY,GAAG,sBAAc,CAAC,GAAG,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAA;IAEhC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;IAChD,IAAI,QAAQ,EAAE;QACZ,OAAO,+BAAgB,CAAC,KAAK,EAAE,qCAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;KAClE;IAED,sBAAY,CAAC,SAAS,EAAE,EAAC,IAAI,EAAC,EAAE,YAAY,CAAC,CAAA;AAC/C,CAAC;AAVD,wCAUC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,MAAc;IACtC,sBAAY,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;AACtC,CAAC;AAFD,8BAEC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,SAAiB;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;IACjD,IAAI,QAAQ,EAAE;QACZ,+BAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;KACpC;SAAM;QACL,sBAAY,CAAC,UAAU,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;KACxC;IACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;AAC7E,CAAC;AARD,0BAQC;AAED;;;;;;;;GAQG;AACH,SAAgB,QAAQ,CAAC,IAAY,EAAE,OAAsB;IAC3D,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;IACrE,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAA;KAC5D;IAED,IAAI,OAAO,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE;QAC/C,OAAO,GAAG,CAAA;KACX;IAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;AACnB,CAAC;AAZD,4BAYC;AAED;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAC/B,IAAY,EACZ,OAAsB;IAEtB,MAAM,MAAM,GAAa,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;SAC7C,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IAExB,IAAI,OAAO,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE;QAC/C,OAAO,MAAM,CAAA;KACd;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;AAC1C,CAAC;AAbD,8CAaC;AAED;;;;;;;;;GASG;AACH,SAAgB,eAAe,CAAC,IAAY,EAAE,OAAsB;IAClE,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACnC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAC1C,MAAM,IAAI,SAAS,CACjB,6DAA6D,IAAI,IAAI;QACnE,4EAA4E,CAC/E,CAAA;AACH,CAAC;AAVD,0CAUC;AAED;;;;;GAKG;AACH,8DAA8D;AAC9D,SAAgB,SAAS,CAAC,IAAY,EAAE,KAAU;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAA;IACnD,IAAI,QAAQ,EAAE;QACZ,OAAO,+BAAgB,CAAC,QAAQ,EAAE,qCAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;KACvE;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAC5B,sBAAY,CAAC,YAAY,EAAE,EAAC,IAAI,EAAC,EAAE,sBAAc,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3D,CAAC;AARD,8BAQC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,OAAgB;IAC7C,eAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AACvC,CAAC;AAFD,wCAEC;AAED,yEAAyE;AACzE,UAAU;AACV,yEAAyE;AAEzE;;;;GAIG;AACH,SAAgB,SAAS,CAAC,OAAuB;IAC/C,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAA;IAEnC,KAAK,CAAC,OAAO,CAAC,CAAA;AAChB,CAAC;AAJD,8BAIC;AAED,yEAAyE;AACzE,mBAAmB;AACnB,yEAAyE;AAEzE;;GAEG;AACH,SAAgB,OAAO;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,CAAA;AAC5C,CAAC;AAFD,0BAEC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,OAAe;IACnC,sBAAY,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACpC,CAAC;AAFD,sBAEC;AAED;;;;GAIG;AACH,SAAgB,KAAK,CACnB,OAAuB,EACvB,aAAmC,EAAE;IAErC,sBAAY,CACV,OAAO,EACP,2BAAmB,CAAC,UAAU,CAAC,EAC/B,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CACxD,CAAA;AACH,CAAC;AATD,sBASC;AAED;;;;GAIG;AACH,SAAgB,OAAO,CACrB,OAAuB,EACvB,aAAmC,EAAE;IAErC,sBAAY,CACV,SAAS,EACT,2BAAmB,CAAC,UAAU,CAAC,EAC/B,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CACxD,CAAA;AACH,CAAC;AATD,0BASC;AAED;;;;GAIG;AACH,SAAgB,MAAM,CACpB,OAAuB,EACvB,aAAmC,EAAE;IAErC,sBAAY,CACV,QAAQ,EACR,2BAAmB,CAAC,UAAU,CAAC,EAC/B,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CACxD,CAAA;AACH,CAAC;AATD,wBASC;AAED;;;GAGG;AACH,SAAgB,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AACxC,CAAC;AAFD,oBAEC;AAED;;;;;;GAMG;AACH,SAAgB,UAAU,CAAC,IAAY;IACrC,eAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACtB,CAAC;AAFD,gCAEC;AAED;;GAEG;AACH,SAAgB,QAAQ;IACtB,eAAK,CAAC,UAAU,CAAC,CAAA;AACnB,CAAC;AAFD,4BAEC;AAED;;;;;;;GAOG;AACH,SAAsB,KAAK,CAAI,IAAY,EAAE,EAAoB;;QAC/D,UAAU,CAAC,IAAI,CAAC,CAAA;QAEhB,IAAI,MAAS,CAAA;QAEb,IAAI;YACF,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;SACpB;gBAAS;YACR,QAAQ,EAAE,CAAA;SACX;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CAAA;AAZD,sBAYC;AAED,yEAAyE;AACzE,uBAAuB;AACvB,yEAAyE;AAEzE;;;;;GAKG;AACH,8DAA8D;AAC9D,SAAgB,SAAS,CAAC,IAAY,EAAE,KAAU;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;IAClD,IAAI,QAAQ,EAAE;QACZ,OAAO,+BAAgB,CAAC,OAAO,EAAE,qCAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;KACtE;IAED,sBAAY,CAAC,YAAY,EAAE,EAAC,IAAI,EAAC,EAAE,sBAAc,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3D,CAAC;AAPD,8BAOC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,IAAY;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;AAC3C,CAAC;AAFD,4BAEC;AAED,SAAsB,UAAU,CAAC,GAAY;;QAC3C,OAAO,MAAM,uBAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IACzC,CAAC;CAAA;AAFD,gCAEC;AAED;;GAEG;AACH,qCAAiC;AAAzB,kGAAA,OAAO,OAAA;AAEf;;GAEG;AACH,qCAAyC;AAAjC,0GAAA,eAAe,OAAA;AAEvB;;GAEG;AACH,2CAAqE;AAA7D,yGAAA,WAAW,OAAA;AAAE,yGAAA,WAAW,OAAA;AAAE,4GAAA,cAAc,OAAA"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/file-command.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/file-command.d.ts
deleted file mode 100644
index 2d1f2f4..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/file-command.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export declare function issueFileCommand(command: string, message: any): void;
-export declare function prepareKeyValueMessage(key: string, value: any): string;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/file-command.js b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/file-command.js
deleted file mode 100644
index 2d0d738..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/file-command.js
+++ /dev/null
@@ -1,58 +0,0 @@
-"use strict";
-// For internal use, subject to change.
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
-    Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
-    o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-    __setModuleDefault(result, mod);
-    return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.prepareKeyValueMessage = exports.issueFileCommand = void 0;
-// We use any as a valid input type
-/* eslint-disable @typescript-eslint/no-explicit-any */
-const fs = __importStar(require("fs"));
-const os = __importStar(require("os"));
-const uuid_1 = require("uuid");
-const utils_1 = require("./utils");
-function issueFileCommand(command, message) {
-    const filePath = process.env[`GITHUB_${command}`];
-    if (!filePath) {
-        throw new Error(`Unable to find environment variable for file command ${command}`);
-    }
-    if (!fs.existsSync(filePath)) {
-        throw new Error(`Missing file at path: ${filePath}`);
-    }
-    fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {
-        encoding: 'utf8'
-    });
-}
-exports.issueFileCommand = issueFileCommand;
-function prepareKeyValueMessage(key, value) {
-    const delimiter = `ghadelimiter_${uuid_1.v4()}`;
-    const convertedValue = utils_1.toCommandValue(value);
-    // These should realistically never happen, but just in case someone finds a
-    // way to exploit uuid generation let's not allow keys or values that contain
-    // the delimiter.
-    if (key.includes(delimiter)) {
-        throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`);
-    }
-    if (convertedValue.includes(delimiter)) {
-        throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`);
-    }
-    return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;
-}
-exports.prepareKeyValueMessage = prepareKeyValueMessage;
-//# sourceMappingURL=file-command.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/file-command.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/file-command.js.map
deleted file mode 100644
index b1a9d54..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/file-command.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"file-command.js","sourceRoot":"","sources":["../src/file-command.ts"],"names":[],"mappings":";AAAA,uCAAuC;;;;;;;;;;;;;;;;;;;;;;AAEvC,mCAAmC;AACnC,uDAAuD;AAEvD,uCAAwB;AACxB,uCAAwB;AACxB,+BAAiC;AACjC,mCAAsC;AAEtC,SAAgB,gBAAgB,CAAC,OAAe,EAAE,OAAY;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAA;IACjD,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CACb,wDAAwD,OAAO,EAAE,CAClE,CAAA;KACF;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAA;KACrD;IAED,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,sBAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;QACjE,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAA;AACJ,CAAC;AAdD,4CAcC;AAED,SAAgB,sBAAsB,CAAC,GAAW,EAAE,KAAU;IAC5D,MAAM,SAAS,GAAG,gBAAgB,SAAM,EAAE,EAAE,CAAA;IAC5C,MAAM,cAAc,GAAG,sBAAc,CAAC,KAAK,CAAC,CAAA;IAE5C,4EAA4E;IAC5E,6EAA6E;IAC7E,iBAAiB;IACjB,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CACb,4DAA4D,SAAS,GAAG,CACzE,CAAA;KACF;IAED,IAAI,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CACb,6DAA6D,SAAS,GAAG,CAC1E,CAAA;KACF;IAED,OAAO,GAAG,GAAG,KAAK,SAAS,GAAG,EAAE,CAAC,GAAG,GAAG,cAAc,GAAG,EAAE,CAAC,GAAG,GAAG,SAAS,EAAE,CAAA;AAC9E,CAAC;AApBD,wDAoBC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/oidc-utils.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/oidc-utils.d.ts
deleted file mode 100644
index 657c7f4..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/oidc-utils.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export declare class OidcClient {
-    private static createHttpClient;
-    private static getRequestToken;
-    private static getIDTokenUrl;
-    private static getCall;
-    static getIDToken(audience?: string): Promise<string>;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/oidc-utils.js b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/oidc-utils.js
deleted file mode 100644
index 092e93d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/oidc-utils.js
+++ /dev/null
@@ -1,77 +0,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.OidcClient = void 0;
-const http_client_1 = require("@actions/http-client");
-const auth_1 = require("@actions/http-client/lib/auth");
-const core_1 = require("./core");
-class OidcClient {
-    static createHttpClient(allowRetry = true, maxRetry = 10) {
-        const requestOptions = {
-            allowRetries: allowRetry,
-            maxRetries: maxRetry
-        };
-        return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);
-    }
-    static getRequestToken() {
-        const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];
-        if (!token) {
-            throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');
-        }
-        return token;
-    }
-    static getIDTokenUrl() {
-        const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];
-        if (!runtimeUrl) {
-            throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');
-        }
-        return runtimeUrl;
-    }
-    static getCall(id_token_url) {
-        var _a;
-        return __awaiter(this, void 0, void 0, function* () {
-            const httpclient = OidcClient.createHttpClient();
-            const res = yield httpclient
-                .getJson(id_token_url)
-                .catch(error => {
-                throw new Error(`Failed to get ID Token. \n 
-        Error Code : ${error.statusCode}\n 
-        Error Message: ${error.message}`);
-            });
-            const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;
-            if (!id_token) {
-                throw new Error('Response json body do not have ID Token field');
-            }
-            return id_token;
-        });
-    }
-    static getIDToken(audience) {
-        return __awaiter(this, void 0, void 0, function* () {
-            try {
-                // New ID Token is requested from action service
-                let id_token_url = OidcClient.getIDTokenUrl();
-                if (audience) {
-                    const encodedAudience = encodeURIComponent(audience);
-                    id_token_url = `${id_token_url}&audience=${encodedAudience}`;
-                }
-                core_1.debug(`ID token url is ${id_token_url}`);
-                const id_token = yield OidcClient.getCall(id_token_url);
-                core_1.setSecret(id_token);
-                return id_token;
-            }
-            catch (error) {
-                throw new Error(`Error message: ${error.message}`);
-            }
-        });
-    }
-}
-exports.OidcClient = OidcClient;
-//# sourceMappingURL=oidc-utils.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/oidc-utils.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/oidc-utils.js.map
deleted file mode 100644
index 22506b8..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/oidc-utils.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"oidc-utils.js","sourceRoot":"","sources":["../src/oidc-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,sDAA+C;AAC/C,wDAAqE;AACrE,iCAAuC;AAKvC,MAAa,UAAU;IACb,MAAM,CAAC,gBAAgB,CAC7B,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,EAAE;QAEb,MAAM,cAAc,GAAmB;YACrC,YAAY,EAAE,UAAU;YACxB,UAAU,EAAE,QAAQ;SACrB,CAAA;QAED,OAAO,IAAI,wBAAU,CACnB,qBAAqB,EACrB,CAAC,IAAI,8BAAuB,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,EAC3D,cAAc,CACf,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,eAAe;QAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;QAC3D,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAA;SACF;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,MAAM,CAAC,aAAa;QAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;QAC9D,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;SAC3E;QACD,OAAO,UAAU,CAAA;IACnB,CAAC;IAEO,MAAM,CAAO,OAAO,CAAC,YAAoB;;;YAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAA;YAEhD,MAAM,GAAG,GAAG,MAAM,UAAU;iBACzB,OAAO,CAAgB,YAAY,CAAC;iBACpC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACb,MAAM,IAAI,KAAK,CACb;uBACa,KAAK,CAAC,UAAU;yBACd,KAAK,CAAC,OAAO,EAAE,CAC/B,CAAA;YACH,CAAC,CAAC,CAAA;YAEJ,MAAM,QAAQ,SAAG,GAAG,CAAC,MAAM,0CAAE,KAAK,CAAA;YAClC,IAAI,CAAC,QAAQ,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;aACjE;YACD,OAAO,QAAQ,CAAA;;KAChB;IAED,MAAM,CAAO,UAAU,CAAC,QAAiB;;YACvC,IAAI;gBACF,gDAAgD;gBAChD,IAAI,YAAY,GAAW,UAAU,CAAC,aAAa,EAAE,CAAA;gBACrD,IAAI,QAAQ,EAAE;oBACZ,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;oBACpD,YAAY,GAAG,GAAG,YAAY,aAAa,eAAe,EAAE,CAAA;iBAC7D;gBAED,YAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAA;gBAExC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;gBACvD,gBAAS,CAAC,QAAQ,CAAC,CAAA;gBACnB,OAAO,QAAQ,CAAA;aAChB;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;aACnD;QACH,CAAC;KAAA;CACF;AAzED,gCAyEC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/path-utils.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/path-utils.d.ts
deleted file mode 100644
index 1fee9f3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/path-utils.d.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * toPosixPath converts the given path to the posix form. On Windows, \\ will be
- * replaced with /.
- *
- * @param pth. Path to transform.
- * @return string Posix path.
- */
-export declare function toPosixPath(pth: string): string;
-/**
- * toWin32Path converts the given path to the win32 form. On Linux, / will be
- * replaced with \\.
- *
- * @param pth. Path to transform.
- * @return string Win32 path.
- */
-export declare function toWin32Path(pth: string): string;
-/**
- * toPlatformPath converts the given path to a platform-specific path. It does
- * this by replacing instances of / and \ with the platform-specific path
- * separator.
- *
- * @param pth The path to platformize.
- * @return string The platform-specific path.
- */
-export declare function toPlatformPath(pth: string): string;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/path-utils.js b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/path-utils.js
deleted file mode 100644
index 7251c82..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/path-utils.js
+++ /dev/null
@@ -1,58 +0,0 @@
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
-    Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
-    o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-    __setModuleDefault(result, mod);
-    return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0;
-const path = __importStar(require("path"));
-/**
- * toPosixPath converts the given path to the posix form. On Windows, \\ will be
- * replaced with /.
- *
- * @param pth. Path to transform.
- * @return string Posix path.
- */
-function toPosixPath(pth) {
-    return pth.replace(/[\\]/g, '/');
-}
-exports.toPosixPath = toPosixPath;
-/**
- * toWin32Path converts the given path to the win32 form. On Linux, / will be
- * replaced with \\.
- *
- * @param pth. Path to transform.
- * @return string Win32 path.
- */
-function toWin32Path(pth) {
-    return pth.replace(/[/]/g, '\\');
-}
-exports.toWin32Path = toWin32Path;
-/**
- * toPlatformPath converts the given path to a platform-specific path. It does
- * this by replacing instances of / and \ with the platform-specific path
- * separator.
- *
- * @param pth The path to platformize.
- * @return string The platform-specific path.
- */
-function toPlatformPath(pth) {
-    return pth.replace(/[/\\]/g, path.sep);
-}
-exports.toPlatformPath = toPlatformPath;
-//# sourceMappingURL=path-utils.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/path-utils.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/path-utils.js.map
deleted file mode 100644
index 7ab1cac..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/path-utils.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../src/path-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAE5B;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AAClC,CAAC;AAFD,kCAEC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAClC,CAAC;AAFD,kCAEC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;AACxC,CAAC;AAFD,wCAEC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/summary.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/summary.d.ts
deleted file mode 100644
index bb79255..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/summary.d.ts
+++ /dev/null
@@ -1,202 +0,0 @@
-export declare const SUMMARY_ENV_VAR = "GITHUB_STEP_SUMMARY";
-export declare const SUMMARY_DOCS_URL = "https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";
-export declare type SummaryTableRow = (SummaryTableCell | string)[];
-export interface SummaryTableCell {
-    /**
-     * Cell content
-     */
-    data: string;
-    /**
-     * Render cell as header
-     * (optional) default: false
-     */
-    header?: boolean;
-    /**
-     * Number of columns the cell extends
-     * (optional) default: '1'
-     */
-    colspan?: string;
-    /**
-     * Number of rows the cell extends
-     * (optional) default: '1'
-     */
-    rowspan?: string;
-}
-export interface SummaryImageOptions {
-    /**
-     * The width of the image in pixels. Must be an integer without a unit.
-     * (optional)
-     */
-    width?: string;
-    /**
-     * The height of the image in pixels. Must be an integer without a unit.
-     * (optional)
-     */
-    height?: string;
-}
-export interface SummaryWriteOptions {
-    /**
-     * Replace all existing content in summary file with buffer contents
-     * (optional) default: false
-     */
-    overwrite?: boolean;
-}
-declare class Summary {
-    private _buffer;
-    private _filePath?;
-    constructor();
-    /**
-     * Finds the summary file path from the environment, rejects if env var is not found or file does not exist
-     * Also checks r/w permissions.
-     *
-     * @returns step summary file path
-     */
-    private filePath;
-    /**
-     * Wraps content in an HTML tag, adding any HTML attributes
-     *
-     * @param {string} tag HTML tag to wrap
-     * @param {string | null} content content within the tag
-     * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add
-     *
-     * @returns {string} content wrapped in HTML element
-     */
-    private wrap;
-    /**
-     * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.
-     *
-     * @param {SummaryWriteOptions} [options] (optional) options for write operation
-     *
-     * @returns {Promise<Summary>} summary instance
-     */
-    write(options?: SummaryWriteOptions): Promise<Summary>;
-    /**
-     * Clears the summary buffer and wipes the summary file
-     *
-     * @returns {Summary} summary instance
-     */
-    clear(): Promise<Summary>;
-    /**
-     * Returns the current summary buffer as a string
-     *
-     * @returns {string} string of summary buffer
-     */
-    stringify(): string;
-    /**
-     * If the summary buffer is empty
-     *
-     * @returns {boolen} true if the buffer is empty
-     */
-    isEmptyBuffer(): boolean;
-    /**
-     * Resets the summary buffer without writing to summary file
-     *
-     * @returns {Summary} summary instance
-     */
-    emptyBuffer(): Summary;
-    /**
-     * Adds raw text to the summary buffer
-     *
-     * @param {string} text content to add
-     * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)
-     *
-     * @returns {Summary} summary instance
-     */
-    addRaw(text: string, addEOL?: boolean): Summary;
-    /**
-     * Adds the operating system-specific end-of-line marker to the buffer
-     *
-     * @returns {Summary} summary instance
-     */
-    addEOL(): Summary;
-    /**
-     * Adds an HTML codeblock to the summary buffer
-     *
-     * @param {string} code content to render within fenced code block
-     * @param {string} lang (optional) language to syntax highlight code
-     *
-     * @returns {Summary} summary instance
-     */
-    addCodeBlock(code: string, lang?: string): Summary;
-    /**
-     * Adds an HTML list to the summary buffer
-     *
-     * @param {string[]} items list of items to render
-     * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)
-     *
-     * @returns {Summary} summary instance
-     */
-    addList(items: string[], ordered?: boolean): Summary;
-    /**
-     * Adds an HTML table to the summary buffer
-     *
-     * @param {SummaryTableCell[]} rows table rows
-     *
-     * @returns {Summary} summary instance
-     */
-    addTable(rows: SummaryTableRow[]): Summary;
-    /**
-     * Adds a collapsable HTML details element to the summary buffer
-     *
-     * @param {string} label text for the closed state
-     * @param {string} content collapsable content
-     *
-     * @returns {Summary} summary instance
-     */
-    addDetails(label: string, content: string): Summary;
-    /**
-     * Adds an HTML image tag to the summary buffer
-     *
-     * @param {string} src path to the image you to embed
-     * @param {string} alt text description of the image
-     * @param {SummaryImageOptions} options (optional) addition image attributes
-     *
-     * @returns {Summary} summary instance
-     */
-    addImage(src: string, alt: string, options?: SummaryImageOptions): Summary;
-    /**
-     * Adds an HTML section heading element
-     *
-     * @param {string} text heading text
-     * @param {number | string} [level=1] (optional) the heading level, default: 1
-     *
-     * @returns {Summary} summary instance
-     */
-    addHeading(text: string, level?: number | string): Summary;
-    /**
-     * Adds an HTML thematic break (<hr>) to the summary buffer
-     *
-     * @returns {Summary} summary instance
-     */
-    addSeparator(): Summary;
-    /**
-     * Adds an HTML line break (<br>) to the summary buffer
-     *
-     * @returns {Summary} summary instance
-     */
-    addBreak(): Summary;
-    /**
-     * Adds an HTML blockquote to the summary buffer
-     *
-     * @param {string} text quote text
-     * @param {string} cite (optional) citation url
-     *
-     * @returns {Summary} summary instance
-     */
-    addQuote(text: string, cite?: string): Summary;
-    /**
-     * Adds an HTML anchor tag to the summary buffer
-     *
-     * @param {string} text link text/content
-     * @param {string} href hyperlink
-     *
-     * @returns {Summary} summary instance
-     */
-    addLink(text: string, href: string): Summary;
-}
-/**
- * @deprecated use `core.summary`
- */
-export declare const markdownSummary: Summary;
-export declare const summary: Summary;
-export {};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/summary.js b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/summary.js
deleted file mode 100644
index 04a335b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/summary.js
+++ /dev/null
@@ -1,283 +0,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;
-const os_1 = require("os");
-const fs_1 = require("fs");
-const { access, appendFile, writeFile } = fs_1.promises;
-exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';
-exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';
-class Summary {
-    constructor() {
-        this._buffer = '';
-    }
-    /**
-     * Finds the summary file path from the environment, rejects if env var is not found or file does not exist
-     * Also checks r/w permissions.
-     *
-     * @returns step summary file path
-     */
-    filePath() {
-        return __awaiter(this, void 0, void 0, function* () {
-            if (this._filePath) {
-                return this._filePath;
-            }
-            const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];
-            if (!pathFromEnv) {
-                throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);
-            }
-            try {
-                yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);
-            }
-            catch (_a) {
-                throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);
-            }
-            this._filePath = pathFromEnv;
-            return this._filePath;
-        });
-    }
-    /**
-     * Wraps content in an HTML tag, adding any HTML attributes
-     *
-     * @param {string} tag HTML tag to wrap
-     * @param {string | null} content content within the tag
-     * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add
-     *
-     * @returns {string} content wrapped in HTML element
-     */
-    wrap(tag, content, attrs = {}) {
-        const htmlAttrs = Object.entries(attrs)
-            .map(([key, value]) => ` ${key}="${value}"`)
-            .join('');
-        if (!content) {
-            return `<${tag}${htmlAttrs}>`;
-        }
-        return `<${tag}${htmlAttrs}>${content}</${tag}>`;
-    }
-    /**
-     * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.
-     *
-     * @param {SummaryWriteOptions} [options] (optional) options for write operation
-     *
-     * @returns {Promise<Summary>} summary instance
-     */
-    write(options) {
-        return __awaiter(this, void 0, void 0, function* () {
-            const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);
-            const filePath = yield this.filePath();
-            const writeFunc = overwrite ? writeFile : appendFile;
-            yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });
-            return this.emptyBuffer();
-        });
-    }
-    /**
-     * Clears the summary buffer and wipes the summary file
-     *
-     * @returns {Summary} summary instance
-     */
-    clear() {
-        return __awaiter(this, void 0, void 0, function* () {
-            return this.emptyBuffer().write({ overwrite: true });
-        });
-    }
-    /**
-     * Returns the current summary buffer as a string
-     *
-     * @returns {string} string of summary buffer
-     */
-    stringify() {
-        return this._buffer;
-    }
-    /**
-     * If the summary buffer is empty
-     *
-     * @returns {boolen} true if the buffer is empty
-     */
-    isEmptyBuffer() {
-        return this._buffer.length === 0;
-    }
-    /**
-     * Resets the summary buffer without writing to summary file
-     *
-     * @returns {Summary} summary instance
-     */
-    emptyBuffer() {
-        this._buffer = '';
-        return this;
-    }
-    /**
-     * Adds raw text to the summary buffer
-     *
-     * @param {string} text content to add
-     * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)
-     *
-     * @returns {Summary} summary instance
-     */
-    addRaw(text, addEOL = false) {
-        this._buffer += text;
-        return addEOL ? this.addEOL() : this;
-    }
-    /**
-     * Adds the operating system-specific end-of-line marker to the buffer
-     *
-     * @returns {Summary} summary instance
-     */
-    addEOL() {
-        return this.addRaw(os_1.EOL);
-    }
-    /**
-     * Adds an HTML codeblock to the summary buffer
-     *
-     * @param {string} code content to render within fenced code block
-     * @param {string} lang (optional) language to syntax highlight code
-     *
-     * @returns {Summary} summary instance
-     */
-    addCodeBlock(code, lang) {
-        const attrs = Object.assign({}, (lang && { lang }));
-        const element = this.wrap('pre', this.wrap('code', code), attrs);
-        return this.addRaw(element).addEOL();
-    }
-    /**
-     * Adds an HTML list to the summary buffer
-     *
-     * @param {string[]} items list of items to render
-     * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)
-     *
-     * @returns {Summary} summary instance
-     */
-    addList(items, ordered = false) {
-        const tag = ordered ? 'ol' : 'ul';
-        const listItems = items.map(item => this.wrap('li', item)).join('');
-        const element = this.wrap(tag, listItems);
-        return this.addRaw(element).addEOL();
-    }
-    /**
-     * Adds an HTML table to the summary buffer
-     *
-     * @param {SummaryTableCell[]} rows table rows
-     *
-     * @returns {Summary} summary instance
-     */
-    addTable(rows) {
-        const tableBody = rows
-            .map(row => {
-            const cells = row
-                .map(cell => {
-                if (typeof cell === 'string') {
-                    return this.wrap('td', cell);
-                }
-                const { header, data, colspan, rowspan } = cell;
-                const tag = header ? 'th' : 'td';
-                const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));
-                return this.wrap(tag, data, attrs);
-            })
-                .join('');
-            return this.wrap('tr', cells);
-        })
-            .join('');
-        const element = this.wrap('table', tableBody);
-        return this.addRaw(element).addEOL();
-    }
-    /**
-     * Adds a collapsable HTML details element to the summary buffer
-     *
-     * @param {string} label text for the closed state
-     * @param {string} content collapsable content
-     *
-     * @returns {Summary} summary instance
-     */
-    addDetails(label, content) {
-        const element = this.wrap('details', this.wrap('summary', label) + content);
-        return this.addRaw(element).addEOL();
-    }
-    /**
-     * Adds an HTML image tag to the summary buffer
-     *
-     * @param {string} src path to the image you to embed
-     * @param {string} alt text description of the image
-     * @param {SummaryImageOptions} options (optional) addition image attributes
-     *
-     * @returns {Summary} summary instance
-     */
-    addImage(src, alt, options) {
-        const { width, height } = options || {};
-        const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));
-        const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));
-        return this.addRaw(element).addEOL();
-    }
-    /**
-     * Adds an HTML section heading element
-     *
-     * @param {string} text heading text
-     * @param {number | string} [level=1] (optional) the heading level, default: 1
-     *
-     * @returns {Summary} summary instance
-     */
-    addHeading(text, level) {
-        const tag = `h${level}`;
-        const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)
-            ? tag
-            : 'h1';
-        const element = this.wrap(allowedTag, text);
-        return this.addRaw(element).addEOL();
-    }
-    /**
-     * Adds an HTML thematic break (<hr>) to the summary buffer
-     *
-     * @returns {Summary} summary instance
-     */
-    addSeparator() {
-        const element = this.wrap('hr', null);
-        return this.addRaw(element).addEOL();
-    }
-    /**
-     * Adds an HTML line break (<br>) to the summary buffer
-     *
-     * @returns {Summary} summary instance
-     */
-    addBreak() {
-        const element = this.wrap('br', null);
-        return this.addRaw(element).addEOL();
-    }
-    /**
-     * Adds an HTML blockquote to the summary buffer
-     *
-     * @param {string} text quote text
-     * @param {string} cite (optional) citation url
-     *
-     * @returns {Summary} summary instance
-     */
-    addQuote(text, cite) {
-        const attrs = Object.assign({}, (cite && { cite }));
-        const element = this.wrap('blockquote', text, attrs);
-        return this.addRaw(element).addEOL();
-    }
-    /**
-     * Adds an HTML anchor tag to the summary buffer
-     *
-     * @param {string} text link text/content
-     * @param {string} href hyperlink
-     *
-     * @returns {Summary} summary instance
-     */
-    addLink(text, href) {
-        const element = this.wrap('a', text, { href });
-        return this.addRaw(element).addEOL();
-    }
-}
-const _summary = new Summary();
-/**
- * @deprecated use `core.summary`
- */
-exports.markdownSummary = _summary;
-exports.summary = _summary;
-//# sourceMappingURL=summary.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/summary.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/summary.js.map
deleted file mode 100644
index d598f26..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/summary.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"summary.js","sourceRoot":"","sources":["../src/summary.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2BAAsB;AACtB,2BAAsC;AACtC,MAAM,EAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAC,GAAG,aAAQ,CAAA;AAEnC,QAAA,eAAe,GAAG,qBAAqB,CAAA;AACvC,QAAA,gBAAgB,GAC3B,2GAA2G,CAAA;AA+C7G,MAAM,OAAO;IAIX;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED;;;;;OAKG;IACW,QAAQ;;YACpB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,OAAO,IAAI,CAAC,SAAS,CAAA;aACtB;YAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAe,CAAC,CAAA;YAChD,IAAI,CAAC,WAAW,EAAE;gBAChB,MAAM,IAAI,KAAK,CACb,4CAA4C,uBAAe,6DAA6D,CACzH,CAAA;aACF;YAED,IAAI;gBACF,MAAM,MAAM,CAAC,WAAW,EAAE,cAAS,CAAC,IAAI,GAAG,cAAS,CAAC,IAAI,CAAC,CAAA;aAC3D;YAAC,WAAM;gBACN,MAAM,IAAI,KAAK,CACb,mCAAmC,WAAW,0DAA0D,CACzG,CAAA;aACF;YAED,IAAI,CAAC,SAAS,GAAG,WAAW,CAAA;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAA;QACvB,CAAC;KAAA;IAED;;;;;;;;OAQG;IACK,IAAI,CACV,GAAW,EACX,OAAsB,EACtB,QAAuC,EAAE;QAEzC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,KAAK,GAAG,CAAC;aAC3C,IAAI,CAAC,EAAE,CAAC,CAAA;QAEX,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,IAAI,GAAG,GAAG,SAAS,GAAG,CAAA;SAC9B;QAED,OAAO,IAAI,GAAG,GAAG,SAAS,IAAI,OAAO,KAAK,GAAG,GAAG,CAAA;IAClD,CAAC;IAED;;;;;;OAMG;IACG,KAAK,CAAC,OAA6B;;YACvC,MAAM,SAAS,GAAG,CAAC,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAA,CAAA;YACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;YACtC,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAA;YACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAA;YAC3D,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;QAC3B,CAAC;KAAA;IAED;;;;OAIG;IACG,KAAK;;YACT,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;QACpD,CAAC;KAAA;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;;;OAIG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAA;IAClC,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,IAAY,EAAE,MAAM,GAAG,KAAK;QACjC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAA;QACpB,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACtC,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAG,CAAC,CAAA;IACzB,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,IAAY,EAAE,IAAa;QACtC,MAAM,KAAK,qBACN,CAAC,IAAI,IAAI,EAAC,IAAI,EAAC,CAAC,CACpB,CAAA;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACtC,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,KAAe,EAAE,OAAO,GAAG,KAAK;QACtC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;QACjC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACtC,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,IAAuB;QAC9B,MAAM,SAAS,GAAG,IAAI;aACnB,GAAG,CAAC,GAAG,CAAC,EAAE;YACT,MAAM,KAAK,GAAG,GAAG;iBACd,GAAG,CAAC,IAAI,CAAC,EAAE;gBACV,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;oBAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;iBAC7B;gBAED,MAAM,EAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAC,GAAG,IAAI,CAAA;gBAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;gBAChC,MAAM,KAAK,mCACN,CAAC,OAAO,IAAI,EAAC,OAAO,EAAC,CAAC,GACtB,CAAC,OAAO,IAAI,EAAC,OAAO,EAAC,CAAC,CAC1B,CAAA;gBAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;YACpC,CAAC,CAAC;iBACD,IAAI,CAAC,EAAE,CAAC,CAAA;YAEX,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC/B,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAA;QAEX,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACtC,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,KAAa,EAAE,OAAe;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAA;QAC3E,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACtC,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ,CAAC,GAAW,EAAE,GAAW,EAAE,OAA6B;QAC9D,MAAM,EAAC,KAAK,EAAE,MAAM,EAAC,GAAG,OAAO,IAAI,EAAE,CAAA;QACrC,MAAM,KAAK,mCACN,CAAC,KAAK,IAAI,EAAC,KAAK,EAAC,CAAC,GAClB,CAAC,MAAM,IAAI,EAAC,MAAM,EAAC,CAAC,CACxB,CAAA;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,kBAAG,GAAG,EAAE,GAAG,IAAK,KAAK,EAAE,CAAA;QAC5D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACtC,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,IAAY,EAAE,KAAuB;QAC9C,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAA;QACvB,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnE,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,IAAI,CAAA;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACtC,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACtC,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACtC,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAY,EAAE,IAAa;QAClC,MAAM,KAAK,qBACN,CAAC,IAAI,IAAI,EAAC,IAAI,EAAC,CAAC,CACpB,CAAA;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACtC,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,IAAY,EAAE,IAAY;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC,IAAI,EAAC,CAAC,CAAA;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACtC,CAAC;CACF;AAED,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAA;AAE9B;;GAEG;AACU,QAAA,eAAe,GAAG,QAAQ,CAAA;AAC1B,QAAA,OAAO,GAAG,QAAQ,CAAA"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/utils.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/utils.d.ts
deleted file mode 100644
index 3b9e28d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/utils.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { AnnotationProperties } from './core';
-import { CommandProperties } from './command';
-/**
- * Sanitizes an input into a string so it can be passed into issueCommand safely
- * @param input input to sanitize into a string
- */
-export declare function toCommandValue(input: any): string;
-/**
- *
- * @param annotationProperties
- * @returns The command properties to send with the actual annotation command
- * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646
- */
-export declare function toCommandProperties(annotationProperties: AnnotationProperties): CommandProperties;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/utils.js b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/utils.js
deleted file mode 100644
index 9b5ca44..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/utils.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-// We use any as a valid input type
-/* eslint-disable @typescript-eslint/no-explicit-any */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.toCommandProperties = exports.toCommandValue = void 0;
-/**
- * Sanitizes an input into a string so it can be passed into issueCommand safely
- * @param input input to sanitize into a string
- */
-function toCommandValue(input) {
-    if (input === null || input === undefined) {
-        return '';
-    }
-    else if (typeof input === 'string' || input instanceof String) {
-        return input;
-    }
-    return JSON.stringify(input);
-}
-exports.toCommandValue = toCommandValue;
-/**
- *
- * @param annotationProperties
- * @returns The command properties to send with the actual annotation command
- * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646
- */
-function toCommandProperties(annotationProperties) {
-    if (!Object.keys(annotationProperties).length) {
-        return {};
-    }
-    return {
-        title: annotationProperties.title,
-        file: annotationProperties.file,
-        line: annotationProperties.startLine,
-        endLine: annotationProperties.endLine,
-        col: annotationProperties.startColumn,
-        endColumn: annotationProperties.endColumn
-    };
-}
-exports.toCommandProperties = toCommandProperties;
-//# sourceMappingURL=utils.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/utils.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/utils.js.map
deleted file mode 100644
index 8211bb7..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/lib/utils.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,mCAAmC;AACnC,uDAAuD;;;AAKvD;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAU;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;QACzC,OAAO,EAAE,CAAA;KACV;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;QAC/D,OAAO,KAAe,CAAA;KACvB;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAPD,wCAOC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,oBAA0C;IAE1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE;QAC7C,OAAO,EAAE,CAAA;KACV;IAED,OAAO;QACL,KAAK,EAAE,oBAAoB,CAAC,KAAK;QACjC,IAAI,EAAE,oBAAoB,CAAC,IAAI;QAC/B,IAAI,EAAE,oBAAoB,CAAC,SAAS;QACpC,OAAO,EAAE,oBAAoB,CAAC,OAAO;QACrC,GAAG,EAAE,oBAAoB,CAAC,WAAW;QACrC,SAAS,EAAE,oBAAoB,CAAC,SAAS;KAC1C,CAAA;AACH,CAAC;AAfD,kDAeC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/core/package.json b/actions/bcr-pr-review-notifier/node_modules/@actions/core/package.json
deleted file mode 100644
index 1558268..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/core/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "name": "@actions/core",
-  "version": "1.10.1",
-  "description": "Actions core lib",
-  "keywords": [
-    "github",
-    "actions",
-    "core"
-  ],
-  "homepage": "https://github.com/actions/toolkit/tree/main/packages/core",
-  "license": "MIT",
-  "main": "lib/core.js",
-  "types": "lib/core.d.ts",
-  "directories": {
-    "lib": "lib",
-    "test": "__tests__"
-  },
-  "files": [
-    "lib",
-    "!.DS_Store"
-  ],
-  "publishConfig": {
-    "access": "public"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/actions/toolkit.git",
-    "directory": "packages/core"
-  },
-  "scripts": {
-    "audit-moderate": "npm install && npm audit --json --audit-level=moderate > audit.json",
-    "test": "echo \"Error: run tests from root\" && exit 1",
-    "tsc": "tsc -p tsconfig.json"
-  },
-  "bugs": {
-    "url": "https://github.com/actions/toolkit/issues"
-  },
-  "dependencies": {
-    "@actions/http-client": "^2.0.1",
-    "uuid": "^8.3.2"
-  },
-  "devDependencies": {
-    "@types/node": "^12.0.2",
-    "@types/uuid": "^8.3.4"
-  }
-}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/LICENSE.md b/actions/bcr-pr-review-notifier/node_modules/@actions/github/LICENSE.md
deleted file mode 100644
index dbae2ed..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/LICENSE.md
+++ /dev/null
@@ -1,9 +0,0 @@
-The MIT License (MIT)
-
-Copyright 2019 GitHub
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/README.md b/actions/bcr-pr-review-notifier/node_modules/@actions/github/README.md
deleted file mode 100644
index 30e6a68..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# `@actions/github`
-
-> A hydrated Octokit client.
-
-## Usage
-
-Returns an authenticated Octokit client that follows the machine [proxy settings](https://help.github.com/en/actions/hosting-your-own-runners/using-a-proxy-server-with-self-hosted-runners) and correctly sets GHES base urls. See https://octokit.github.io/rest.js for the API.
-
-```js
-const github = require('@actions/github');
-const core = require('@actions/core');
-
-async function run() {
-    // This should be a token with access to your repository scoped in as a secret.
-    // The YML workflow will need to set myToken with the GitHub Secret Token
-    // myToken: ${{ secrets.GITHUB_TOKEN }}
-    // https://help.github.com/en/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token#about-the-github_token-secret
-    const myToken = core.getInput('myToken');
-
-    const octokit = github.getOctokit(myToken)
-
-    // You can also pass in additional options as a second parameter to getOctokit
-    // const octokit = github.getOctokit(myToken, {userAgent: "MyActionVersion1"});
-
-    const { data: pullRequest } = await octokit.rest.pulls.get({
-        owner: 'octokit',
-        repo: 'rest.js',
-        pull_number: 123,
-        mediaType: {
-          format: 'diff'
-        }
-    });
-
-    console.log(pullRequest);
-}
-
-run();
-```
-
-You can also make GraphQL requests. See https://github.com/octokit/graphql.js for the API.
-
-```js
-const result = await octokit.graphql(query, variables);
-```
-
-Finally, you can get the context of the current action:
-
-```js
-const github = require('@actions/github');
-
-const context = github.context;
-
-const newIssue = await octokit.rest.issues.create({
-  ...context.repo,
-  title: 'New issue!',
-  body: 'Hello Universe!'
-});
-```
-
-## Webhook payload typescript definitions
-
-The npm module `@octokit/webhooks-definitions` provides type definitions for the response payloads. You can cast the payload to these types for better type information.
-
-First, install the npm module `npm install @octokit/webhooks-definitions`
-
-Then, assert the type based on the eventName
-```ts
-import * as core from '@actions/core'
-import * as github from '@actions/github'
-import {PushEvent} from '@octokit/webhooks-definitions/schema'
-
-if (github.context.eventName === 'push') {
-  const pushPayload = github.context.payload as PushEvent
-  core.info(`The head commit is: ${pushPayload.head_commit}`)
-}
-```
-
-## Extending the Octokit instance
-`@octokit/core` now supports the [plugin architecture](https://github.com/octokit/core.js#plugins). You can extend the GitHub instance using plugins. 
-
-For example, using the `@octokit/plugin-enterprise-server` you can now access enterprise admin apis on GHES instances.
-
-```ts
-import { GitHub, getOctokitOptions } from '@actions/github/lib/utils'
-import { enterpriseServer220Admin } from '@octokit/plugin-enterprise-server'
-
-const octokit = GitHub.plugin(enterpriseServer220Admin)
-// or override some of the default values as well 
-// const octokit = GitHub.plugin(enterpriseServer220Admin).defaults({userAgent: "MyNewUserAgent"})
-
-const myToken = core.getInput('myToken');
-const myOctokit = new octokit(getOctokitOptions(token))
-// Create a new user
-myOctokit.rest.enterpriseAdmin.createUser({
-  login: "testuser",
-  email: "testuser@test.com",
-});
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/context.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/context.d.ts
deleted file mode 100644
index 7d3a7de..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/context.d.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { WebhookPayload } from './interfaces';
-export declare class Context {
-    /**
-     * Webhook payload object that triggered the workflow
-     */
-    payload: WebhookPayload;
-    eventName: string;
-    sha: string;
-    ref: string;
-    workflow: string;
-    action: string;
-    actor: string;
-    job: string;
-    runNumber: number;
-    runId: number;
-    apiUrl: string;
-    serverUrl: string;
-    graphqlUrl: string;
-    /**
-     * Hydrate the context from the environment
-     */
-    constructor();
-    get issue(): {
-        owner: string;
-        repo: string;
-        number: number;
-    };
-    get repo(): {
-        owner: string;
-        repo: string;
-    };
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/context.js b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/context.js
deleted file mode 100644
index f4e0afb..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/context.js
+++ /dev/null
@@ -1,55 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Context = void 0;
-const fs_1 = require("fs");
-const os_1 = require("os");
-class Context {
-    /**
-     * Hydrate the context from the environment
-     */
-    constructor() {
-        var _a, _b, _c;
-        this.payload = {};
-        if (process.env.GITHUB_EVENT_PATH) {
-            if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) {
-                this.payload = JSON.parse((0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));
-            }
-            else {
-                const path = process.env.GITHUB_EVENT_PATH;
-                process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);
-            }
-        }
-        this.eventName = process.env.GITHUB_EVENT_NAME;
-        this.sha = process.env.GITHUB_SHA;
-        this.ref = process.env.GITHUB_REF;
-        this.workflow = process.env.GITHUB_WORKFLOW;
-        this.action = process.env.GITHUB_ACTION;
-        this.actor = process.env.GITHUB_ACTOR;
-        this.job = process.env.GITHUB_JOB;
-        this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);
-        this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);
-        this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`;
-        this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`;
-        this.graphqlUrl =
-            (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`;
-    }
-    get issue() {
-        const payload = this.payload;
-        return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });
-    }
-    get repo() {
-        if (process.env.GITHUB_REPOSITORY) {
-            const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');
-            return { owner, repo };
-        }
-        if (this.payload.repository) {
-            return {
-                owner: this.payload.repository.owner.login,
-                repo: this.payload.repository.name
-            };
-        }
-        throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'");
-    }
-}
-exports.Context = Context;
-//# sourceMappingURL=context.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/context.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/context.js.map
deleted file mode 100644
index 45d2073..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/context.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;AAEA,2BAA2C;AAC3C,2BAAsB;AAEtB,MAAa,OAAO;IAmBlB;;OAEG;IACH;;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;YACjC,IAAI,IAAA,eAAU,EAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;gBAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CACvB,IAAA,iBAAY,EAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAChE,CAAA;aACF;iBAAM;gBACL,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAA;gBAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,kBAAkB,QAAG,EAAE,CAAC,CAAA;aACvE;SACF;QACD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAA2B,CAAA;QACxD,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAyB,CAAA;QACrD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAuB,CAAA;QACjD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAsB,CAAA;QAC/C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAA2B,EAAE,EAAE,CAAC,CAAA;QACtE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAuB,EAAE,EAAE,CAAC,CAAA;QAC9D,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,cAAc,mCAAI,wBAAwB,CAAA;QACpE,IAAI,CAAC,SAAS,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,mCAAI,oBAAoB,CAAA;QACtE,IAAI,CAAC,UAAU;YACb,MAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,mCAAI,gCAAgC,CAAA;IACtE,CAAC;IAED,IAAI,KAAK;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,uCACK,IAAI,CAAC,IAAI,KACZ,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC,MAAM,IAClE;IACH,CAAC;IAED,IAAI,IAAI;QACN,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;YACjC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9D,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,CAAA;SACrB;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK;gBAC1C,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;aACnC,CAAA;SACF;QAED,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAA;IACH,CAAC;CACF;AA3ED,0BA2EC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/github.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/github.d.ts
deleted file mode 100644
index 8c2121d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/github.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import * as Context from './context';
-import { GitHub } from './utils';
-import { OctokitOptions, OctokitPlugin } from '@octokit/core/dist-types/types';
-export declare const context: Context.Context;
-/**
- * Returns a hydrated octokit ready to use for GitHub Actions
- *
- * @param     token    the repo PAT or GITHUB_TOKEN
- * @param     options  other options to set
- */
-export declare function getOctokit(token: string, options?: OctokitOptions, ...additionalPlugins: OctokitPlugin[]): InstanceType<typeof GitHub>;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/github.js b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/github.js
deleted file mode 100644
index ea73b56..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/github.js
+++ /dev/null
@@ -1,41 +0,0 @@
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    var desc = Object.getOwnPropertyDescriptor(m, k);
-    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
-      desc = { enumerable: true, get: function() { return m[k]; } };
-    }
-    Object.defineProperty(o, k2, desc);
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
-    Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
-    o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-    __setModuleDefault(result, mod);
-    return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getOctokit = exports.context = void 0;
-const Context = __importStar(require("./context"));
-const utils_1 = require("./utils");
-exports.context = new Context.Context();
-/**
- * Returns a hydrated octokit ready to use for GitHub Actions
- *
- * @param     token    the repo PAT or GITHUB_TOKEN
- * @param     options  other options to set
- */
-function getOctokit(token, options, ...additionalPlugins) {
-    const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins);
-    return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options));
-}
-exports.getOctokit = getOctokit;
-//# sourceMappingURL=github.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/github.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/github.js.map
deleted file mode 100644
index e643866..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/github.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AACpC,mCAAiD;AAKpC,QAAA,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;AAE5C;;;;;GAKG;AACH,SAAgB,UAAU,CACxB,KAAa,EACb,OAAwB,EACxB,GAAG,iBAAkC;IAErC,MAAM,iBAAiB,GAAG,cAAM,CAAC,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAA;IAC7D,OAAO,IAAI,iBAAiB,CAAC,IAAA,yBAAiB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;AACjE,CAAC;AAPD,gCAOC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/interfaces.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/interfaces.d.ts
deleted file mode 100644
index f810333..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/interfaces.d.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-export interface PayloadRepository {
-    [key: string]: any;
-    full_name?: string;
-    name: string;
-    owner: {
-        [key: string]: any;
-        login: string;
-        name?: string;
-    };
-    html_url?: string;
-}
-export interface WebhookPayload {
-    [key: string]: any;
-    repository?: PayloadRepository;
-    issue?: {
-        [key: string]: any;
-        number: number;
-        html_url?: string;
-        body?: string;
-    };
-    pull_request?: {
-        [key: string]: any;
-        number: number;
-        html_url?: string;
-        body?: string;
-    };
-    sender?: {
-        [key: string]: any;
-        type: string;
-    };
-    action?: string;
-    installation?: {
-        id: number;
-        [key: string]: any;
-    };
-    comment?: {
-        id: number;
-        [key: string]: any;
-    };
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/interfaces.js b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/interfaces.js
deleted file mode 100644
index a660b5e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/interfaces.js
+++ /dev/null
@@ -1,4 +0,0 @@
-"use strict";
-/* eslint-disable @typescript-eslint/no-explicit-any */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=interfaces.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/interfaces.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/interfaces.js.map
deleted file mode 100644
index dc2c960..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/interfaces.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";AAAA,uDAAuD"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/internal/utils.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/internal/utils.d.ts
deleted file mode 100644
index 8d23693..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/internal/utils.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/// <reference types="node" />
-import * as http from 'http';
-import { OctokitOptions } from '@octokit/core/dist-types/types';
-import { ProxyAgent, fetch } from 'undici';
-export declare function getAuthString(token: string, options: OctokitOptions): string | undefined;
-export declare function getProxyAgent(destinationUrl: string): http.Agent;
-export declare function getProxyAgentDispatcher(destinationUrl: string): ProxyAgent | undefined;
-export declare function getProxyFetch(destinationUrl: any): typeof fetch;
-export declare function getApiBaseUrl(): string;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/internal/utils.js b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/internal/utils.js
deleted file mode 100644
index d2e23c0..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/internal/utils.js
+++ /dev/null
@@ -1,70 +0,0 @@
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    var desc = Object.getOwnPropertyDescriptor(m, k);
-    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
-      desc = { enumerable: true, get: function() { return m[k]; } };
-    }
-    Object.defineProperty(o, k2, desc);
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
-    Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
-    o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-    __setModuleDefault(result, mod);
-    return result;
-};
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getApiBaseUrl = exports.getProxyFetch = exports.getProxyAgentDispatcher = exports.getProxyAgent = exports.getAuthString = void 0;
-const httpClient = __importStar(require("@actions/http-client"));
-const undici_1 = require("undici");
-function getAuthString(token, options) {
-    if (!token && !options.auth) {
-        throw new Error('Parameter token or opts.auth is required');
-    }
-    else if (token && options.auth) {
-        throw new Error('Parameters token and opts.auth may not both be specified');
-    }
-    return typeof options.auth === 'string' ? options.auth : `token ${token}`;
-}
-exports.getAuthString = getAuthString;
-function getProxyAgent(destinationUrl) {
-    const hc = new httpClient.HttpClient();
-    return hc.getAgent(destinationUrl);
-}
-exports.getProxyAgent = getProxyAgent;
-function getProxyAgentDispatcher(destinationUrl) {
-    const hc = new httpClient.HttpClient();
-    return hc.getAgentDispatcher(destinationUrl);
-}
-exports.getProxyAgentDispatcher = getProxyAgentDispatcher;
-function getProxyFetch(destinationUrl) {
-    const httpDispatcher = getProxyAgentDispatcher(destinationUrl);
-    const proxyFetch = (url, opts) => __awaiter(this, void 0, void 0, function* () {
-        return (0, undici_1.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher }));
-    });
-    return proxyFetch;
-}
-exports.getProxyFetch = getProxyFetch;
-function getApiBaseUrl() {
-    return process.env['GITHUB_API_URL'] || 'https://api.github.com';
-}
-exports.getApiBaseUrl = getApiBaseUrl;
-//# sourceMappingURL=utils.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/internal/utils.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/internal/utils.js.map
deleted file mode 100644
index 0293cbf..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/internal/utils.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/internal/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iEAAkD;AAElD,mCAAwC;AAExC,SAAgB,aAAa,CAC3B,KAAa,EACb,OAAuB;IAEvB,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;KAC5D;SAAM,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;KAC5E;IAED,OAAO,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAA;AAC3E,CAAC;AAXD,sCAWC;AAED,SAAgB,aAAa,CAAC,cAAsB;IAClD,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,CAAA;IACtC,OAAO,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;AACpC,CAAC;AAHD,sCAGC;AAED,SAAgB,uBAAuB,CACrC,cAAsB;IAEtB,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,CAAA;IACtC,OAAO,EAAE,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAA;AAC9C,CAAC;AALD,0DAKC;AAED,SAAgB,aAAa,CAAC,cAAc;IAC1C,MAAM,cAAc,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAA;IAC9D,MAAM,UAAU,GAAiB,CAAO,GAAG,EAAE,IAAI,EAAE,EAAE;QACnD,OAAO,IAAA,cAAK,EAAC,GAAG,kCACX,IAAI,KACP,UAAU,EAAE,cAAc,IAC1B,CAAA;IACJ,CAAC,CAAA,CAAA;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AATD,sCASC;AAED,SAAgB,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,wBAAwB,CAAA;AAClE,CAAC;AAFD,sCAEC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/utils.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/utils.d.ts
deleted file mode 100644
index e889ee0..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/utils.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import * as Context from './context';
-import { Octokit } from '@octokit/core';
-import { OctokitOptions } from '@octokit/core/dist-types/types';
-export declare const context: Context.Context;
-export declare const defaults: OctokitOptions;
-export declare const GitHub: typeof Octokit & import("@octokit/core/dist-types/types").Constructor<import("@octokit/plugin-rest-endpoint-methods/dist-types/types").Api & {
-    paginate: import("@octokit/plugin-paginate-rest").PaginateInterface;
-}>;
-/**
- * Convience function to correctly format Octokit Options to pass into the constructor.
- *
- * @param     token    the repo PAT or GITHUB_TOKEN
- * @param     options  other options to set
- */
-export declare function getOctokitOptions(token: string, options?: OctokitOptions): OctokitOptions;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/utils.js b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/utils.js
deleted file mode 100644
index 0dbb6ef..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/utils.js
+++ /dev/null
@@ -1,59 +0,0 @@
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    var desc = Object.getOwnPropertyDescriptor(m, k);
-    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
-      desc = { enumerable: true, get: function() { return m[k]; } };
-    }
-    Object.defineProperty(o, k2, desc);
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
-    Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
-    o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-    __setModuleDefault(result, mod);
-    return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0;
-const Context = __importStar(require("./context"));
-const Utils = __importStar(require("./internal/utils"));
-// octokit + plugins
-const core_1 = require("@octokit/core");
-const plugin_rest_endpoint_methods_1 = require("@octokit/plugin-rest-endpoint-methods");
-const plugin_paginate_rest_1 = require("@octokit/plugin-paginate-rest");
-exports.context = new Context.Context();
-const baseUrl = Utils.getApiBaseUrl();
-exports.defaults = {
-    baseUrl,
-    request: {
-        agent: Utils.getProxyAgent(baseUrl),
-        fetch: Utils.getProxyFetch(baseUrl)
-    }
-};
-exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults);
-/**
- * Convience function to correctly format Octokit Options to pass into the constructor.
- *
- * @param     token    the repo PAT or GITHUB_TOKEN
- * @param     options  other options to set
- */
-function getOctokitOptions(token, options) {
-    const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller
-    // Auth
-    const auth = Utils.getAuthString(token, opts);
-    if (auth) {
-        opts.auth = auth;
-    }
-    return opts;
-}
-exports.getOctokitOptions = getOctokitOptions;
-//# sourceMappingURL=utils.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/utils.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/utils.js.map
deleted file mode 100644
index f68bc40..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/lib/utils.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AACpC,wDAAyC;AAEzC,oBAAoB;AACpB,wCAAqC;AAErC,wFAAyE;AACzE,wEAA0D;AAE7C,QAAA,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;AAE5C,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAA;AACxB,QAAA,QAAQ,GAAmB;IACtC,OAAO;IACP,OAAO,EAAE;QACP,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;QACnC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;KACpC;CACF,CAAA;AAEY,QAAA,MAAM,GAAG,cAAO,CAAC,MAAM,CAClC,kDAAmB,EACnB,mCAAY,CACb,CAAC,QAAQ,CAAC,gBAAQ,CAAC,CAAA;AAEpB;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,KAAa,EACb,OAAwB;IAExB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA,CAAC,iEAAiE;IAE/G,OAAO;IACP,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAC7C,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;KACjB;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAbD,8CAaC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/github/package.json b/actions/bcr-pr-review-notifier/node_modules/@actions/github/package.json
deleted file mode 100644
index 20ae230..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/github/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  "name": "@actions/github",
-  "version": "6.0.0",
-  "description": "Actions github lib",
-  "keywords": [
-    "github",
-    "actions"
-  ],
-  "homepage": "https://github.com/actions/toolkit/tree/main/packages/github",
-  "license": "MIT",
-  "main": "lib/github.js",
-  "types": "lib/github.d.ts",
-  "directories": {
-    "lib": "lib",
-    "test": "__tests__"
-  },
-  "files": [
-    "lib",
-    "!.DS_Store"
-  ],
-  "publishConfig": {
-    "access": "public"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/actions/toolkit.git",
-    "directory": "packages/github"
-  },
-  "scripts": {
-    "audit-moderate": "npm install && npm audit --json --audit-level=moderate > audit.json",
-    "test": "jest",
-    "build": "tsc",
-    "format": "prettier --write **/*.ts",
-    "format-check": "prettier --check **/*.ts",
-    "tsc": "tsc"
-  },
-  "bugs": {
-    "url": "https://github.com/actions/toolkit/issues"
-  },
-  "dependencies": {
-    "@actions/http-client": "^2.2.0",
-    "@octokit/core": "^5.0.1",
-    "@octokit/plugin-paginate-rest": "^9.0.0",
-    "@octokit/plugin-rest-endpoint-methods": "^10.0.0"
-  },
-  "devDependencies": {
-    "proxy": "^2.1.1"
-  }
-}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/LICENSE
deleted file mode 100644
index 5823a51..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-Actions Http Client for Node.js
-
-Copyright (c) GitHub, Inc.
-
-All rights reserved.
-
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
-associated documentation files (the "Software"), to deal in the Software without restriction,
-including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
-LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/README.md b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/README.md
deleted file mode 100644
index 7e06ade..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/README.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# `@actions/http-client`
-
-A lightweight HTTP client optimized for building actions.
-
-## Features
-
-  - HTTP client with TypeScript generics and async/await/Promises
-  - Typings included!
-  - [Proxy support](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/about-self-hosted-runners#using-a-proxy-server-with-self-hosted-runners) just works with actions and the runner
-  - Targets ES2019 (runner runs actions with node 12+).  Only supported on node 12+.
-  - Basic, Bearer and PAT Support out of the box.  Extensible handlers for others.
-  - Redirects supported
-
-Features and releases [here](./RELEASES.md)
-
-## Install
-
-```
-npm install @actions/http-client --save
-```
-
-## Samples
-
-See the [tests](./__tests__) for detailed examples.
-
-## Errors
-
-### HTTP
-
-The HTTP client does not throw unless truly exceptional.
-
-* A request that successfully executes resulting in a 404, 500 etc... will return a response object with a status code and a body.
-* Redirects (3xx) will be followed by default.
-
-See the [tests](./__tests__) for detailed examples.
-
-## Debugging
-
-To enable detailed console logging of all HTTP requests and responses, set the NODE_DEBUG environment varible:
-
-```shell
-export NODE_DEBUG=http
-```
-
-## Node support
-
-The http-client is built using the latest LTS version of Node 12. It may work on previous node LTS versions but it's tested and officially supported on Node12+.
-
-## Support and Versioning
-
-We follow semver and will hold compatibility between major versions and increment the minor version with new features and capabilities (while holding compat).
-
-## Contributing
-
-We welcome PRs.  Please create an issue and if applicable, a design before proceeding with code.
-
-once:
-
-```
-npm install
-```
-
-To build:
-
-```
-npm run build
-```
-
-To run all tests:
-
-```
-npm test
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/auth.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/auth.d.ts
deleted file mode 100644
index 8cc9fc3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/auth.d.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/// <reference types="node" />
-import * as http from 'http';
-import * as ifm from './interfaces';
-import { HttpClientResponse } from './index';
-export declare class BasicCredentialHandler implements ifm.RequestHandler {
-    username: string;
-    password: string;
-    constructor(username: string, password: string);
-    prepareRequest(options: http.RequestOptions): void;
-    canHandleAuthentication(): boolean;
-    handleAuthentication(): Promise<HttpClientResponse>;
-}
-export declare class BearerCredentialHandler implements ifm.RequestHandler {
-    token: string;
-    constructor(token: string);
-    prepareRequest(options: http.RequestOptions): void;
-    canHandleAuthentication(): boolean;
-    handleAuthentication(): Promise<HttpClientResponse>;
-}
-export declare class PersonalAccessTokenCredentialHandler implements ifm.RequestHandler {
-    token: string;
-    constructor(token: string);
-    prepareRequest(options: http.RequestOptions): void;
-    canHandleAuthentication(): boolean;
-    handleAuthentication(): Promise<HttpClientResponse>;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/auth.js b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/auth.js
deleted file mode 100644
index 2c150a3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/auth.js
+++ /dev/null
@@ -1,81 +0,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;
-class BasicCredentialHandler {
-    constructor(username, password) {
-        this.username = username;
-        this.password = password;
-    }
-    prepareRequest(options) {
-        if (!options.headers) {
-            throw Error('The request has no headers');
-        }
-        options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;
-    }
-    // This handler cannot handle 401
-    canHandleAuthentication() {
-        return false;
-    }
-    handleAuthentication() {
-        return __awaiter(this, void 0, void 0, function* () {
-            throw new Error('not implemented');
-        });
-    }
-}
-exports.BasicCredentialHandler = BasicCredentialHandler;
-class BearerCredentialHandler {
-    constructor(token) {
-        this.token = token;
-    }
-    // currently implements pre-authorization
-    // TODO: support preAuth = false where it hooks on 401
-    prepareRequest(options) {
-        if (!options.headers) {
-            throw Error('The request has no headers');
-        }
-        options.headers['Authorization'] = `Bearer ${this.token}`;
-    }
-    // This handler cannot handle 401
-    canHandleAuthentication() {
-        return false;
-    }
-    handleAuthentication() {
-        return __awaiter(this, void 0, void 0, function* () {
-            throw new Error('not implemented');
-        });
-    }
-}
-exports.BearerCredentialHandler = BearerCredentialHandler;
-class PersonalAccessTokenCredentialHandler {
-    constructor(token) {
-        this.token = token;
-    }
-    // currently implements pre-authorization
-    // TODO: support preAuth = false where it hooks on 401
-    prepareRequest(options) {
-        if (!options.headers) {
-            throw Error('The request has no headers');
-        }
-        options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;
-    }
-    // This handler cannot handle 401
-    canHandleAuthentication() {
-        return false;
-    }
-    handleAuthentication() {
-        return __awaiter(this, void 0, void 0, function* () {
-            throw new Error('not implemented');
-        });
-    }
-}
-exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;
-//# sourceMappingURL=auth.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/auth.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/auth.js.map
deleted file mode 100644
index 62cc16b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/auth.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA,MAAa,sBAAsB;IAIjC,YAAY,QAAgB,EAAE,QAAgB;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,cAAc,CAAC,OAA4B;QACzC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC1C;QACD,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,MAAM,CAAC,IAAI,CACrD,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CACpC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;IACxB,CAAC;IAED,iCAAiC;IACjC,uBAAuB;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAEK,oBAAoB;;YACxB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACpC,CAAC;KAAA;CACF;AA1BD,wDA0BC;AAED,MAAa,uBAAuB;IAGlC,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,yCAAyC;IACzC,sDAAsD;IACtD,cAAc,CAAC,OAA4B;QACzC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC1C;QACD,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAA;IAC3D,CAAC;IAED,iCAAiC;IACjC,uBAAuB;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAEK,oBAAoB;;YACxB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACpC,CAAC;KAAA;CACF;AAxBD,0DAwBC;AAED,MAAa,oCAAoC;IAK/C,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,yCAAyC;IACzC,sDAAsD;IACtD,cAAc,CAAC,OAA4B;QACzC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC1C;QACD,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,MAAM,CAAC,IAAI,CACrD,OAAO,IAAI,CAAC,KAAK,EAAE,CACpB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;IACxB,CAAC;IAED,iCAAiC;IACjC,uBAAuB;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAEK,oBAAoB;;YACxB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACpC,CAAC;KAAA;CACF;AA5BD,oFA4BC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/index.d.ts
deleted file mode 100644
index 38db700..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/index.d.ts
+++ /dev/null
@@ -1,130 +0,0 @@
-/// <reference types="node" />
-/// <reference types="node" />
-/// <reference types="node" />
-import * as http from 'http';
-import * as ifm from './interfaces';
-import { ProxyAgent } from 'undici';
-export declare enum HttpCodes {
-    OK = 200,
-    MultipleChoices = 300,
-    MovedPermanently = 301,
-    ResourceMoved = 302,
-    SeeOther = 303,
-    NotModified = 304,
-    UseProxy = 305,
-    SwitchProxy = 306,
-    TemporaryRedirect = 307,
-    PermanentRedirect = 308,
-    BadRequest = 400,
-    Unauthorized = 401,
-    PaymentRequired = 402,
-    Forbidden = 403,
-    NotFound = 404,
-    MethodNotAllowed = 405,
-    NotAcceptable = 406,
-    ProxyAuthenticationRequired = 407,
-    RequestTimeout = 408,
-    Conflict = 409,
-    Gone = 410,
-    TooManyRequests = 429,
-    InternalServerError = 500,
-    NotImplemented = 501,
-    BadGateway = 502,
-    ServiceUnavailable = 503,
-    GatewayTimeout = 504
-}
-export declare enum Headers {
-    Accept = "accept",
-    ContentType = "content-type"
-}
-export declare enum MediaTypes {
-    ApplicationJson = "application/json"
-}
-/**
- * Returns the proxy URL, depending upon the supplied url and proxy environment variables.
- * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
- */
-export declare function getProxyUrl(serverUrl: string): string;
-export declare class HttpClientError extends Error {
-    constructor(message: string, statusCode: number);
-    statusCode: number;
-    result?: any;
-}
-export declare class HttpClientResponse {
-    constructor(message: http.IncomingMessage);
-    message: http.IncomingMessage;
-    readBody(): Promise<string>;
-    readBodyBuffer?(): Promise<Buffer>;
-}
-export declare function isHttps(requestUrl: string): boolean;
-export declare class HttpClient {
-    userAgent: string | undefined;
-    handlers: ifm.RequestHandler[];
-    requestOptions: ifm.RequestOptions | undefined;
-    private _ignoreSslError;
-    private _socketTimeout;
-    private _allowRedirects;
-    private _allowRedirectDowngrade;
-    private _maxRedirects;
-    private _allowRetries;
-    private _maxRetries;
-    private _agent;
-    private _proxyAgent;
-    private _proxyAgentDispatcher;
-    private _keepAlive;
-    private _disposed;
-    constructor(userAgent?: string, handlers?: ifm.RequestHandler[], requestOptions?: ifm.RequestOptions);
-    options(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    get(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    del(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    post(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    patch(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    put(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    head(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    /**
-     * Gets a typed object from an endpoint
-     * Be aware that not found returns a null.  Other errors (4xx, 5xx) reject the promise
-     */
-    getJson<T>(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<ifm.TypedResponse<T>>;
-    postJson<T>(requestUrl: string, obj: any, additionalHeaders?: http.OutgoingHttpHeaders): Promise<ifm.TypedResponse<T>>;
-    putJson<T>(requestUrl: string, obj: any, additionalHeaders?: http.OutgoingHttpHeaders): Promise<ifm.TypedResponse<T>>;
-    patchJson<T>(requestUrl: string, obj: any, additionalHeaders?: http.OutgoingHttpHeaders): Promise<ifm.TypedResponse<T>>;
-    /**
-     * Makes a raw http request.
-     * All other methods such as get, post, patch, and request ultimately call this.
-     * Prefer get, del, post and patch
-     */
-    request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream | null, headers?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    /**
-     * Needs to be called if keepAlive is set to true in request options.
-     */
-    dispose(): void;
-    /**
-     * Raw request.
-     * @param info
-     * @param data
-     */
-    requestRaw(info: ifm.RequestInfo, data: string | NodeJS.ReadableStream | null): Promise<HttpClientResponse>;
-    /**
-     * Raw request with callback.
-     * @param info
-     * @param data
-     * @param onResult
-     */
-    requestRawWithCallback(info: ifm.RequestInfo, data: string | NodeJS.ReadableStream | null, onResult: (err?: Error, res?: HttpClientResponse) => void): void;
-    /**
-     * Gets an http agent. This function is useful when you need an http agent that handles
-     * routing through a proxy server - depending upon the url and proxy environment variables.
-     * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
-     */
-    getAgent(serverUrl: string): http.Agent;
-    getAgentDispatcher(serverUrl: string): ProxyAgent | undefined;
-    private _prepareRequest;
-    private _mergeHeaders;
-    private _getExistingOrDefaultHeader;
-    private _getAgent;
-    private _getProxyAgentDispatcher;
-    private _performExponentialBackoff;
-    private _processResponse;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/index.js b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/index.js
deleted file mode 100644
index 5a3cad3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/index.js
+++ /dev/null
@@ -1,656 +0,0 @@
-"use strict";
-/* eslint-disable @typescript-eslint/no-explicit-any */
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    var desc = Object.getOwnPropertyDescriptor(m, k);
-    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
-      desc = { enumerable: true, get: function() { return m[k]; } };
-    }
-    Object.defineProperty(o, k2, desc);
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
-    Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
-    o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-    __setModuleDefault(result, mod);
-    return result;
-};
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;
-const http = __importStar(require("http"));
-const https = __importStar(require("https"));
-const pm = __importStar(require("./proxy"));
-const tunnel = __importStar(require("tunnel"));
-const undici_1 = require("undici");
-var HttpCodes;
-(function (HttpCodes) {
-    HttpCodes[HttpCodes["OK"] = 200] = "OK";
-    HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices";
-    HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently";
-    HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved";
-    HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther";
-    HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified";
-    HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy";
-    HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy";
-    HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect";
-    HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect";
-    HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest";
-    HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized";
-    HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired";
-    HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden";
-    HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound";
-    HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed";
-    HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable";
-    HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
-    HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout";
-    HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict";
-    HttpCodes[HttpCodes["Gone"] = 410] = "Gone";
-    HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests";
-    HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError";
-    HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented";
-    HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway";
-    HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable";
-    HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout";
-})(HttpCodes || (exports.HttpCodes = HttpCodes = {}));
-var Headers;
-(function (Headers) {
-    Headers["Accept"] = "accept";
-    Headers["ContentType"] = "content-type";
-})(Headers || (exports.Headers = Headers = {}));
-var MediaTypes;
-(function (MediaTypes) {
-    MediaTypes["ApplicationJson"] = "application/json";
-})(MediaTypes || (exports.MediaTypes = MediaTypes = {}));
-/**
- * Returns the proxy URL, depending upon the supplied url and proxy environment variables.
- * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
- */
-function getProxyUrl(serverUrl) {
-    const proxyUrl = pm.getProxyUrl(new URL(serverUrl));
-    return proxyUrl ? proxyUrl.href : '';
-}
-exports.getProxyUrl = getProxyUrl;
-const HttpRedirectCodes = [
-    HttpCodes.MovedPermanently,
-    HttpCodes.ResourceMoved,
-    HttpCodes.SeeOther,
-    HttpCodes.TemporaryRedirect,
-    HttpCodes.PermanentRedirect
-];
-const HttpResponseRetryCodes = [
-    HttpCodes.BadGateway,
-    HttpCodes.ServiceUnavailable,
-    HttpCodes.GatewayTimeout
-];
-const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];
-const ExponentialBackoffCeiling = 10;
-const ExponentialBackoffTimeSlice = 5;
-class HttpClientError extends Error {
-    constructor(message, statusCode) {
-        super(message);
-        this.name = 'HttpClientError';
-        this.statusCode = statusCode;
-        Object.setPrototypeOf(this, HttpClientError.prototype);
-    }
-}
-exports.HttpClientError = HttpClientError;
-class HttpClientResponse {
-    constructor(message) {
-        this.message = message;
-    }
-    readBody() {
-        return __awaiter(this, void 0, void 0, function* () {
-            return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
-                let output = Buffer.alloc(0);
-                this.message.on('data', (chunk) => {
-                    output = Buffer.concat([output, chunk]);
-                });
-                this.message.on('end', () => {
-                    resolve(output.toString());
-                });
-            }));
-        });
-    }
-    readBodyBuffer() {
-        return __awaiter(this, void 0, void 0, function* () {
-            return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
-                const chunks = [];
-                this.message.on('data', (chunk) => {
-                    chunks.push(chunk);
-                });
-                this.message.on('end', () => {
-                    resolve(Buffer.concat(chunks));
-                });
-            }));
-        });
-    }
-}
-exports.HttpClientResponse = HttpClientResponse;
-function isHttps(requestUrl) {
-    const parsedUrl = new URL(requestUrl);
-    return parsedUrl.protocol === 'https:';
-}
-exports.isHttps = isHttps;
-class HttpClient {
-    constructor(userAgent, handlers, requestOptions) {
-        this._ignoreSslError = false;
-        this._allowRedirects = true;
-        this._allowRedirectDowngrade = false;
-        this._maxRedirects = 50;
-        this._allowRetries = false;
-        this._maxRetries = 1;
-        this._keepAlive = false;
-        this._disposed = false;
-        this.userAgent = userAgent;
-        this.handlers = handlers || [];
-        this.requestOptions = requestOptions;
-        if (requestOptions) {
-            if (requestOptions.ignoreSslError != null) {
-                this._ignoreSslError = requestOptions.ignoreSslError;
-            }
-            this._socketTimeout = requestOptions.socketTimeout;
-            if (requestOptions.allowRedirects != null) {
-                this._allowRedirects = requestOptions.allowRedirects;
-            }
-            if (requestOptions.allowRedirectDowngrade != null) {
-                this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;
-            }
-            if (requestOptions.maxRedirects != null) {
-                this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);
-            }
-            if (requestOptions.keepAlive != null) {
-                this._keepAlive = requestOptions.keepAlive;
-            }
-            if (requestOptions.allowRetries != null) {
-                this._allowRetries = requestOptions.allowRetries;
-            }
-            if (requestOptions.maxRetries != null) {
-                this._maxRetries = requestOptions.maxRetries;
-            }
-        }
-    }
-    options(requestUrl, additionalHeaders) {
-        return __awaiter(this, void 0, void 0, function* () {
-            return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});
-        });
-    }
-    get(requestUrl, additionalHeaders) {
-        return __awaiter(this, void 0, void 0, function* () {
-            return this.request('GET', requestUrl, null, additionalHeaders || {});
-        });
-    }
-    del(requestUrl, additionalHeaders) {
-        return __awaiter(this, void 0, void 0, function* () {
-            return this.request('DELETE', requestUrl, null, additionalHeaders || {});
-        });
-    }
-    post(requestUrl, data, additionalHeaders) {
-        return __awaiter(this, void 0, void 0, function* () {
-            return this.request('POST', requestUrl, data, additionalHeaders || {});
-        });
-    }
-    patch(requestUrl, data, additionalHeaders) {
-        return __awaiter(this, void 0, void 0, function* () {
-            return this.request('PATCH', requestUrl, data, additionalHeaders || {});
-        });
-    }
-    put(requestUrl, data, additionalHeaders) {
-        return __awaiter(this, void 0, void 0, function* () {
-            return this.request('PUT', requestUrl, data, additionalHeaders || {});
-        });
-    }
-    head(requestUrl, additionalHeaders) {
-        return __awaiter(this, void 0, void 0, function* () {
-            return this.request('HEAD', requestUrl, null, additionalHeaders || {});
-        });
-    }
-    sendStream(verb, requestUrl, stream, additionalHeaders) {
-        return __awaiter(this, void 0, void 0, function* () {
-            return this.request(verb, requestUrl, stream, additionalHeaders);
-        });
-    }
-    /**
-     * Gets a typed object from an endpoint
-     * Be aware that not found returns a null.  Other errors (4xx, 5xx) reject the promise
-     */
-    getJson(requestUrl, additionalHeaders = {}) {
-        return __awaiter(this, void 0, void 0, function* () {
-            additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
-            const res = yield this.get(requestUrl, additionalHeaders);
-            return this._processResponse(res, this.requestOptions);
-        });
-    }
-    postJson(requestUrl, obj, additionalHeaders = {}) {
-        return __awaiter(this, void 0, void 0, function* () {
-            const data = JSON.stringify(obj, null, 2);
-            additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
-            additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
-            const res = yield this.post(requestUrl, data, additionalHeaders);
-            return this._processResponse(res, this.requestOptions);
-        });
-    }
-    putJson(requestUrl, obj, additionalHeaders = {}) {
-        return __awaiter(this, void 0, void 0, function* () {
-            const data = JSON.stringify(obj, null, 2);
-            additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
-            additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
-            const res = yield this.put(requestUrl, data, additionalHeaders);
-            return this._processResponse(res, this.requestOptions);
-        });
-    }
-    patchJson(requestUrl, obj, additionalHeaders = {}) {
-        return __awaiter(this, void 0, void 0, function* () {
-            const data = JSON.stringify(obj, null, 2);
-            additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
-            additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
-            const res = yield this.patch(requestUrl, data, additionalHeaders);
-            return this._processResponse(res, this.requestOptions);
-        });
-    }
-    /**
-     * Makes a raw http request.
-     * All other methods such as get, post, patch, and request ultimately call this.
-     * Prefer get, del, post and patch
-     */
-    request(verb, requestUrl, data, headers) {
-        return __awaiter(this, void 0, void 0, function* () {
-            if (this._disposed) {
-                throw new Error('Client has already been disposed.');
-            }
-            const parsedUrl = new URL(requestUrl);
-            let info = this._prepareRequest(verb, parsedUrl, headers);
-            // Only perform retries on reads since writes may not be idempotent.
-            const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)
-                ? this._maxRetries + 1
-                : 1;
-            let numTries = 0;
-            let response;
-            do {
-                response = yield this.requestRaw(info, data);
-                // Check if it's an authentication challenge
-                if (response &&
-                    response.message &&
-                    response.message.statusCode === HttpCodes.Unauthorized) {
-                    let authenticationHandler;
-                    for (const handler of this.handlers) {
-                        if (handler.canHandleAuthentication(response)) {
-                            authenticationHandler = handler;
-                            break;
-                        }
-                    }
-                    if (authenticationHandler) {
-                        return authenticationHandler.handleAuthentication(this, info, data);
-                    }
-                    else {
-                        // We have received an unauthorized response but have no handlers to handle it.
-                        // Let the response return to the caller.
-                        return response;
-                    }
-                }
-                let redirectsRemaining = this._maxRedirects;
-                while (response.message.statusCode &&
-                    HttpRedirectCodes.includes(response.message.statusCode) &&
-                    this._allowRedirects &&
-                    redirectsRemaining > 0) {
-                    const redirectUrl = response.message.headers['location'];
-                    if (!redirectUrl) {
-                        // if there's no location to redirect to, we won't
-                        break;
-                    }
-                    const parsedRedirectUrl = new URL(redirectUrl);
-                    if (parsedUrl.protocol === 'https:' &&
-                        parsedUrl.protocol !== parsedRedirectUrl.protocol &&
-                        !this._allowRedirectDowngrade) {
-                        throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');
-                    }
-                    // we need to finish reading the response before reassigning response
-                    // which will leak the open socket.
-                    yield response.readBody();
-                    // strip authorization header if redirected to a different hostname
-                    if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {
-                        for (const header in headers) {
-                            // header names are case insensitive
-                            if (header.toLowerCase() === 'authorization') {
-                                delete headers[header];
-                            }
-                        }
-                    }
-                    // let's make the request with the new redirectUrl
-                    info = this._prepareRequest(verb, parsedRedirectUrl, headers);
-                    response = yield this.requestRaw(info, data);
-                    redirectsRemaining--;
-                }
-                if (!response.message.statusCode ||
-                    !HttpResponseRetryCodes.includes(response.message.statusCode)) {
-                    // If not a retry code, return immediately instead of retrying
-                    return response;
-                }
-                numTries += 1;
-                if (numTries < maxTries) {
-                    yield response.readBody();
-                    yield this._performExponentialBackoff(numTries);
-                }
-            } while (numTries < maxTries);
-            return response;
-        });
-    }
-    /**
-     * Needs to be called if keepAlive is set to true in request options.
-     */
-    dispose() {
-        if (this._agent) {
-            this._agent.destroy();
-        }
-        this._disposed = true;
-    }
-    /**
-     * Raw request.
-     * @param info
-     * @param data
-     */
-    requestRaw(info, data) {
-        return __awaiter(this, void 0, void 0, function* () {
-            return new Promise((resolve, reject) => {
-                function callbackForResult(err, res) {
-                    if (err) {
-                        reject(err);
-                    }
-                    else if (!res) {
-                        // If `err` is not passed, then `res` must be passed.
-                        reject(new Error('Unknown error'));
-                    }
-                    else {
-                        resolve(res);
-                    }
-                }
-                this.requestRawWithCallback(info, data, callbackForResult);
-            });
-        });
-    }
-    /**
-     * Raw request with callback.
-     * @param info
-     * @param data
-     * @param onResult
-     */
-    requestRawWithCallback(info, data, onResult) {
-        if (typeof data === 'string') {
-            if (!info.options.headers) {
-                info.options.headers = {};
-            }
-            info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');
-        }
-        let callbackCalled = false;
-        function handleResult(err, res) {
-            if (!callbackCalled) {
-                callbackCalled = true;
-                onResult(err, res);
-            }
-        }
-        const req = info.httpModule.request(info.options, (msg) => {
-            const res = new HttpClientResponse(msg);
-            handleResult(undefined, res);
-        });
-        let socket;
-        req.on('socket', sock => {
-            socket = sock;
-        });
-        // If we ever get disconnected, we want the socket to timeout eventually
-        req.setTimeout(this._socketTimeout || 3 * 60000, () => {
-            if (socket) {
-                socket.end();
-            }
-            handleResult(new Error(`Request timeout: ${info.options.path}`));
-        });
-        req.on('error', function (err) {
-            // err has statusCode property
-            // res should have headers
-            handleResult(err);
-        });
-        if (data && typeof data === 'string') {
-            req.write(data, 'utf8');
-        }
-        if (data && typeof data !== 'string') {
-            data.on('close', function () {
-                req.end();
-            });
-            data.pipe(req);
-        }
-        else {
-            req.end();
-        }
-    }
-    /**
-     * Gets an http agent. This function is useful when you need an http agent that handles
-     * routing through a proxy server - depending upon the url and proxy environment variables.
-     * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
-     */
-    getAgent(serverUrl) {
-        const parsedUrl = new URL(serverUrl);
-        return this._getAgent(parsedUrl);
-    }
-    getAgentDispatcher(serverUrl) {
-        const parsedUrl = new URL(serverUrl);
-        const proxyUrl = pm.getProxyUrl(parsedUrl);
-        const useProxy = proxyUrl && proxyUrl.hostname;
-        if (!useProxy) {
-            return;
-        }
-        return this._getProxyAgentDispatcher(parsedUrl, proxyUrl);
-    }
-    _prepareRequest(method, requestUrl, headers) {
-        const info = {};
-        info.parsedUrl = requestUrl;
-        const usingSsl = info.parsedUrl.protocol === 'https:';
-        info.httpModule = usingSsl ? https : http;
-        const defaultPort = usingSsl ? 443 : 80;
-        info.options = {};
-        info.options.host = info.parsedUrl.hostname;
-        info.options.port = info.parsedUrl.port
-            ? parseInt(info.parsedUrl.port)
-            : defaultPort;
-        info.options.path =
-            (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');
-        info.options.method = method;
-        info.options.headers = this._mergeHeaders(headers);
-        if (this.userAgent != null) {
-            info.options.headers['user-agent'] = this.userAgent;
-        }
-        info.options.agent = this._getAgent(info.parsedUrl);
-        // gives handlers an opportunity to participate
-        if (this.handlers) {
-            for (const handler of this.handlers) {
-                handler.prepareRequest(info.options);
-            }
-        }
-        return info;
-    }
-    _mergeHeaders(headers) {
-        if (this.requestOptions && this.requestOptions.headers) {
-            return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));
-        }
-        return lowercaseKeys(headers || {});
-    }
-    _getExistingOrDefaultHeader(additionalHeaders, header, _default) {
-        let clientHeader;
-        if (this.requestOptions && this.requestOptions.headers) {
-            clientHeader = lowercaseKeys(this.requestOptions.headers)[header];
-        }
-        return additionalHeaders[header] || clientHeader || _default;
-    }
-    _getAgent(parsedUrl) {
-        let agent;
-        const proxyUrl = pm.getProxyUrl(parsedUrl);
-        const useProxy = proxyUrl && proxyUrl.hostname;
-        if (this._keepAlive && useProxy) {
-            agent = this._proxyAgent;
-        }
-        if (this._keepAlive && !useProxy) {
-            agent = this._agent;
-        }
-        // if agent is already assigned use that agent.
-        if (agent) {
-            return agent;
-        }
-        const usingSsl = parsedUrl.protocol === 'https:';
-        let maxSockets = 100;
-        if (this.requestOptions) {
-            maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;
-        }
-        // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.
-        if (proxyUrl && proxyUrl.hostname) {
-            const agentOptions = {
-                maxSockets,
-                keepAlive: this._keepAlive,
-                proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {
-                    proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`
-                })), { host: proxyUrl.hostname, port: proxyUrl.port })
-            };
-            let tunnelAgent;
-            const overHttps = proxyUrl.protocol === 'https:';
-            if (usingSsl) {
-                tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;
-            }
-            else {
-                tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;
-            }
-            agent = tunnelAgent(agentOptions);
-            this._proxyAgent = agent;
-        }
-        // if reusing agent across request and tunneling agent isn't assigned create a new agent
-        if (this._keepAlive && !agent) {
-            const options = { keepAlive: this._keepAlive, maxSockets };
-            agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
-            this._agent = agent;
-        }
-        // if not using private agent and tunnel agent isn't setup then use global agent
-        if (!agent) {
-            agent = usingSsl ? https.globalAgent : http.globalAgent;
-        }
-        if (usingSsl && this._ignoreSslError) {
-            // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
-            // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
-            // we have to cast it to any and change it directly
-            agent.options = Object.assign(agent.options || {}, {
-                rejectUnauthorized: false
-            });
-        }
-        return agent;
-    }
-    _getProxyAgentDispatcher(parsedUrl, proxyUrl) {
-        let proxyAgent;
-        if (this._keepAlive) {
-            proxyAgent = this._proxyAgentDispatcher;
-        }
-        // if agent is already assigned use that agent.
-        if (proxyAgent) {
-            return proxyAgent;
-        }
-        const usingSsl = parsedUrl.protocol === 'https:';
-        proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && {
-            token: `${proxyUrl.username}:${proxyUrl.password}`
-        })));
-        this._proxyAgentDispatcher = proxyAgent;
-        if (usingSsl && this._ignoreSslError) {
-            // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
-            // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
-            // we have to cast it to any and change it directly
-            proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, {
-                rejectUnauthorized: false
-            });
-        }
-        return proxyAgent;
-    }
-    _performExponentialBackoff(retryNumber) {
-        return __awaiter(this, void 0, void 0, function* () {
-            retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
-            const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
-            return new Promise(resolve => setTimeout(() => resolve(), ms));
-        });
-    }
-    _processResponse(res, options) {
-        return __awaiter(this, void 0, void 0, function* () {
-            return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
-                const statusCode = res.message.statusCode || 0;
-                const response = {
-                    statusCode,
-                    result: null,
-                    headers: {}
-                };
-                // not found leads to null obj returned
-                if (statusCode === HttpCodes.NotFound) {
-                    resolve(response);
-                }
-                // get the result from the body
-                function dateTimeDeserializer(key, value) {
-                    if (typeof value === 'string') {
-                        const a = new Date(value);
-                        if (!isNaN(a.valueOf())) {
-                            return a;
-                        }
-                    }
-                    return value;
-                }
-                let obj;
-                let contents;
-                try {
-                    contents = yield res.readBody();
-                    if (contents && contents.length > 0) {
-                        if (options && options.deserializeDates) {
-                            obj = JSON.parse(contents, dateTimeDeserializer);
-                        }
-                        else {
-                            obj = JSON.parse(contents);
-                        }
-                        response.result = obj;
-                    }
-                    response.headers = res.message.headers;
-                }
-                catch (err) {
-                    // Invalid resource (contents not json);  leaving result obj null
-                }
-                // note that 3xx redirects are handled by the http layer.
-                if (statusCode > 299) {
-                    let msg;
-                    // if exception/error in body, attempt to get better error
-                    if (obj && obj.message) {
-                        msg = obj.message;
-                    }
-                    else if (contents && contents.length > 0) {
-                        // it may be the case that the exception is in the body message as string
-                        msg = contents;
-                    }
-                    else {
-                        msg = `Failed request: (${statusCode})`;
-                    }
-                    const err = new HttpClientError(msg, statusCode);
-                    err.result = response.result;
-                    reject(err);
-                }
-                else {
-                    resolve(response);
-                }
-            }));
-        });
-    }
-}
-exports.HttpClient = HttpClient;
-const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/index.js.map
deleted file mode 100644
index 21d599d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvD,2CAA4B;AAC5B,6CAA8B;AAG9B,4CAA6B;AAC7B,+CAAgC;AAChC,mCAAiC;AAEjC,IAAY,SA4BX;AA5BD,WAAY,SAAS;IACnB,uCAAQ,CAAA;IACR,iEAAqB,CAAA;IACrB,mEAAsB,CAAA;IACtB,6DAAmB,CAAA;IACnB,mDAAc,CAAA;IACd,yDAAiB,CAAA;IACjB,mDAAc,CAAA;IACd,yDAAiB,CAAA;IACjB,qEAAuB,CAAA;IACvB,qEAAuB,CAAA;IACvB,uDAAgB,CAAA;IAChB,2DAAkB,CAAA;IAClB,iEAAqB,CAAA;IACrB,qDAAe,CAAA;IACf,mDAAc,CAAA;IACd,mEAAsB,CAAA;IACtB,6DAAmB,CAAA;IACnB,yFAAiC,CAAA;IACjC,+DAAoB,CAAA;IACpB,mDAAc,CAAA;IACd,2CAAU,CAAA;IACV,iEAAqB,CAAA;IACrB,yEAAyB,CAAA;IACzB,+DAAoB,CAAA;IACpB,uDAAgB,CAAA;IAChB,uEAAwB,CAAA;IACxB,+DAAoB,CAAA;AACtB,CAAC,EA5BW,SAAS,yBAAT,SAAS,QA4BpB;AAED,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,4BAAiB,CAAA;IACjB,uCAA4B,CAAA;AAC9B,CAAC,EAHW,OAAO,uBAAP,OAAO,QAGlB;AAED,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,kDAAoC,CAAA;AACtC,CAAC,EAFW,UAAU,0BAAV,UAAU,QAErB;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,SAAiB;IAC3C,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;IACnD,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;AACtC,CAAC;AAHD,kCAGC;AAED,MAAM,iBAAiB,GAAa;IAClC,SAAS,CAAC,gBAAgB;IAC1B,SAAS,CAAC,aAAa;IACvB,SAAS,CAAC,QAAQ;IAClB,SAAS,CAAC,iBAAiB;IAC3B,SAAS,CAAC,iBAAiB;CAC5B,CAAA;AACD,MAAM,sBAAsB,GAAa;IACvC,SAAS,CAAC,UAAU;IACpB,SAAS,CAAC,kBAAkB;IAC5B,SAAS,CAAC,cAAc;CACzB,CAAA;AACD,MAAM,kBAAkB,GAAa,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;AACzE,MAAM,yBAAyB,GAAG,EAAE,CAAA;AACpC,MAAM,2BAA2B,GAAG,CAAC,CAAA;AAErC,MAAa,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe,EAAE,UAAkB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACxD,CAAC;CAIF;AAVD,0CAUC;AAED,MAAa,kBAAkB;IAC7B,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAGK,QAAQ;;YACZ,OAAO,IAAI,OAAO,CAAS,CAAM,OAAO,EAAC,EAAE;gBACzC,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAE5B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;oBACxC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;gBACzC,CAAC,CAAC,CAAA;gBAEF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC5B,CAAC,CAAC,CAAA;YACJ,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;IAEK,cAAc;;YAClB,OAAO,IAAI,OAAO,CAAS,CAAM,OAAO,EAAC,EAAE;gBACzC,MAAM,MAAM,GAAa,EAAE,CAAA;gBAE3B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;oBACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACpB,CAAC,CAAC,CAAA;gBAEF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;gBAChC,CAAC,CAAC,CAAA;YACJ,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;CACF;AAjCD,gDAiCC;AAED,SAAgB,OAAO,CAAC,UAAkB;IACxC,MAAM,SAAS,GAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,CAAA;IAC1C,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAA;AACxC,CAAC;AAHD,0BAGC;AAED,MAAa,UAAU;IAkBrB,YACE,SAAkB,EAClB,QAA+B,EAC/B,cAAmC;QAhB7B,oBAAe,GAAG,KAAK,CAAA;QAEvB,oBAAe,GAAG,IAAI,CAAA;QACtB,4BAAuB,GAAG,KAAK,CAAA;QAC/B,kBAAa,GAAG,EAAE,CAAA;QAClB,kBAAa,GAAG,KAAK,CAAA;QACrB,gBAAW,GAAG,CAAC,CAAA;QAIf,eAAU,GAAG,KAAK,CAAA;QAClB,cAAS,GAAG,KAAK,CAAA;QAOvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAA;QAC9B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,cAAc,EAAE;YAClB,IAAI,cAAc,CAAC,cAAc,IAAI,IAAI,EAAE;gBACzC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC,cAAc,CAAA;aACrD;YAED,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,aAAa,CAAA;YAElD,IAAI,cAAc,CAAC,cAAc,IAAI,IAAI,EAAE;gBACzC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC,cAAc,CAAA;aACrD;YAED,IAAI,cAAc,CAAC,sBAAsB,IAAI,IAAI,EAAE;gBACjD,IAAI,CAAC,uBAAuB,GAAG,cAAc,CAAC,sBAAsB,CAAA;aACrE;YAED,IAAI,cAAc,CAAC,YAAY,IAAI,IAAI,EAAE;gBACvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;aAC9D;YAED,IAAI,cAAc,CAAC,SAAS,IAAI,IAAI,EAAE;gBACpC,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,SAAS,CAAA;aAC3C;YAED,IAAI,cAAc,CAAC,YAAY,IAAI,IAAI,EAAE;gBACvC,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,YAAY,CAAA;aACjD;YAED,IAAI,cAAc,CAAC,UAAU,IAAI,IAAI,EAAE;gBACrC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,UAAU,CAAA;aAC7C;SACF;IACH,CAAC;IAEK,OAAO,CACX,UAAkB,EAClB,iBAA4C;;YAE5C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAA;QAC3E,CAAC;KAAA;IAEK,GAAG,CACP,UAAkB,EAClB,iBAA4C;;YAE5C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAA;QACvE,CAAC;KAAA;IAEK,GAAG,CACP,UAAkB,EAClB,iBAA4C;;YAE5C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAA;QAC1E,CAAC;KAAA;IAEK,IAAI,CACR,UAAkB,EAClB,IAAY,EACZ,iBAA4C;;YAE5C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAA;QACxE,CAAC;KAAA;IAEK,KAAK,CACT,UAAkB,EAClB,IAAY,EACZ,iBAA4C;;YAE5C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAA;QACzE,CAAC;KAAA;IAEK,GAAG,CACP,UAAkB,EAClB,IAAY,EACZ,iBAA4C;;YAE5C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAA;QACvE,CAAC;KAAA;IAEK,IAAI,CACR,UAAkB,EAClB,iBAA4C;;YAE5C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAA;QACxE,CAAC;KAAA;IAEK,UAAU,CACd,IAAY,EACZ,UAAkB,EAClB,MAA6B,EAC7B,iBAA4C;;YAE5C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAA;QAClE,CAAC;KAAA;IAED;;;OAGG;IACG,OAAO,CACX,UAAkB,EAClB,oBAA8C,EAAE;;YAEhD,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,2BAA2B,CAClE,iBAAiB,EACjB,OAAO,CAAC,MAAM,EACd,UAAU,CAAC,eAAe,CAC3B,CAAA;YACD,MAAM,GAAG,GAAuB,MAAM,IAAI,CAAC,GAAG,CAC5C,UAAU,EACV,iBAAiB,CAClB,CAAA;YACD,OAAO,IAAI,CAAC,gBAAgB,CAAI,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3D,CAAC;KAAA;IAEK,QAAQ,CACZ,UAAkB,EAClB,GAAQ,EACR,oBAA8C,EAAE;;YAEhD,MAAM,IAAI,GAAW,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACjD,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,2BAA2B,CAClE,iBAAiB,EACjB,OAAO,CAAC,MAAM,EACd,UAAU,CAAC,eAAe,CAC3B,CAAA;YACD,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,2BAA2B,CACvE,iBAAiB,EACjB,OAAO,CAAC,WAAW,EACnB,UAAU,CAAC,eAAe,CAC3B,CAAA;YACD,MAAM,GAAG,GAAuB,MAAM,IAAI,CAAC,IAAI,CAC7C,UAAU,EACV,IAAI,EACJ,iBAAiB,CAClB,CAAA;YACD,OAAO,IAAI,CAAC,gBAAgB,CAAI,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3D,CAAC;KAAA;IAEK,OAAO,CACX,UAAkB,EAClB,GAAQ,EACR,oBAA8C,EAAE;;YAEhD,MAAM,IAAI,GAAW,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACjD,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,2BAA2B,CAClE,iBAAiB,EACjB,OAAO,CAAC,MAAM,EACd,UAAU,CAAC,eAAe,CAC3B,CAAA;YACD,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,2BAA2B,CACvE,iBAAiB,EACjB,OAAO,CAAC,WAAW,EACnB,UAAU,CAAC,eAAe,CAC3B,CAAA;YACD,MAAM,GAAG,GAAuB,MAAM,IAAI,CAAC,GAAG,CAC5C,UAAU,EACV,IAAI,EACJ,iBAAiB,CAClB,CAAA;YACD,OAAO,IAAI,CAAC,gBAAgB,CAAI,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3D,CAAC;KAAA;IAEK,SAAS,CACb,UAAkB,EAClB,GAAQ,EACR,oBAA8C,EAAE;;YAEhD,MAAM,IAAI,GAAW,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACjD,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,2BAA2B,CAClE,iBAAiB,EACjB,OAAO,CAAC,MAAM,EACd,UAAU,CAAC,eAAe,CAC3B,CAAA;YACD,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,2BAA2B,CACvE,iBAAiB,EACjB,OAAO,CAAC,WAAW,EACnB,UAAU,CAAC,eAAe,CAC3B,CAAA;YACD,MAAM,GAAG,GAAuB,MAAM,IAAI,CAAC,KAAK,CAC9C,UAAU,EACV,IAAI,EACJ,iBAAiB,CAClB,CAAA;YACD,OAAO,IAAI,CAAC,gBAAgB,CAAI,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3D,CAAC;KAAA;IAED;;;;OAIG;IACG,OAAO,CACX,IAAY,EACZ,UAAkB,EAClB,IAA2C,EAC3C,OAAkC;;YAElC,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;aACrD;YAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAA;YACrC,IAAI,IAAI,GAAoB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;YAE1E,oEAAoE;YACpE,MAAM,QAAQ,GACZ,IAAI,CAAC,aAAa,IAAI,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACrD,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC;gBACtB,CAAC,CAAC,CAAC,CAAA;YACP,IAAI,QAAQ,GAAG,CAAC,CAAA;YAEhB,IAAI,QAAwC,CAAA;YAC5C,GAAG;gBACD,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBAE5C,4CAA4C;gBAC5C,IACE,QAAQ;oBACR,QAAQ,CAAC,OAAO;oBAChB,QAAQ,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,YAAY,EACtD;oBACA,IAAI,qBAAqD,CAAA;oBAEzD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACnC,IAAI,OAAO,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE;4BAC7C,qBAAqB,GAAG,OAAO,CAAA;4BAC/B,MAAK;yBACN;qBACF;oBAED,IAAI,qBAAqB,EAAE;wBACzB,OAAO,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;qBACpE;yBAAM;wBACL,+EAA+E;wBAC/E,yCAAyC;wBACzC,OAAO,QAAQ,CAAA;qBAChB;iBACF;gBAED,IAAI,kBAAkB,GAAW,IAAI,CAAC,aAAa,CAAA;gBACnD,OACE,QAAQ,CAAC,OAAO,CAAC,UAAU;oBAC3B,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;oBACvD,IAAI,CAAC,eAAe;oBACpB,kBAAkB,GAAG,CAAC,EACtB;oBACA,MAAM,WAAW,GACf,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;oBACtC,IAAI,CAAC,WAAW,EAAE;wBAChB,kDAAkD;wBAClD,MAAK;qBACN;oBACD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAA;oBAC9C,IACE,SAAS,CAAC,QAAQ,KAAK,QAAQ;wBAC/B,SAAS,CAAC,QAAQ,KAAK,iBAAiB,CAAC,QAAQ;wBACjD,CAAC,IAAI,CAAC,uBAAuB,EAC7B;wBACA,MAAM,IAAI,KAAK,CACb,8KAA8K,CAC/K,CAAA;qBACF;oBAED,qEAAqE;oBACrE,mCAAmC;oBACnC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAA;oBAEzB,mEAAmE;oBACnE,IAAI,iBAAiB,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,EAAE;wBACrD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;4BAC5B,oCAAoC;4BACpC,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,eAAe,EAAE;gCAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;6BACvB;yBACF;qBACF;oBAED,kDAAkD;oBAClD,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAA;oBAC7D,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;oBAC5C,kBAAkB,EAAE,CAAA;iBACrB;gBAED,IACE,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;oBAC5B,CAAC,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAC7D;oBACA,8DAA8D;oBAC9D,OAAO,QAAQ,CAAA;iBAChB;gBAED,QAAQ,IAAI,CAAC,CAAA;gBAEb,IAAI,QAAQ,GAAG,QAAQ,EAAE;oBACvB,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAA;oBACzB,MAAM,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAA;iBAChD;aACF,QAAQ,QAAQ,GAAG,QAAQ,EAAC;YAE7B,OAAO,QAAQ,CAAA;QACjB,CAAC;KAAA;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;SACtB;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACvB,CAAC;IAED;;;;OAIG;IACG,UAAU,CACd,IAAqB,EACrB,IAA2C;;YAE3C,OAAO,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACzD,SAAS,iBAAiB,CAAC,GAAW,EAAE,GAAwB;oBAC9D,IAAI,GAAG,EAAE;wBACP,MAAM,CAAC,GAAG,CAAC,CAAA;qBACZ;yBAAM,IAAI,CAAC,GAAG,EAAE;wBACf,qDAAqD;wBACrD,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAA;qBACnC;yBAAM;wBACL,OAAO,CAAC,GAAG,CAAC,CAAA;qBACb;gBACH,CAAC;gBAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAA;YAC5D,CAAC,CAAC,CAAA;QACJ,CAAC;KAAA;IAED;;;;;OAKG;IACH,sBAAsB,CACpB,IAAqB,EACrB,IAA2C,EAC3C,QAAyD;QAEzD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACzB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAA;aAC1B;YACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;SACzE;QAED,IAAI,cAAc,GAAG,KAAK,CAAA;QAC1B,SAAS,YAAY,CAAC,GAAW,EAAE,GAAwB;YACzD,IAAI,CAAC,cAAc,EAAE;gBACnB,cAAc,GAAG,IAAI,CAAA;gBACrB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;aACnB;QACH,CAAC;QAED,MAAM,GAAG,GAAuB,IAAI,CAAC,UAAU,CAAC,OAAO,CACrD,IAAI,CAAC,OAAO,EACZ,CAAC,GAAyB,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAuB,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAA;YAC3D,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC9B,CAAC,CACF,CAAA;QAED,IAAI,MAAkB,CAAA;QACtB,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;YACtB,MAAM,GAAG,IAAI,CAAA;QACf,CAAC,CAAC,CAAA;QAEF,wEAAwE;QACxE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE;YACpD,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,GAAG,EAAE,CAAA;aACb;YACD,YAAY,CAAC,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;QAEF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG;YAC3B,8BAA8B;YAC9B,0BAA0B;YAC1B,YAAY,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;QAEF,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACpC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;SACxB;QAED,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE;gBACf,GAAG,CAAC,GAAG,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACf;aAAM;YACL,GAAG,CAAC,GAAG,EAAE,CAAA;SACV;IACH,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,SAAiB;QACxB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IAClC,CAAC;IAED,kBAAkB,CAAC,SAAiB;QAClC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;QACpC,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QAC1C,MAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAA;QAC9C,IAAI,CAAC,QAAQ,EAAE;YACb,OAAM;SACP;QAED,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC3D,CAAC;IAEO,eAAe,CACrB,MAAc,EACd,UAAe,EACf,OAAkC;QAElC,MAAM,IAAI,GAAqC,EAAE,CAAA;QAEjD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAA;QAC3B,MAAM,QAAQ,GAAY,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAA;QAC9D,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;QACzC,MAAM,WAAW,GAAW,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAE/C,IAAI,CAAC,OAAO,GAAwB,EAAE,CAAA;QACtC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAA;QAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI;YACrC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC/B,CAAC,CAAC,WAAW,CAAA;QACf,IAAI,CAAC,OAAO,CAAC,IAAI;YACf,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;QACjE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;QAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAClD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAA;SACpD;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAEnD,+CAA+C;QAC/C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACnC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aACrC;SACF;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,aAAa,CACnB,OAAkC;QAElC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACtD,OAAO,MAAM,CAAC,MAAM,CAClB,EAAE,EACF,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAC1C,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,CAC7B,CAAA;SACF;QAED,OAAO,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;IACrC,CAAC;IAEO,2BAA2B,CACjC,iBAA2C,EAC3C,MAAc,EACd,QAAgB;QAEhB,IAAI,YAAgC,CAAA;QACpC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACtD,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;SAClE;QACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,YAAY,IAAI,QAAQ,CAAA;IAC9D,CAAC;IAEO,SAAS,CAAC,SAAc;QAC9B,IAAI,KAAK,CAAA;QACT,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QAC1C,MAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAA;QAE9C,IAAI,IAAI,CAAC,UAAU,IAAI,QAAQ,EAAE;YAC/B,KAAK,GAAG,IAAI,CAAC,WAAW,CAAA;SACzB;QAED,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE;YAChC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;SACpB;QAED,+CAA+C;QAC/C,IAAI,KAAK,EAAE;YACT,OAAO,KAAK,CAAA;SACb;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAA;QAChD,IAAI,UAAU,GAAG,GAAG,CAAA;QACpB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAA;SAC3E;QAED,sGAAsG;QACtG,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE;YACjC,MAAM,YAAY,GAAG;gBACnB,UAAU;gBACV,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,KAAK,kCACA,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI;oBAC9C,SAAS,EAAE,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE;iBACvD,CAAC,KACF,IAAI,EAAE,QAAQ,CAAC,QAAQ,EACvB,IAAI,EAAE,QAAQ,CAAC,IAAI,GACpB;aACF,CAAA;YAED,IAAI,WAAqB,CAAA;YACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAA;YAChD,IAAI,QAAQ,EAAE;gBACZ,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAA;aACvE;iBAAM;gBACL,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAA;aACrE;YAED,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;YACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;SACzB;QAED,wFAAwF;QACxF,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE;YAC7B,MAAM,OAAO,GAAG,EAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAC,CAAA;YACxD,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACrE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;SACpB;QAED,gFAAgF;QAChF,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAA;SACxD;QAED,IAAI,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;YACpC,wGAAwG;YACxG,kFAAkF;YAClF,mDAAmD;YACnD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE;gBACjD,kBAAkB,EAAE,KAAK;aAC1B,CAAC,CAAA;SACH;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,wBAAwB,CAAC,SAAc,EAAE,QAAa;QAC5D,IAAI,UAAU,CAAA;QAEd,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAA;SACxC;QAED,+CAA+C;QAC/C,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAA;SAClB;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAA;QAChD,UAAU,GAAG,IAAI,mBAAU,iBACzB,GAAG,EAAE,QAAQ,CAAC,IAAI,EAClB,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IACjC,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI;YAC9C,KAAK,EAAE,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE;SACnD,CAAC,EACF,CAAA;QACF,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAA;QAEvC,IAAI,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;YACpC,wGAAwG;YACxG,kFAAkF;YAClF,mDAAmD;YACnD,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE;gBACtE,kBAAkB,EAAE,KAAK;aAC1B,CAAC,CAAA;SACH;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAEa,0BAA0B,CAAC,WAAmB;;YAC1D,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAA;YAC9D,MAAM,EAAE,GAAW,2BAA2B,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;YACzE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QAChE,CAAC;KAAA;IAEa,gBAAgB,CAC5B,GAAuB,EACvB,OAA4B;;YAE5B,OAAO,IAAI,OAAO,CAAuB,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gBACjE,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAA;gBAE9C,MAAM,QAAQ,GAAyB;oBACrC,UAAU;oBACV,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,EAAE;iBACZ,CAAA;gBAED,uCAAuC;gBACvC,IAAI,UAAU,KAAK,SAAS,CAAC,QAAQ,EAAE;oBACrC,OAAO,CAAC,QAAQ,CAAC,CAAA;iBAClB;gBAED,+BAA+B;gBAE/B,SAAS,oBAAoB,CAAC,GAAQ,EAAE,KAAU;oBAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;wBAC7B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;wBACzB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;4BACvB,OAAO,CAAC,CAAA;yBACT;qBACF;oBAED,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,GAAQ,CAAA;gBACZ,IAAI,QAA4B,CAAA;gBAEhC,IAAI;oBACF,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAA;oBAC/B,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wBACnC,IAAI,OAAO,IAAI,OAAO,CAAC,gBAAgB,EAAE;4BACvC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAA;yBACjD;6BAAM;4BACL,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;yBAC3B;wBAED,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAA;qBACtB;oBAED,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAA;iBACvC;gBAAC,OAAO,GAAG,EAAE;oBACZ,iEAAiE;iBAClE;gBAED,yDAAyD;gBACzD,IAAI,UAAU,GAAG,GAAG,EAAE;oBACpB,IAAI,GAAW,CAAA;oBAEf,0DAA0D;oBAC1D,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE;wBACtB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAA;qBAClB;yBAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1C,yEAAyE;wBACzE,GAAG,GAAG,QAAQ,CAAA;qBACf;yBAAM;wBACL,GAAG,GAAG,oBAAoB,UAAU,GAAG,CAAA;qBACxC;oBAED,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;oBAChD,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;oBAE5B,MAAM,CAAC,GAAG,CAAC,CAAA;iBACZ;qBAAM;oBACL,OAAO,CAAC,QAAQ,CAAC,CAAA;iBAClB;YACH,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;CACF;AAhsBD,gCAgsBC;AAED,MAAM,aAAa,GAAG,CAAC,GAA2B,EAAO,EAAE,CACzD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/interfaces.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/interfaces.d.ts
deleted file mode 100644
index 775ced9..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/interfaces.d.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-/// <reference types="node" />
-/// <reference types="node" />
-/// <reference types="node" />
-import * as http from 'http';
-import * as https from 'https';
-import { HttpClientResponse } from './index';
-export interface HttpClient {
-    options(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    get(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    del(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    post(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    patch(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    put(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
-    requestRaw(info: RequestInfo, data: string | NodeJS.ReadableStream): Promise<HttpClientResponse>;
-    requestRawWithCallback(info: RequestInfo, data: string | NodeJS.ReadableStream, onResult: (err?: Error, res?: HttpClientResponse) => void): void;
-}
-export interface RequestHandler {
-    prepareRequest(options: http.RequestOptions): void;
-    canHandleAuthentication(response: HttpClientResponse): boolean;
-    handleAuthentication(httpClient: HttpClient, requestInfo: RequestInfo, data: string | NodeJS.ReadableStream | null): Promise<HttpClientResponse>;
-}
-export interface RequestInfo {
-    options: http.RequestOptions;
-    parsedUrl: URL;
-    httpModule: typeof http | typeof https;
-}
-export interface RequestOptions {
-    headers?: http.OutgoingHttpHeaders;
-    socketTimeout?: number;
-    ignoreSslError?: boolean;
-    allowRedirects?: boolean;
-    allowRedirectDowngrade?: boolean;
-    maxRedirects?: number;
-    maxSockets?: number;
-    keepAlive?: boolean;
-    deserializeDates?: boolean;
-    allowRetries?: boolean;
-    maxRetries?: number;
-}
-export interface TypedResponse<T> {
-    statusCode: number;
-    result: T | null;
-    headers: http.IncomingHttpHeaders;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/interfaces.js b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/interfaces.js
deleted file mode 100644
index db91911..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/interfaces.js
+++ /dev/null
@@ -1,3 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=interfaces.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/interfaces.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/interfaces.js.map
deleted file mode 100644
index 8fb5f7d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/interfaces.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/proxy.d.ts b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/proxy.d.ts
deleted file mode 100644
index 4599865..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/proxy.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export declare function getProxyUrl(reqUrl: URL): URL | undefined;
-export declare function checkBypass(reqUrl: URL): boolean;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/proxy.js b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/proxy.js
deleted file mode 100644
index d9c43ad..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/proxy.js
+++ /dev/null
@@ -1,82 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.checkBypass = exports.getProxyUrl = void 0;
-function getProxyUrl(reqUrl) {
-    const usingSsl = reqUrl.protocol === 'https:';
-    if (checkBypass(reqUrl)) {
-        return undefined;
-    }
-    const proxyVar = (() => {
-        if (usingSsl) {
-            return process.env['https_proxy'] || process.env['HTTPS_PROXY'];
-        }
-        else {
-            return process.env['http_proxy'] || process.env['HTTP_PROXY'];
-        }
-    })();
-    if (proxyVar) {
-        try {
-            return new URL(proxyVar);
-        }
-        catch (_a) {
-            if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://'))
-                return new URL(`http://${proxyVar}`);
-        }
-    }
-    else {
-        return undefined;
-    }
-}
-exports.getProxyUrl = getProxyUrl;
-function checkBypass(reqUrl) {
-    if (!reqUrl.hostname) {
-        return false;
-    }
-    const reqHost = reqUrl.hostname;
-    if (isLoopbackAddress(reqHost)) {
-        return true;
-    }
-    const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';
-    if (!noProxy) {
-        return false;
-    }
-    // Determine the request port
-    let reqPort;
-    if (reqUrl.port) {
-        reqPort = Number(reqUrl.port);
-    }
-    else if (reqUrl.protocol === 'http:') {
-        reqPort = 80;
-    }
-    else if (reqUrl.protocol === 'https:') {
-        reqPort = 443;
-    }
-    // Format the request hostname and hostname with port
-    const upperReqHosts = [reqUrl.hostname.toUpperCase()];
-    if (typeof reqPort === 'number') {
-        upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
-    }
-    // Compare request host against noproxy
-    for (const upperNoProxyItem of noProxy
-        .split(',')
-        .map(x => x.trim().toUpperCase())
-        .filter(x => x)) {
-        if (upperNoProxyItem === '*' ||
-            upperReqHosts.some(x => x === upperNoProxyItem ||
-                x.endsWith(`.${upperNoProxyItem}`) ||
-                (upperNoProxyItem.startsWith('.') &&
-                    x.endsWith(`${upperNoProxyItem}`)))) {
-            return true;
-        }
-    }
-    return false;
-}
-exports.checkBypass = checkBypass;
-function isLoopbackAddress(host) {
-    const hostLower = host.toLowerCase();
-    return (hostLower === 'localhost' ||
-        hostLower.startsWith('127.') ||
-        hostLower.startsWith('[::1]') ||
-        hostLower.startsWith('[0:0:0:0:0:0:0:1]'));
-}
-//# sourceMappingURL=proxy.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/proxy.js.map b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/proxy.js.map
deleted file mode 100644
index 585c17d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/lib/proxy.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":";;;AAAA,SAAgB,WAAW,CAAC,MAAW;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAA;IAE7C,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;QACvB,OAAO,SAAS,CAAA;KACjB;IAED,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI,QAAQ,EAAE;YACZ,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;SAChE;aAAM;YACL,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;SAC9D;IACH,CAAC,CAAC,EAAE,CAAA;IAEJ,IAAI,QAAQ,EAAE;QACZ,IAAI;YACF,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;SACzB;QAAC,WAAM;YACN,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC;gBACrE,OAAO,IAAI,GAAG,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAA;SACvC;KACF;SAAM;QACL,OAAO,SAAS,CAAA;KACjB;AACH,CAAC;AAzBD,kCAyBC;AAED,SAAgB,WAAW,CAAC,MAAW;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QACpB,OAAO,KAAK,CAAA;KACb;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAA;IAC/B,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;QAC9B,OAAO,IAAI,CAAA;KACZ;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;IACxE,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,KAAK,CAAA;KACb;IAED,6BAA6B;IAC7B,IAAI,OAA2B,CAAA;IAC/B,IAAI,MAAM,CAAC,IAAI,EAAE;QACf,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;KAC9B;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE;QACtC,OAAO,GAAG,EAAE,CAAA;KACb;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE;QACvC,OAAO,GAAG,GAAG,CAAA;KACd;IAED,qDAAqD;IACrD,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IACrD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAA;KACrD;IAED,uCAAuC;IACvC,KAAK,MAAM,gBAAgB,IAAI,OAAO;SACnC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACjB,IACE,gBAAgB,KAAK,GAAG;YACxB,aAAa,CAAC,IAAI,CAChB,CAAC,CAAC,EAAE,CACF,CAAC,KAAK,gBAAgB;gBACtB,CAAC,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBAClC,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC;oBAC/B,CAAC,CAAC,QAAQ,CAAC,GAAG,gBAAgB,EAAE,CAAC,CAAC,CACvC,EACD;YACA,OAAO,IAAI,CAAA;SACZ;KACF;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAnDD,kCAmDC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IACpC,OAAO,CACL,SAAS,KAAK,WAAW;QACzB,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;QAC5B,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAC7B,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAC1C,CAAA;AACH,CAAC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/package.json b/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/package.json
deleted file mode 100644
index ed13437..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@actions/http-client/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "name": "@actions/http-client",
-  "version": "2.2.0",
-  "description": "Actions Http Client",
-  "keywords": [
-    "github",
-    "actions",
-    "http"
-  ],
-  "homepage": "https://github.com/actions/toolkit/tree/main/packages/http-client",
-  "license": "MIT",
-  "main": "lib/index.js",
-  "types": "lib/index.d.ts",
-  "directories": {
-    "lib": "lib",
-    "test": "__tests__"
-  },
-  "files": [
-    "lib",
-    "!.DS_Store"
-  ],
-  "publishConfig": {
-    "access": "public"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/actions/toolkit.git",
-    "directory": "packages/http-client"
-  },
-  "scripts": {
-    "audit-moderate": "npm install && npm audit --json --audit-level=moderate > audit.json",
-    "test": "echo \"Error: run tests from root\" && exit 1",
-    "build": "tsc",
-    "format": "prettier --write **/*.ts",
-    "format-check": "prettier --check **/*.ts",
-    "tsc": "tsc"
-  },
-  "bugs": {
-    "url": "https://github.com/actions/toolkit/issues"
-  },
-  "devDependencies": {
-    "@types/node": "20.7.1",
-    "@types/tunnel": "0.0.3",
-    "proxy": "^2.1.1",
-    "@types/proxy": "^1.0.1"
-  },
-  "dependencies": {
-    "tunnel": "^0.0.6",
-    "undici": "^5.25.4"
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/LICENSE
deleted file mode 100644
index 290762e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright Brian White. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/README.md b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/README.md
deleted file mode 100644
index c74e618..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/README.md
+++ /dev/null
@@ -1,271 +0,0 @@
-# busboy
-
-<div align="center">
-
-[![Build Status](https://github.com/fastify/busboy/workflows/ci/badge.svg)](https://github.com/fastify/busboy/actions)
-[![Coverage Status](https://coveralls.io/repos/fastify/busboy/badge.svg?branch=master)](https://coveralls.io/r/fastify/busboy?branch=master)
-[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://standardjs.com/)
-[![Security Responsible Disclosure](https://img.shields.io/badge/Security-Responsible%20Disclosure-yellow.svg)](https://github.com/nodejs/security-wg/blob/HEAD/processes/responsible_disclosure_template.md)
-
-</div>
-
-<div align="center">
-
-[![NPM version](https://img.shields.io/npm/v/@fastify/busboy.svg?style=flat)](https://www.npmjs.com/package/@fastify/busboy)
-[![NPM downloads](https://img.shields.io/npm/dm/@fastify/busboy.svg?style=flat)](https://www.npmjs.com/package/@fastify/busboy)
-
-</div>
-
-Description
-===========
-
-A Node.js module for parsing incoming HTML form data.
-
-This is an officially supported fork by [fastify](https://github.com/fastify/) organization of the amazing library [originally created](https://github.com/mscdex/busboy) by Brian White,
-aimed at addressing long-standing issues with it.
-
-Benchmark (Mean time for 500 Kb payload, 2000 cycles, 1000 cycle warmup):
-
-| Library               | Version | Mean time in nanoseconds (less is better) |
-|-----------------------|---------|-------------------------------------------|
-| busboy                | 0.3.1   | `340114`                                  |
-| @fastify/busboy       | 1.0.0   | `270984`                                  |
-
-[Changelog](https://github.com/fastify/busboy/blob/master/CHANGELOG.md) since busboy 0.31.
-
-Requirements
-============
-
-* [Node.js](http://nodejs.org/) 10+
-
-
-Install
-=======
-
-    npm i @fastify/busboy
-
-
-Examples
-========
-
-* Parsing (multipart) with default options:
-
-```javascript
-const http = require('node:http');
-const { inspect } = require('node:util');
-const Busboy = require('busboy');
-
-http.createServer((req, res) => {
-  if (req.method === 'POST') {
-    const busboy = new Busboy({ headers: req.headers });
-    busboy.on('file', (fieldname, file, filename, encoding, mimetype) => {
-      console.log(`File [${fieldname}]: filename: ${filename}, encoding: ${encoding}, mimetype: ${mimetype}`);
-      file.on('data', data => {
-        console.log(`File [${fieldname}] got ${data.length} bytes`);
-      });
-      file.on('end', () => {
-        console.log(`File [${fieldname}] Finished`);
-      });
-    });
-    busboy.on('field', (fieldname, val, fieldnameTruncated, valTruncated, encoding, mimetype) => {
-      console.log(`Field [${fieldname}]: value: ${inspect(val)}`);
-    });
-    busboy.on('finish', () => {
-      console.log('Done parsing form!');
-      res.writeHead(303, { Connection: 'close', Location: '/' });
-      res.end();
-    });
-    req.pipe(busboy);
-  } else if (req.method === 'GET') {
-    res.writeHead(200, { Connection: 'close' });
-    res.end(`<html><head></head><body>
-               <form method="POST" enctype="multipart/form-data">
-                <input type="text" name="textfield"><br>
-                <input type="file" name="filefield"><br>
-                <input type="submit">
-              </form>
-            </body></html>`);
-  }
-}).listen(8000, () => {
-  console.log('Listening for requests');
-});
-
-// Example output, using http://nodejs.org/images/ryan-speaker.jpg as the file:
-//
-// Listening for requests
-// File [filefield]: filename: ryan-speaker.jpg, encoding: binary
-// File [filefield] got 11971 bytes
-// Field [textfield]: value: 'testing! :-)'
-// File [filefield] Finished
-// Done parsing form!
-```
-
-* Save all incoming files to disk:
-
-```javascript
-const http = require('node:http');
-const path = require('node:path');
-const os = require('node:os');
-const fs = require('node:fs');
-
-const Busboy = require('busboy');
-
-http.createServer(function(req, res) {
-  if (req.method === 'POST') {
-    const busboy = new Busboy({ headers: req.headers });
-    busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
-      var saveTo = path.join(os.tmpdir(), path.basename(fieldname));
-      file.pipe(fs.createWriteStream(saveTo));
-    });
-    busboy.on('finish', function() {
-      res.writeHead(200, { 'Connection': 'close' });
-      res.end("That's all folks!");
-    });
-    return req.pipe(busboy);
-  }
-  res.writeHead(404);
-  res.end();
-}).listen(8000, function() {
-  console.log('Listening for requests');
-});
-```
-
-* Parsing (urlencoded) with default options:
-
-```javascript
-const http = require('node:http');
-const { inspect } = require('node:util');
-
-const Busboy = require('busboy');
-
-http.createServer(function(req, res) {
-  if (req.method === 'POST') {
-    const busboy = new Busboy({ headers: req.headers });
-    busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
-      console.log('File [' + fieldname + ']: filename: ' + filename);
-      file.on('data', function(data) {
-        console.log('File [' + fieldname + '] got ' + data.length + ' bytes');
-      });
-      file.on('end', function() {
-        console.log('File [' + fieldname + '] Finished');
-      });
-    });
-    busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated) {
-      console.log('Field [' + fieldname + ']: value: ' + inspect(val));
-    });
-    busboy.on('finish', function() {
-      console.log('Done parsing form!');
-      res.writeHead(303, { Connection: 'close', Location: '/' });
-      res.end();
-    });
-    req.pipe(busboy);
-  } else if (req.method === 'GET') {
-    res.writeHead(200, { Connection: 'close' });
-    res.end('<html><head></head><body>\
-               <form method="POST">\
-                <input type="text" name="textfield"><br />\
-                <select name="selectfield">\
-                  <option value="1">1</option>\
-                  <option value="10">10</option>\
-                  <option value="100">100</option>\
-                  <option value="9001">9001</option>\
-                </select><br />\
-                <input type="checkbox" name="checkfield">Node.js rules!<br />\
-                <input type="submit">\
-              </form>\
-            </body></html>');
-  }
-}).listen(8000, function() {
-  console.log('Listening for requests');
-});
-
-// Example output:
-//
-// Listening for requests
-// Field [textfield]: value: 'testing! :-)'
-// Field [selectfield]: value: '9001'
-// Field [checkfield]: value: 'on'
-// Done parsing form!
-```
-
-
-API
-===
-
-_Busboy_ is a _Writable_ stream
-
-Busboy (special) events
------------------------
-
-* **file**(< _string_ >fieldname, < _ReadableStream_ >stream, < _string_ >filename, < _string_ >transferEncoding, < _string_ >mimeType) - Emitted for each new file form field found. `transferEncoding` contains the 'Content-Transfer-Encoding' value for the file stream. `mimeType` contains the 'Content-Type' value for the file stream.
-    * Note: if you listen for this event, you should always handle the `stream` no matter if you care about the file contents or not (e.g. you can simply just do `stream.resume();` if you want to discard the contents), otherwise the 'finish' event will never fire on the Busboy instance. However, if you don't care about **any** incoming files, you can simply not listen for the 'file' event at all and any/all files will be automatically and safely discarded (these discarded files do still count towards `files` and `parts` limits).
-    * If a configured file size limit was reached, `stream` will both have a boolean property `truncated` (best checked at the end of the stream) and emit a 'limit' event to notify you when this happens.
-    * The property `bytesRead` informs about the number of bytes that have been read so far.
-
-* **field**(< _string_ >fieldname, < _string_ >value, < _boolean_ >fieldnameTruncated, < _boolean_ >valueTruncated, < _string_ >transferEncoding, < _string_ >mimeType) - Emitted for each new non-file field found.
-
-* **partsLimit**() - Emitted when specified `parts` limit has been reached. No more 'file' or 'field' events will be emitted.
-
-* **filesLimit**() - Emitted when specified `files` limit has been reached. No more 'file' events will be emitted.
-
-* **fieldsLimit**() - Emitted when specified `fields` limit has been reached. No more 'field' events will be emitted.
-
-
-Busboy methods
---------------
-
-* **(constructor)**(< _object_ >config) - Creates and returns a new Busboy instance.
-
-    * The constructor takes the following valid `config` settings:
-
-        * **headers** - _object_ - These are the HTTP headers of the incoming request, which are used by individual parsers.
-
-        * **autoDestroy** - _boolean_ - Whether this stream should automatically call .destroy() on itself after ending. (Default: false).
-
-        * **highWaterMark** - _integer_ - highWaterMark to use for this Busboy instance (Default: WritableStream default).
-
-        * **fileHwm** - _integer_ - highWaterMark to use for file streams (Default: ReadableStream default).
-
-        * **defCharset** - _string_ - Default character set to use when one isn't defined (Default: 'utf8').
-
-        * **preservePath** - _boolean_ - If paths in the multipart 'filename' field shall be preserved. (Default: false).
-
-        * **isPartAFile** - __function__ - Use this function to override the default file detection functionality. It has following parameters:
-
-            * fieldName - __string__ The name of the field.
-
-            * contentType - __string__ The content-type of the part, e.g. `text/plain`, `image/jpeg`, `application/octet-stream`
-
-            * fileName - __string__ The name of a file supplied by the part.
-
-          (Default: `(fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined)`)
-
-        * **limits** - _object_ - Various limits on incoming data. Valid properties are:
-
-            * **fieldNameSize** - _integer_ - Max field name size (in bytes) (Default: 100 bytes).
-
-            * **fieldSize** - _integer_ - Max field value size (in bytes) (Default: 1 MiB, which is 1024 x 1024 bytes).
-
-            * **fields** - _integer_ - Max number of non-file fields (Default: Infinity).
-
-            * **fileSize** - _integer_ - For multipart forms, the max file size (in bytes) (Default: Infinity).
-
-            * **files** - _integer_ - For multipart forms, the max number of file fields (Default: Infinity).
-
-            * **parts** - _integer_ - For multipart forms, the max number of parts (fields + files) (Default: Infinity).
-
-            * **headerPairs** - _integer_ - For multipart forms, the max number of header key=>value pairs to parse **Default:** 2000
-
-            * **headerSize** - _integer_ - For multipart forms, the max size of a multipart header **Default:** 81920.
-
-    * The constructor can throw errors:
-
-        * **Busboy expected an options-Object.** - Busboy expected an Object as first parameters.
-
-        * **Busboy expected an options-Object with headers-attribute.** - The first parameter is lacking of a headers-attribute.
-
-        * **Limit $limit is not a valid number** - Busboy expected the desired limit to be of type number. Busboy throws this Error to prevent a potential security issue by falling silently back to the Busboy-defaults. Potential source for this Error can be the direct use of environment variables without transforming them to the type number. 
-
-        * **Unsupported Content-Type.** - The `Content-Type` isn't one Busboy can parse.
-
-        * **Missing Content-Type-header.** - The provided headers don't include `Content-Type` at all.
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/LICENSE
deleted file mode 100644
index 290762e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright Brian White. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js
deleted file mode 100644
index 79da160..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js
+++ /dev/null
@@ -1,207 +0,0 @@
-'use strict'
-
-const WritableStream = require('node:stream').Writable
-const inherits = require('node:util').inherits
-
-const StreamSearch = require('../../streamsearch/sbmh')
-
-const PartStream = require('./PartStream')
-const HeaderParser = require('./HeaderParser')
-
-const DASH = 45
-const B_ONEDASH = Buffer.from('-')
-const B_CRLF = Buffer.from('\r\n')
-const EMPTY_FN = function () {}
-
-function Dicer (cfg) {
-  if (!(this instanceof Dicer)) { return new Dicer(cfg) }
-  WritableStream.call(this, cfg)
-
-  if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') }
-
-  if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined }
-
-  this._headerFirst = cfg.headerFirst
-
-  this._dashes = 0
-  this._parts = 0
-  this._finished = false
-  this._realFinish = false
-  this._isPreamble = true
-  this._justMatched = false
-  this._firstWrite = true
-  this._inHeader = true
-  this._part = undefined
-  this._cb = undefined
-  this._ignoreData = false
-  this._partOpts = { highWaterMark: cfg.partHwm }
-  this._pause = false
-
-  const self = this
-  this._hparser = new HeaderParser(cfg)
-  this._hparser.on('header', function (header) {
-    self._inHeader = false
-    self._part.emit('header', header)
-  })
-}
-inherits(Dicer, WritableStream)
-
-Dicer.prototype.emit = function (ev) {
-  if (ev === 'finish' && !this._realFinish) {
-    if (!this._finished) {
-      const self = this
-      process.nextTick(function () {
-        self.emit('error', new Error('Unexpected end of multipart data'))
-        if (self._part && !self._ignoreData) {
-          const type = (self._isPreamble ? 'Preamble' : 'Part')
-          self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data'))
-          self._part.push(null)
-          process.nextTick(function () {
-            self._realFinish = true
-            self.emit('finish')
-            self._realFinish = false
-          })
-          return
-        }
-        self._realFinish = true
-        self.emit('finish')
-        self._realFinish = false
-      })
-    }
-  } else { WritableStream.prototype.emit.apply(this, arguments) }
-}
-
-Dicer.prototype._write = function (data, encoding, cb) {
-  // ignore unexpected data (e.g. extra trailer data after finished)
-  if (!this._hparser && !this._bparser) { return cb() }
-
-  if (this._headerFirst && this._isPreamble) {
-    if (!this._part) {
-      this._part = new PartStream(this._partOpts)
-      if (this._events.preamble) { this.emit('preamble', this._part) } else { this._ignore() }
-    }
-    const r = this._hparser.push(data)
-    if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() }
-  }
-
-  // allows for "easier" testing
-  if (this._firstWrite) {
-    this._bparser.push(B_CRLF)
-    this._firstWrite = false
-  }
-
-  this._bparser.push(data)
-
-  if (this._pause) { this._cb = cb } else { cb() }
-}
-
-Dicer.prototype.reset = function () {
-  this._part = undefined
-  this._bparser = undefined
-  this._hparser = undefined
-}
-
-Dicer.prototype.setBoundary = function (boundary) {
-  const self = this
-  this._bparser = new StreamSearch('\r\n--' + boundary)
-  this._bparser.on('info', function (isMatch, data, start, end) {
-    self._oninfo(isMatch, data, start, end)
-  })
-}
-
-Dicer.prototype._ignore = function () {
-  if (this._part && !this._ignoreData) {
-    this._ignoreData = true
-    this._part.on('error', EMPTY_FN)
-    // we must perform some kind of read on the stream even though we are
-    // ignoring the data, otherwise node's Readable stream will not emit 'end'
-    // after pushing null to the stream
-    this._part.resume()
-  }
-}
-
-Dicer.prototype._oninfo = function (isMatch, data, start, end) {
-  let buf; const self = this; let i = 0; let r; let shouldWriteMore = true
-
-  if (!this._part && this._justMatched && data) {
-    while (this._dashes < 2 && (start + i) < end) {
-      if (data[start + i] === DASH) {
-        ++i
-        ++this._dashes
-      } else {
-        if (this._dashes) { buf = B_ONEDASH }
-        this._dashes = 0
-        break
-      }
-    }
-    if (this._dashes === 2) {
-      if ((start + i) < end && this._events.trailer) { this.emit('trailer', data.slice(start + i, end)) }
-      this.reset()
-      this._finished = true
-      // no more parts will be added
-      if (self._parts === 0) {
-        self._realFinish = true
-        self.emit('finish')
-        self._realFinish = false
-      }
-    }
-    if (this._dashes) { return }
-  }
-  if (this._justMatched) { this._justMatched = false }
-  if (!this._part) {
-    this._part = new PartStream(this._partOpts)
-    this._part._read = function (n) {
-      self._unpause()
-    }
-    if (this._isPreamble && this._events.preamble) { this.emit('preamble', this._part) } else if (this._isPreamble !== true && this._events.part) { this.emit('part', this._part) } else { this._ignore() }
-    if (!this._isPreamble) { this._inHeader = true }
-  }
-  if (data && start < end && !this._ignoreData) {
-    if (this._isPreamble || !this._inHeader) {
-      if (buf) { shouldWriteMore = this._part.push(buf) }
-      shouldWriteMore = this._part.push(data.slice(start, end))
-      if (!shouldWriteMore) { this._pause = true }
-    } else if (!this._isPreamble && this._inHeader) {
-      if (buf) { this._hparser.push(buf) }
-      r = this._hparser.push(data.slice(start, end))
-      if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) }
-    }
-  }
-  if (isMatch) {
-    this._hparser.reset()
-    if (this._isPreamble) { this._isPreamble = false } else {
-      if (start !== end) {
-        ++this._parts
-        this._part.on('end', function () {
-          if (--self._parts === 0) {
-            if (self._finished) {
-              self._realFinish = true
-              self.emit('finish')
-              self._realFinish = false
-            } else {
-              self._unpause()
-            }
-          }
-        })
-      }
-    }
-    this._part.push(null)
-    this._part = undefined
-    this._ignoreData = false
-    this._justMatched = true
-    this._dashes = 0
-  }
-}
-
-Dicer.prototype._unpause = function () {
-  if (!this._pause) { return }
-
-  this._pause = false
-  if (this._cb) {
-    const cb = this._cb
-    this._cb = undefined
-    cb()
-  }
-}
-
-module.exports = Dicer
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js
deleted file mode 100644
index 65f667b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js
+++ /dev/null
@@ -1,100 +0,0 @@
-'use strict'
-
-const EventEmitter = require('node:events').EventEmitter
-const inherits = require('node:util').inherits
-const getLimit = require('../../../lib/utils/getLimit')
-
-const StreamSearch = require('../../streamsearch/sbmh')
-
-const B_DCRLF = Buffer.from('\r\n\r\n')
-const RE_CRLF = /\r\n/g
-const RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/ // eslint-disable-line no-control-regex
-
-function HeaderParser (cfg) {
-  EventEmitter.call(this)
-
-  cfg = cfg || {}
-  const self = this
-  this.nread = 0
-  this.maxed = false
-  this.npairs = 0
-  this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000)
-  this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024)
-  this.buffer = ''
-  this.header = {}
-  this.finished = false
-  this.ss = new StreamSearch(B_DCRLF)
-  this.ss.on('info', function (isMatch, data, start, end) {
-    if (data && !self.maxed) {
-      if (self.nread + end - start >= self.maxHeaderSize) {
-        end = self.maxHeaderSize - self.nread + start
-        self.nread = self.maxHeaderSize
-        self.maxed = true
-      } else { self.nread += (end - start) }
-
-      self.buffer += data.toString('binary', start, end)
-    }
-    if (isMatch) { self._finish() }
-  })
-}
-inherits(HeaderParser, EventEmitter)
-
-HeaderParser.prototype.push = function (data) {
-  const r = this.ss.push(data)
-  if (this.finished) { return r }
-}
-
-HeaderParser.prototype.reset = function () {
-  this.finished = false
-  this.buffer = ''
-  this.header = {}
-  this.ss.reset()
-}
-
-HeaderParser.prototype._finish = function () {
-  if (this.buffer) { this._parseHeader() }
-  this.ss.matches = this.ss.maxMatches
-  const header = this.header
-  this.header = {}
-  this.buffer = ''
-  this.finished = true
-  this.nread = this.npairs = 0
-  this.maxed = false
-  this.emit('header', header)
-}
-
-HeaderParser.prototype._parseHeader = function () {
-  if (this.npairs === this.maxHeaderPairs) { return }
-
-  const lines = this.buffer.split(RE_CRLF)
-  const len = lines.length
-  let m, h
-
-  for (var i = 0; i < len; ++i) { // eslint-disable-line no-var
-    if (lines[i].length === 0) { continue }
-    if (lines[i][0] === '\t' || lines[i][0] === ' ') {
-      // folded header content
-      // RFC2822 says to just remove the CRLF and not the whitespace following
-      // it, so we follow the RFC and include the leading whitespace ...
-      if (h) {
-        this.header[h][this.header[h].length - 1] += lines[i]
-        continue
-      }
-    }
-
-    const posColon = lines[i].indexOf(':')
-    if (
-      posColon === -1 ||
-      posColon === 0
-    ) {
-      return
-    }
-    m = RE_HDR.exec(lines[i])
-    h = m[1].toLowerCase()
-    this.header[h] = this.header[h] || []
-    this.header[h].push((m[2] || ''))
-    if (++this.npairs === this.maxHeaderPairs) { break }
-  }
-}
-
-module.exports = HeaderParser
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js
deleted file mode 100644
index c91da1c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-const inherits = require('node:util').inherits
-const ReadableStream = require('node:stream').Readable
-
-function PartStream (opts) {
-  ReadableStream.call(this, opts)
-}
-inherits(PartStream, ReadableStream)
-
-PartStream.prototype._read = function (n) {}
-
-module.exports = PartStream
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/lib/dicer.d.ts b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/lib/dicer.d.ts
deleted file mode 100644
index 3c5b896..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/dicer/lib/dicer.d.ts
+++ /dev/null
@@ -1,164 +0,0 @@
-// Type definitions for dicer 0.2
-// Project: https://github.com/mscdex/dicer
-// Definitions by: BendingBender <https://github.com/BendingBender>
-// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-// TypeScript Version: 2.2
-/// <reference types="node" />
-
-import stream = require("stream");
-
-// tslint:disable:unified-signatures
-
-/**
- * A very fast streaming multipart parser for node.js.
- * Dicer is a WritableStream
- *
- * Dicer (special) events:
- * - on('finish', ()) - Emitted when all parts have been parsed and the Dicer instance has been ended.
- * - on('part', (stream: PartStream)) - Emitted when a new part has been found.
- * - on('preamble', (stream: PartStream)) - Emitted for preamble if you should happen to need it (can usually be ignored).
- * - on('trailer', (data: Buffer)) - Emitted when trailing data was found after the terminating boundary (as with the preamble, this can usually be ignored too).
- */
-export class Dicer extends stream.Writable {
-    /**
-     * Creates and returns a new Dicer instance with the following valid config settings:
-     *
-     * @param config The configuration to use
-     */
-    constructor(config: Dicer.Config);
-    /**
-     * Sets the boundary to use for parsing and performs some initialization needed for parsing.
-     * You should only need to use this if you set headerFirst to true in the constructor and are parsing the boundary from the preamble header.
-     *
-     * @param boundary The boundary to use
-     */
-    setBoundary(boundary: string): void;
-    addListener(event: "finish", listener: () => void): this;
-    addListener(event: "part", listener: (stream: Dicer.PartStream) => void): this;
-    addListener(event: "preamble", listener: (stream: Dicer.PartStream) => void): this;
-    addListener(event: "trailer", listener: (data: Buffer) => void): this;
-    addListener(event: "close", listener: () => void): this;
-    addListener(event: "drain", listener: () => void): this;
-    addListener(event: "error", listener: (err: Error) => void): this;
-    addListener(event: "pipe", listener: (src: stream.Readable) => void): this;
-    addListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
-    addListener(event: string, listener: (...args: any[]) => void): this;
-    on(event: "finish", listener: () => void): this;
-    on(event: "part", listener: (stream: Dicer.PartStream) => void): this;
-    on(event: "preamble", listener: (stream: Dicer.PartStream) => void): this;
-    on(event: "trailer", listener: (data: Buffer) => void): this;
-    on(event: "close", listener: () => void): this;
-    on(event: "drain", listener: () => void): this;
-    on(event: "error", listener: (err: Error) => void): this;
-    on(event: "pipe", listener: (src: stream.Readable) => void): this;
-    on(event: "unpipe", listener: (src: stream.Readable) => void): this;
-    on(event: string, listener: (...args: any[]) => void): this;
-    once(event: "finish", listener: () => void): this;
-    once(event: "part", listener: (stream: Dicer.PartStream) => void): this;
-    once(event: "preamble", listener: (stream: Dicer.PartStream) => void): this;
-    once(event: "trailer", listener: (data: Buffer) => void): this;
-    once(event: "close", listener: () => void): this;
-    once(event: "drain", listener: () => void): this;
-    once(event: "error", listener: (err: Error) => void): this;
-    once(event: "pipe", listener: (src: stream.Readable) => void): this;
-    once(event: "unpipe", listener: (src: stream.Readable) => void): this;
-    once(event: string, listener: (...args: any[]) => void): this;
-    prependListener(event: "finish", listener: () => void): this;
-    prependListener(event: "part", listener: (stream: Dicer.PartStream) => void): this;
-    prependListener(event: "preamble", listener: (stream: Dicer.PartStream) => void): this;
-    prependListener(event: "trailer", listener: (data: Buffer) => void): this;
-    prependListener(event: "close", listener: () => void): this;
-    prependListener(event: "drain", listener: () => void): this;
-    prependListener(event: "error", listener: (err: Error) => void): this;
-    prependListener(event: "pipe", listener: (src: stream.Readable) => void): this;
-    prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
-    prependListener(event: string, listener: (...args: any[]) => void): this;
-    prependOnceListener(event: "finish", listener: () => void): this;
-    prependOnceListener(event: "part", listener: (stream: Dicer.PartStream) => void): this;
-    prependOnceListener(event: "preamble", listener: (stream: Dicer.PartStream) => void): this;
-    prependOnceListener(event: "trailer", listener: (data: Buffer) => void): this;
-    prependOnceListener(event: "close", listener: () => void): this;
-    prependOnceListener(event: "drain", listener: () => void): this;
-    prependOnceListener(event: "error", listener: (err: Error) => void): this;
-    prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this;
-    prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
-    prependOnceListener(event: string, listener: (...args: any[]) => void): this;
-    removeListener(event: "finish", listener: () => void): this;
-    removeListener(event: "part", listener: (stream: Dicer.PartStream) => void): this;
-    removeListener(event: "preamble", listener: (stream: Dicer.PartStream) => void): this;
-    removeListener(event: "trailer", listener: (data: Buffer) => void): this;
-    removeListener(event: "close", listener: () => void): this;
-    removeListener(event: "drain", listener: () => void): this;
-    removeListener(event: "error", listener: (err: Error) => void): this;
-    removeListener(event: "pipe", listener: (src: stream.Readable) => void): this;
-    removeListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
-    removeListener(event: string, listener: (...args: any[]) => void): this;
-}
-
-declare namespace Dicer {
-    interface Config {
-        /**
-         * This is the boundary used to detect the beginning of a new part.
-         */
-        boundary?: string | undefined;
-        /**
-         * If true, preamble header parsing will be performed first.
-         */
-        headerFirst?: boolean | undefined;
-        /**
-         * The maximum number of header key=>value pairs to parse Default: 2000 (same as node's http).
-         */
-        maxHeaderPairs?: number | undefined;
-    }
-
-    /**
-     * PartStream is a _ReadableStream_
-     *
-     * PartStream (special) events:
-     * - on('header', (header: object)) - An object containing the header for this particular part. Each property value is an array of one or more string values.
-     */
-    interface PartStream extends stream.Readable {
-        addListener(event: "header", listener: (header: object) => void): this;
-        addListener(event: "close", listener: () => void): this;
-        addListener(event: "data", listener: (chunk: Buffer | string) => void): this;
-        addListener(event: "end", listener: () => void): this;
-        addListener(event: "readable", listener: () => void): this;
-        addListener(event: "error", listener: (err: Error) => void): this;
-        addListener(event: string, listener: (...args: any[]) => void): this;
-        on(event: "header", listener: (header: object) => void): this;
-        on(event: "close", listener: () => void): this;
-        on(event: "data", listener: (chunk: Buffer | string) => void): this;
-        on(event: "end", listener: () => void): this;
-        on(event: "readable", listener: () => void): this;
-        on(event: "error", listener: (err: Error) => void): this;
-        on(event: string, listener: (...args: any[]) => void): this;
-        once(event: "header", listener: (header: object) => void): this;
-        once(event: "close", listener: () => void): this;
-        once(event: "data", listener: (chunk: Buffer | string) => void): this;
-        once(event: "end", listener: () => void): this;
-        once(event: "readable", listener: () => void): this;
-        once(event: "error", listener: (err: Error) => void): this;
-        once(event: string, listener: (...args: any[]) => void): this;
-        prependListener(event: "header", listener: (header: object) => void): this;
-        prependListener(event: "close", listener: () => void): this;
-        prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;
-        prependListener(event: "end", listener: () => void): this;
-        prependListener(event: "readable", listener: () => void): this;
-        prependListener(event: "error", listener: (err: Error) => void): this;
-        prependListener(event: string, listener: (...args: any[]) => void): this;
-        prependOnceListener(event: "header", listener: (header: object) => void): this;
-        prependOnceListener(event: "close", listener: () => void): this;
-        prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;
-        prependOnceListener(event: "end", listener: () => void): this;
-        prependOnceListener(event: "readable", listener: () => void): this;
-        prependOnceListener(event: "error", listener: (err: Error) => void): this;
-        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
-        removeListener(event: "header", listener: (header: object) => void): this;
-        removeListener(event: "close", listener: () => void): this;
-        removeListener(event: "data", listener: (chunk: Buffer | string) => void): this;
-        removeListener(event: "end", listener: () => void): this;
-        removeListener(event: "readable", listener: () => void): this;
-        removeListener(event: "error", listener: (err: Error) => void): this;
-        removeListener(event: string, listener: (...args: any[]) => void): this;
-    }
-}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js
deleted file mode 100644
index b90c0e8..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js
+++ /dev/null
@@ -1,228 +0,0 @@
-'use strict'
-
-/**
- * Copyright Brian White. All rights reserved.
- *
- * @see https://github.com/mscdex/streamsearch
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation
- * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool
- */
-const EventEmitter = require('node:events').EventEmitter
-const inherits = require('node:util').inherits
-
-function SBMH (needle) {
-  if (typeof needle === 'string') {
-    needle = Buffer.from(needle)
-  }
-
-  if (!Buffer.isBuffer(needle)) {
-    throw new TypeError('The needle has to be a String or a Buffer.')
-  }
-
-  const needleLength = needle.length
-
-  if (needleLength === 0) {
-    throw new Error('The needle cannot be an empty String/Buffer.')
-  }
-
-  if (needleLength > 256) {
-    throw new Error('The needle cannot have a length bigger than 256.')
-  }
-
-  this.maxMatches = Infinity
-  this.matches = 0
-
-  this._occ = new Array(256)
-    .fill(needleLength) // Initialize occurrence table.
-  this._lookbehind_size = 0
-  this._needle = needle
-  this._bufpos = 0
-
-  this._lookbehind = Buffer.alloc(needleLength)
-
-  // Populate occurrence table with analysis of the needle,
-  // ignoring last letter.
-  for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var
-    this._occ[needle[i]] = needleLength - 1 - i
-  }
-}
-inherits(SBMH, EventEmitter)
-
-SBMH.prototype.reset = function () {
-  this._lookbehind_size = 0
-  this.matches = 0
-  this._bufpos = 0
-}
-
-SBMH.prototype.push = function (chunk, pos) {
-  if (!Buffer.isBuffer(chunk)) {
-    chunk = Buffer.from(chunk, 'binary')
-  }
-  const chlen = chunk.length
-  this._bufpos = pos || 0
-  let r
-  while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) }
-  return r
-}
-
-SBMH.prototype._sbmh_feed = function (data) {
-  const len = data.length
-  const needle = this._needle
-  const needleLength = needle.length
-  const lastNeedleChar = needle[needleLength - 1]
-
-  // Positive: points to a position in `data`
-  //           pos == 3 points to data[3]
-  // Negative: points to a position in the lookbehind buffer
-  //           pos == -2 points to lookbehind[lookbehind_size - 2]
-  let pos = -this._lookbehind_size
-  let ch
-
-  if (pos < 0) {
-    // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool
-    // search with character lookup code that considers both the
-    // lookbehind buffer and the current round's haystack data.
-    //
-    // Loop until
-    //   there is a match.
-    // or until
-    //   we've moved past the position that requires the
-    //   lookbehind buffer. In this case we switch to the
-    //   optimized loop.
-    // or until
-    //   the character to look at lies outside the haystack.
-    while (pos < 0 && pos <= len - needleLength) {
-      ch = this._sbmh_lookup_char(data, pos + needleLength - 1)
-
-      if (
-        ch === lastNeedleChar &&
-        this._sbmh_memcmp(data, pos, needleLength - 1)
-      ) {
-        this._lookbehind_size = 0
-        ++this.matches
-        this.emit('info', true)
-
-        return (this._bufpos = pos + needleLength)
-      }
-      pos += this._occ[ch]
-    }
-
-    // No match.
-
-    if (pos < 0) {
-      // There's too few data for Boyer-Moore-Horspool to run,
-      // so let's use a different algorithm to skip as much as
-      // we can.
-      // Forward pos until
-      //   the trailing part of lookbehind + data
-      //   looks like the beginning of the needle
-      // or until
-      //   pos == 0
-      while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos }
-    }
-
-    if (pos >= 0) {
-      // Discard lookbehind buffer.
-      this.emit('info', false, this._lookbehind, 0, this._lookbehind_size)
-      this._lookbehind_size = 0
-    } else {
-      // Cut off part of the lookbehind buffer that has
-      // been processed and append the entire haystack
-      // into it.
-      const bytesToCutOff = this._lookbehind_size + pos
-      if (bytesToCutOff > 0) {
-        // The cut off data is guaranteed not to contain the needle.
-        this.emit('info', false, this._lookbehind, 0, bytesToCutOff)
-      }
-
-      this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff,
-        this._lookbehind_size - bytesToCutOff)
-      this._lookbehind_size -= bytesToCutOff
-
-      data.copy(this._lookbehind, this._lookbehind_size)
-      this._lookbehind_size += len
-
-      this._bufpos = len
-      return len
-    }
-  }
-
-  pos += (pos >= 0) * this._bufpos
-
-  // Lookbehind buffer is now empty. We only need to check if the
-  // needle is in the haystack.
-  if (data.indexOf(needle, pos) !== -1) {
-    pos = data.indexOf(needle, pos)
-    ++this.matches
-    if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) }
-
-    return (this._bufpos = pos + needleLength)
-  } else {
-    pos = len - needleLength
-  }
-
-  // There was no match. If there's trailing haystack data that we cannot
-  // match yet using the Boyer-Moore-Horspool algorithm (because the trailing
-  // data is less than the needle size) then match using a modified
-  // algorithm that starts matching from the beginning instead of the end.
-  // Whatever trailing data is left after running this algorithm is added to
-  // the lookbehind buffer.
-  while (
-    pos < len &&
-    (
-      data[pos] !== needle[0] ||
-      (
-        (Buffer.compare(
-          data.subarray(pos, pos + len - pos),
-          needle.subarray(0, len - pos)
-        ) !== 0)
-      )
-    )
-  ) {
-    ++pos
-  }
-  if (pos < len) {
-    data.copy(this._lookbehind, 0, pos, pos + (len - pos))
-    this._lookbehind_size = len - pos
-  }
-
-  // Everything until pos is guaranteed not to contain needle data.
-  if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) }
-
-  this._bufpos = len
-  return len
-}
-
-SBMH.prototype._sbmh_lookup_char = function (data, pos) {
-  return (pos < 0)
-    ? this._lookbehind[this._lookbehind_size + pos]
-    : data[pos]
-}
-
-SBMH.prototype._sbmh_memcmp = function (data, pos, len) {
-  for (var i = 0; i < len; ++i) { // eslint-disable-line no-var
-    if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false }
-  }
-  return true
-}
-
-module.exports = SBMH
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/main.d.ts b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/main.d.ts
deleted file mode 100644
index 91b6448..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/main.d.ts
+++ /dev/null
@@ -1,196 +0,0 @@
-// Definitions by: Jacob Baskin <https://github.com/jacobbaskin>
-//                 BendingBender <https://github.com/BendingBender>
-//                 Igor Savin <https://github.com/kibertoad>
-
-/// <reference types="node" />
-
-import * as http from 'http';
-import { Readable, Writable } from 'stream';
-export { Dicer } from "../deps/dicer/lib/dicer";
-
-export const Busboy: BusboyConstructor;
-export default Busboy;
-
-export interface BusboyConfig {
-    /**
-     * These are the HTTP headers of the incoming request, which are used by individual parsers.
-     */
-    headers: BusboyHeaders;
-    /**
-     * `highWaterMark` to use for this Busboy instance.
-     * @default WritableStream default.
-     */
-    highWaterMark?: number | undefined;
-    /**
-     * highWaterMark to use for file streams.
-     * @default ReadableStream default.
-     */
-    fileHwm?: number | undefined;
-    /**
-     * Default character set to use when one isn't defined.
-     * @default 'utf8'
-     */
-    defCharset?: string | undefined;
-    /**
-     * Detect if a Part is a file.
-     * 
-     * By default a file is detected if contentType 
-     * is application/octet-stream or fileName is not
-     * undefined.
-     * 
-     * Modify this to handle e.g. Blobs.
-     */
-    isPartAFile?: (fieldName: string | undefined, contentType: string | undefined, fileName: string | undefined) => boolean;
-    /**
-     * If paths in the multipart 'filename' field shall be preserved.
-     * @default false
-     */
-    preservePath?: boolean | undefined;
-    /**
-     * Various limits on incoming data.
-     */
-    limits?:
-    | {
-        /**
-         * Max field name size (in bytes)
-         * @default 100 bytes
-         */
-        fieldNameSize?: number | undefined;
-        /**
-         * Max field value size (in bytes)
-         * @default 1MB
-         */
-        fieldSize?: number | undefined;
-        /**
-         * Max number of non-file fields
-         * @default Infinity
-         */
-        fields?: number | undefined;
-        /**
-         * For multipart forms, the max file size (in bytes)
-         * @default Infinity
-         */
-        fileSize?: number | undefined;
-        /**
-         * For multipart forms, the max number of file fields
-         * @default Infinity
-         */
-        files?: number | undefined;
-        /**
-         * For multipart forms, the max number of parts (fields + files)
-         * @default Infinity
-         */
-        parts?: number | undefined;
-        /**
-         * For multipart forms, the max number of header key=>value pairs to parse
-         * @default 2000
-         */
-        headerPairs?: number | undefined;
-
-        /**
-         * For multipart forms, the max size of a header part
-         * @default 81920
-         */
-        headerSize?: number | undefined;
-    }
-    | undefined;
-}
-
-export type BusboyHeaders = { 'content-type': string } & http.IncomingHttpHeaders;
-
-export interface BusboyFileStream extends
-    Readable {
-
-        truncated: boolean;
-
-        /**
-         * The number of bytes that have been read so far.
-         */
-        bytesRead: number;
-}
-
-export interface Busboy extends Writable {
-    addListener<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
-
-    addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
-    on<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
-
-    on(event: string | symbol, listener: (...args: any[]) => void): this;
-
-    once<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
-
-    once(event: string | symbol, listener: (...args: any[]) => void): this;
-
-    removeListener<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
-
-    removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
-    off<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
-
-    off(event: string | symbol, listener: (...args: any[]) => void): this;
-
-    prependListener<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
-
-    prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
-    prependOnceListener<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
-
-    prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
-}
-
-export interface BusboyEvents {
-    /**
-     * Emitted for each new file form field found.
-     *
-     * * Note: if you listen for this event, you should always handle the `stream` no matter if you care about the
-     * file contents or not (e.g. you can simply just do `stream.resume();` if you want to discard the contents),
-     * otherwise the 'finish' event will never fire on the Busboy instance. However, if you don't care about **any**
-     * incoming files, you can simply not listen for the 'file' event at all and any/all files will be automatically
-     * and safely discarded (these discarded files do still count towards `files` and `parts` limits).
-     * * If a configured file size limit was reached, `stream` will both have a boolean property `truncated`
-     * (best checked at the end of the stream) and emit a 'limit' event to notify you when this happens.
-     *
-     * @param listener.transferEncoding Contains the 'Content-Transfer-Encoding' value for the file stream.
-     * @param listener.mimeType Contains the 'Content-Type' value for the file stream.
-     */
-    file: (
-        fieldname: string,
-        stream: BusboyFileStream,
-        filename: string,
-        transferEncoding: string,
-        mimeType: string,
-    ) => void;
-    /**
-     * Emitted for each new non-file field found.
-     */
-    field: (
-        fieldname: string,
-        value: string,
-        fieldnameTruncated: boolean,
-        valueTruncated: boolean,
-        transferEncoding: string,
-        mimeType: string,
-    ) => void;
-    finish: () => void;
-    /**
-     * Emitted when specified `parts` limit has been reached. No more 'file' or 'field' events will be emitted.
-     */
-    partsLimit: () => void;
-    /**
-     *  Emitted when specified `files` limit has been reached. No more 'file' events will be emitted.
-     */
-    filesLimit: () => void;
-    /**
-     * Emitted when specified `fields` limit has been reached. No more 'field' events will be emitted.
-     */
-    fieldsLimit: () => void;
-    error: (error: unknown) => void;
-}
-
-export interface BusboyConstructor {
-    (options: BusboyConfig): Busboy;
-
-    new(options: BusboyConfig): Busboy;
-}
-
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/main.js b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/main.js
deleted file mode 100644
index 8794beb..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/main.js
+++ /dev/null
@@ -1,85 +0,0 @@
-'use strict'
-
-const WritableStream = require('node:stream').Writable
-const { inherits } = require('node:util')
-const Dicer = require('../deps/dicer/lib/Dicer')
-
-const MultipartParser = require('./types/multipart')
-const UrlencodedParser = require('./types/urlencoded')
-const parseParams = require('./utils/parseParams')
-
-function Busboy (opts) {
-  if (!(this instanceof Busboy)) { return new Busboy(opts) }
-
-  if (typeof opts !== 'object') {
-    throw new TypeError('Busboy expected an options-Object.')
-  }
-  if (typeof opts.headers !== 'object') {
-    throw new TypeError('Busboy expected an options-Object with headers-attribute.')
-  }
-  if (typeof opts.headers['content-type'] !== 'string') {
-    throw new TypeError('Missing Content-Type-header.')
-  }
-
-  const {
-    headers,
-    ...streamOptions
-  } = opts
-
-  this.opts = {
-    autoDestroy: false,
-    ...streamOptions
-  }
-  WritableStream.call(this, this.opts)
-
-  this._done = false
-  this._parser = this.getParserByHeaders(headers)
-  this._finished = false
-}
-inherits(Busboy, WritableStream)
-
-Busboy.prototype.emit = function (ev) {
-  if (ev === 'finish') {
-    if (!this._done) {
-      this._parser?.end()
-      return
-    } else if (this._finished) {
-      return
-    }
-    this._finished = true
-  }
-  WritableStream.prototype.emit.apply(this, arguments)
-}
-
-Busboy.prototype.getParserByHeaders = function (headers) {
-  const parsed = parseParams(headers['content-type'])
-
-  const cfg = {
-    defCharset: this.opts.defCharset,
-    fileHwm: this.opts.fileHwm,
-    headers,
-    highWaterMark: this.opts.highWaterMark,
-    isPartAFile: this.opts.isPartAFile,
-    limits: this.opts.limits,
-    parsedConType: parsed,
-    preservePath: this.opts.preservePath
-  }
-
-  if (MultipartParser.detect.test(parsed[0])) {
-    return new MultipartParser(this, cfg)
-  }
-  if (UrlencodedParser.detect.test(parsed[0])) {
-    return new UrlencodedParser(this, cfg)
-  }
-  throw new Error('Unsupported Content-Type.')
-}
-
-Busboy.prototype._write = function (chunk, encoding, cb) {
-  this._parser.write(chunk, cb)
-}
-
-module.exports = Busboy
-module.exports.default = Busboy
-module.exports.Busboy = Busboy
-
-module.exports.Dicer = Dicer
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/types/multipart.js b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/types/multipart.js
deleted file mode 100644
index ad242db..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/types/multipart.js
+++ /dev/null
@@ -1,306 +0,0 @@
-'use strict'
-
-// TODO:
-//  * support 1 nested multipart level
-//    (see second multipart example here:
-//     http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data)
-//  * support limits.fieldNameSize
-//     -- this will require modifications to utils.parseParams
-
-const { Readable } = require('node:stream')
-const { inherits } = require('node:util')
-
-const Dicer = require('../../deps/dicer/lib/Dicer')
-
-const parseParams = require('../utils/parseParams')
-const decodeText = require('../utils/decodeText')
-const basename = require('../utils/basename')
-const getLimit = require('../utils/getLimit')
-
-const RE_BOUNDARY = /^boundary$/i
-const RE_FIELD = /^form-data$/i
-const RE_CHARSET = /^charset$/i
-const RE_FILENAME = /^filename$/i
-const RE_NAME = /^name$/i
-
-Multipart.detect = /^multipart\/form-data/i
-function Multipart (boy, cfg) {
-  let i
-  let len
-  const self = this
-  let boundary
-  const limits = cfg.limits
-  const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined))
-  const parsedConType = cfg.parsedConType || []
-  const defCharset = cfg.defCharset || 'utf8'
-  const preservePath = cfg.preservePath
-  const fileOpts = { highWaterMark: cfg.fileHwm }
-
-  for (i = 0, len = parsedConType.length; i < len; ++i) {
-    if (Array.isArray(parsedConType[i]) &&
-      RE_BOUNDARY.test(parsedConType[i][0])) {
-      boundary = parsedConType[i][1]
-      break
-    }
-  }
-
-  function checkFinished () {
-    if (nends === 0 && finished && !boy._done) {
-      finished = false
-      self.end()
-    }
-  }
-
-  if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') }
-
-  const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)
-  const fileSizeLimit = getLimit(limits, 'fileSize', Infinity)
-  const filesLimit = getLimit(limits, 'files', Infinity)
-  const fieldsLimit = getLimit(limits, 'fields', Infinity)
-  const partsLimit = getLimit(limits, 'parts', Infinity)
-  const headerPairsLimit = getLimit(limits, 'headerPairs', 2000)
-  const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024)
-
-  let nfiles = 0
-  let nfields = 0
-  let nends = 0
-  let curFile
-  let curField
-  let finished = false
-
-  this._needDrain = false
-  this._pause = false
-  this._cb = undefined
-  this._nparts = 0
-  this._boy = boy
-
-  const parserCfg = {
-    boundary,
-    maxHeaderPairs: headerPairsLimit,
-    maxHeaderSize: headerSizeLimit,
-    partHwm: fileOpts.highWaterMark,
-    highWaterMark: cfg.highWaterMark
-  }
-
-  this.parser = new Dicer(parserCfg)
-  this.parser.on('drain', function () {
-    self._needDrain = false
-    if (self._cb && !self._pause) {
-      const cb = self._cb
-      self._cb = undefined
-      cb()
-    }
-  }).on('part', function onPart (part) {
-    if (++self._nparts > partsLimit) {
-      self.parser.removeListener('part', onPart)
-      self.parser.on('part', skipPart)
-      boy.hitPartsLimit = true
-      boy.emit('partsLimit')
-      return skipPart(part)
-    }
-
-    // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let
-    // us emit 'end' early since we know the part has ended if we are already
-    // seeing the next part
-    if (curField) {
-      const field = curField
-      field.emit('end')
-      field.removeAllListeners('end')
-    }
-
-    part.on('header', function (header) {
-      let contype
-      let fieldname
-      let parsed
-      let charset
-      let encoding
-      let filename
-      let nsize = 0
-
-      if (header['content-type']) {
-        parsed = parseParams(header['content-type'][0])
-        if (parsed[0]) {
-          contype = parsed[0].toLowerCase()
-          for (i = 0, len = parsed.length; i < len; ++i) {
-            if (RE_CHARSET.test(parsed[i][0])) {
-              charset = parsed[i][1].toLowerCase()
-              break
-            }
-          }
-        }
-      }
-
-      if (contype === undefined) { contype = 'text/plain' }
-      if (charset === undefined) { charset = defCharset }
-
-      if (header['content-disposition']) {
-        parsed = parseParams(header['content-disposition'][0])
-        if (!RE_FIELD.test(parsed[0])) { return skipPart(part) }
-        for (i = 0, len = parsed.length; i < len; ++i) {
-          if (RE_NAME.test(parsed[i][0])) {
-            fieldname = parsed[i][1]
-          } else if (RE_FILENAME.test(parsed[i][0])) {
-            filename = parsed[i][1]
-            if (!preservePath) { filename = basename(filename) }
-          }
-        }
-      } else { return skipPart(part) }
-
-      if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' }
-
-      let onData,
-        onEnd
-
-      if (isPartAFile(fieldname, contype, filename)) {
-        // file/binary field
-        if (nfiles === filesLimit) {
-          if (!boy.hitFilesLimit) {
-            boy.hitFilesLimit = true
-            boy.emit('filesLimit')
-          }
-          return skipPart(part)
-        }
-
-        ++nfiles
-
-        if (!boy._events.file) {
-          self.parser._ignore()
-          return
-        }
-
-        ++nends
-        const file = new FileStream(fileOpts)
-        curFile = file
-        file.on('end', function () {
-          --nends
-          self._pause = false
-          checkFinished()
-          if (self._cb && !self._needDrain) {
-            const cb = self._cb
-            self._cb = undefined
-            cb()
-          }
-        })
-        file._read = function (n) {
-          if (!self._pause) { return }
-          self._pause = false
-          if (self._cb && !self._needDrain) {
-            const cb = self._cb
-            self._cb = undefined
-            cb()
-          }
-        }
-        boy.emit('file', fieldname, file, filename, encoding, contype)
-
-        onData = function (data) {
-          if ((nsize += data.length) > fileSizeLimit) {
-            const extralen = fileSizeLimit - nsize + data.length
-            if (extralen > 0) { file.push(data.slice(0, extralen)) }
-            file.truncated = true
-            file.bytesRead = fileSizeLimit
-            part.removeAllListeners('data')
-            file.emit('limit')
-            return
-          } else if (!file.push(data)) { self._pause = true }
-
-          file.bytesRead = nsize
-        }
-
-        onEnd = function () {
-          curFile = undefined
-          file.push(null)
-        }
-      } else {
-        // non-file field
-        if (nfields === fieldsLimit) {
-          if (!boy.hitFieldsLimit) {
-            boy.hitFieldsLimit = true
-            boy.emit('fieldsLimit')
-          }
-          return skipPart(part)
-        }
-
-        ++nfields
-        ++nends
-        let buffer = ''
-        let truncated = false
-        curField = part
-
-        onData = function (data) {
-          if ((nsize += data.length) > fieldSizeLimit) {
-            const extralen = (fieldSizeLimit - (nsize - data.length))
-            buffer += data.toString('binary', 0, extralen)
-            truncated = true
-            part.removeAllListeners('data')
-          } else { buffer += data.toString('binary') }
-        }
-
-        onEnd = function () {
-          curField = undefined
-          if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) }
-          boy.emit('field', fieldname, buffer, false, truncated, encoding, contype)
-          --nends
-          checkFinished()
-        }
-      }
-
-      /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become
-         broken. Streams2/streams3 is a huge black box of confusion, but
-         somehow overriding the sync state seems to fix things again (and still
-         seems to work for previous node versions).
-      */
-      part._readableState.sync = false
-
-      part.on('data', onData)
-      part.on('end', onEnd)
-    }).on('error', function (err) {
-      if (curFile) { curFile.emit('error', err) }
-    })
-  }).on('error', function (err) {
-    boy.emit('error', err)
-  }).on('finish', function () {
-    finished = true
-    checkFinished()
-  })
-}
-
-Multipart.prototype.write = function (chunk, cb) {
-  const r = this.parser.write(chunk)
-  if (r && !this._pause) {
-    cb()
-  } else {
-    this._needDrain = !r
-    this._cb = cb
-  }
-}
-
-Multipart.prototype.end = function () {
-  const self = this
-
-  if (self.parser.writable) {
-    self.parser.end()
-  } else if (!self._boy._done) {
-    process.nextTick(function () {
-      self._boy._done = true
-      self._boy.emit('finish')
-    })
-  }
-}
-
-function skipPart (part) {
-  part.resume()
-}
-
-function FileStream (opts) {
-  Readable.call(this, opts)
-
-  this.bytesRead = 0
-
-  this.truncated = false
-}
-
-inherits(FileStream, Readable)
-
-FileStream.prototype._read = function (n) {}
-
-module.exports = Multipart
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/types/urlencoded.js b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/types/urlencoded.js
deleted file mode 100644
index 6f5f784..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/types/urlencoded.js
+++ /dev/null
@@ -1,190 +0,0 @@
-'use strict'
-
-const Decoder = require('../utils/Decoder')
-const decodeText = require('../utils/decodeText')
-const getLimit = require('../utils/getLimit')
-
-const RE_CHARSET = /^charset$/i
-
-UrlEncoded.detect = /^application\/x-www-form-urlencoded/i
-function UrlEncoded (boy, cfg) {
-  const limits = cfg.limits
-  const parsedConType = cfg.parsedConType
-  this.boy = boy
-
-  this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)
-  this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100)
-  this.fieldsLimit = getLimit(limits, 'fields', Infinity)
-
-  let charset
-  for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var
-    if (Array.isArray(parsedConType[i]) &&
-        RE_CHARSET.test(parsedConType[i][0])) {
-      charset = parsedConType[i][1].toLowerCase()
-      break
-    }
-  }
-
-  if (charset === undefined) { charset = cfg.defCharset || 'utf8' }
-
-  this.decoder = new Decoder()
-  this.charset = charset
-  this._fields = 0
-  this._state = 'key'
-  this._checkingBytes = true
-  this._bytesKey = 0
-  this._bytesVal = 0
-  this._key = ''
-  this._val = ''
-  this._keyTrunc = false
-  this._valTrunc = false
-  this._hitLimit = false
-}
-
-UrlEncoded.prototype.write = function (data, cb) {
-  if (this._fields === this.fieldsLimit) {
-    if (!this.boy.hitFieldsLimit) {
-      this.boy.hitFieldsLimit = true
-      this.boy.emit('fieldsLimit')
-    }
-    return cb()
-  }
-
-  let idxeq; let idxamp; let i; let p = 0; const len = data.length
-
-  while (p < len) {
-    if (this._state === 'key') {
-      idxeq = idxamp = undefined
-      for (i = p; i < len; ++i) {
-        if (!this._checkingBytes) { ++p }
-        if (data[i] === 0x3D/* = */) {
-          idxeq = i
-          break
-        } else if (data[i] === 0x26/* & */) {
-          idxamp = i
-          break
-        }
-        if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) {
-          this._hitLimit = true
-          break
-        } else if (this._checkingBytes) { ++this._bytesKey }
-      }
-
-      if (idxeq !== undefined) {
-        // key with assignment
-        if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) }
-        this._state = 'val'
-
-        this._hitLimit = false
-        this._checkingBytes = true
-        this._val = ''
-        this._bytesVal = 0
-        this._valTrunc = false
-        this.decoder.reset()
-
-        p = idxeq + 1
-      } else if (idxamp !== undefined) {
-        // key with no assignment
-        ++this._fields
-        let key; const keyTrunc = this._keyTrunc
-        if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key }
-
-        this._hitLimit = false
-        this._checkingBytes = true
-        this._key = ''
-        this._bytesKey = 0
-        this._keyTrunc = false
-        this.decoder.reset()
-
-        if (key.length) {
-          this.boy.emit('field', decodeText(key, 'binary', this.charset),
-            '',
-            keyTrunc,
-            false)
-        }
-
-        p = idxamp + 1
-        if (this._fields === this.fieldsLimit) { return cb() }
-      } else if (this._hitLimit) {
-        // we may not have hit the actual limit if there are encoded bytes...
-        if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) }
-        p = i
-        if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) {
-          // yep, we actually did hit the limit
-          this._checkingBytes = false
-          this._keyTrunc = true
-        }
-      } else {
-        if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) }
-        p = len
-      }
-    } else {
-      idxamp = undefined
-      for (i = p; i < len; ++i) {
-        if (!this._checkingBytes) { ++p }
-        if (data[i] === 0x26/* & */) {
-          idxamp = i
-          break
-        }
-        if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) {
-          this._hitLimit = true
-          break
-        } else if (this._checkingBytes) { ++this._bytesVal }
-      }
-
-      if (idxamp !== undefined) {
-        ++this._fields
-        if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) }
-        this.boy.emit('field', decodeText(this._key, 'binary', this.charset),
-          decodeText(this._val, 'binary', this.charset),
-          this._keyTrunc,
-          this._valTrunc)
-        this._state = 'key'
-
-        this._hitLimit = false
-        this._checkingBytes = true
-        this._key = ''
-        this._bytesKey = 0
-        this._keyTrunc = false
-        this.decoder.reset()
-
-        p = idxamp + 1
-        if (this._fields === this.fieldsLimit) { return cb() }
-      } else if (this._hitLimit) {
-        // we may not have hit the actual limit if there are encoded bytes...
-        if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) }
-        p = i
-        if ((this._val === '' && this.fieldSizeLimit === 0) ||
-            (this._bytesVal = this._val.length) === this.fieldSizeLimit) {
-          // yep, we actually did hit the limit
-          this._checkingBytes = false
-          this._valTrunc = true
-        }
-      } else {
-        if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) }
-        p = len
-      }
-    }
-  }
-  cb()
-}
-
-UrlEncoded.prototype.end = function () {
-  if (this.boy._done) { return }
-
-  if (this._state === 'key' && this._key.length > 0) {
-    this.boy.emit('field', decodeText(this._key, 'binary', this.charset),
-      '',
-      this._keyTrunc,
-      false)
-  } else if (this._state === 'val') {
-    this.boy.emit('field', decodeText(this._key, 'binary', this.charset),
-      decodeText(this._val, 'binary', this.charset),
-      this._keyTrunc,
-      this._valTrunc)
-  }
-  this.boy._done = true
-  this.boy.emit('finish')
-}
-
-module.exports = UrlEncoded
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/Decoder.js b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/Decoder.js
deleted file mode 100644
index 7917678..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/Decoder.js
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict'
-
-const RE_PLUS = /\+/g
-
-const HEX = [
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
-  0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-]
-
-function Decoder () {
-  this.buffer = undefined
-}
-Decoder.prototype.write = function (str) {
-  // Replace '+' with ' ' before decoding
-  str = str.replace(RE_PLUS, ' ')
-  let res = ''
-  let i = 0; let p = 0; const len = str.length
-  for (; i < len; ++i) {
-    if (this.buffer !== undefined) {
-      if (!HEX[str.charCodeAt(i)]) {
-        res += '%' + this.buffer
-        this.buffer = undefined
-        --i // retry character
-      } else {
-        this.buffer += str[i]
-        ++p
-        if (this.buffer.length === 2) {
-          res += String.fromCharCode(parseInt(this.buffer, 16))
-          this.buffer = undefined
-        }
-      }
-    } else if (str[i] === '%') {
-      if (i > p) {
-        res += str.substring(p, i)
-        p = i
-      }
-      this.buffer = ''
-      ++p
-    }
-  }
-  if (p < len && this.buffer === undefined) { res += str.substring(p) }
-  return res
-}
-Decoder.prototype.reset = function () {
-  this.buffer = undefined
-}
-
-module.exports = Decoder
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/basename.js b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/basename.js
deleted file mode 100644
index db58819..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/basename.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict'
-
-module.exports = function basename (path) {
-  if (typeof path !== 'string') { return '' }
-  for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var
-    switch (path.charCodeAt(i)) {
-      case 0x2F: // '/'
-      case 0x5C: // '\'
-        path = path.slice(i + 1)
-        return (path === '..' || path === '.' ? '' : path)
-    }
-  }
-  return (path === '..' || path === '.' ? '' : path)
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/decodeText.js b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/decodeText.js
deleted file mode 100644
index be35d6b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/decodeText.js
+++ /dev/null
@@ -1,114 +0,0 @@
-'use strict'
-
-// Node has always utf-8
-const utf8Decoder = new TextDecoder('utf-8')
-const textDecoders = new Map([
-  ['utf-8', utf8Decoder],
-  ['utf8', utf8Decoder]
-])
-
-function getDecoder (charset) {
-  let lc
-  while (true) {
-    switch (charset) {
-      case 'utf-8':
-      case 'utf8':
-        return decoders.utf8
-      case 'latin1':
-      case 'ascii': // TODO: Make these a separate, strict decoder?
-      case 'us-ascii':
-      case 'iso-8859-1':
-      case 'iso8859-1':
-      case 'iso88591':
-      case 'iso_8859-1':
-      case 'windows-1252':
-      case 'iso_8859-1:1987':
-      case 'cp1252':
-      case 'x-cp1252':
-        return decoders.latin1
-      case 'utf16le':
-      case 'utf-16le':
-      case 'ucs2':
-      case 'ucs-2':
-        return decoders.utf16le
-      case 'base64':
-        return decoders.base64
-      default:
-        if (lc === undefined) {
-          lc = true
-          charset = charset.toLowerCase()
-          continue
-        }
-        return decoders.other.bind(charset)
-    }
-  }
-}
-
-const decoders = {
-  utf8: (data, sourceEncoding) => {
-    if (data.length === 0) {
-      return ''
-    }
-    if (typeof data === 'string') {
-      data = Buffer.from(data, sourceEncoding)
-    }
-    return data.utf8Slice(0, data.length)
-  },
-
-  latin1: (data, sourceEncoding) => {
-    if (data.length === 0) {
-      return ''
-    }
-    if (typeof data === 'string') {
-      return data
-    }
-    return data.latin1Slice(0, data.length)
-  },
-
-  utf16le: (data, sourceEncoding) => {
-    if (data.length === 0) {
-      return ''
-    }
-    if (typeof data === 'string') {
-      data = Buffer.from(data, sourceEncoding)
-    }
-    return data.ucs2Slice(0, data.length)
-  },
-
-  base64: (data, sourceEncoding) => {
-    if (data.length === 0) {
-      return ''
-    }
-    if (typeof data === 'string') {
-      data = Buffer.from(data, sourceEncoding)
-    }
-    return data.base64Slice(0, data.length)
-  },
-
-  other: (data, sourceEncoding) => {
-    if (data.length === 0) {
-      return ''
-    }
-    if (typeof data === 'string') {
-      data = Buffer.from(data, sourceEncoding)
-    }
-
-    if (textDecoders.has(this.toString())) {
-      try {
-        return textDecoders.get(this).decode(data)
-      } catch (e) { }
-    }
-    return typeof data === 'string'
-      ? data
-      : data.toString()
-  }
-}
-
-function decodeText (text, sourceEncoding, destEncoding) {
-  if (text) {
-    return getDecoder(destEncoding)(text, sourceEncoding)
-  }
-  return text
-}
-
-module.exports = decodeText
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/getLimit.js b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/getLimit.js
deleted file mode 100644
index cb64fd6..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/getLimit.js
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict'
-
-module.exports = function getLimit (limits, name, defaultLimit) {
-  if (
-    !limits ||
-    limits[name] === undefined ||
-    limits[name] === null
-  ) { return defaultLimit }
-
-  if (
-    typeof limits[name] !== 'number' ||
-    isNaN(limits[name])
-  ) { throw new TypeError('Limit ' + name + ' is not a valid number') }
-
-  return limits[name]
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/parseParams.js b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/parseParams.js
deleted file mode 100644
index 1698e62..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/lib/utils/parseParams.js
+++ /dev/null
@@ -1,196 +0,0 @@
-/* eslint-disable object-property-newline */
-'use strict'
-
-const decodeText = require('./decodeText')
-
-const RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g
-
-const EncodedLookup = {
-  '%00': '\x00', '%01': '\x01', '%02': '\x02', '%03': '\x03', '%04': '\x04',
-  '%05': '\x05', '%06': '\x06', '%07': '\x07', '%08': '\x08', '%09': '\x09',
-  '%0a': '\x0a', '%0A': '\x0a', '%0b': '\x0b', '%0B': '\x0b', '%0c': '\x0c',
-  '%0C': '\x0c', '%0d': '\x0d', '%0D': '\x0d', '%0e': '\x0e', '%0E': '\x0e',
-  '%0f': '\x0f', '%0F': '\x0f', '%10': '\x10', '%11': '\x11', '%12': '\x12',
-  '%13': '\x13', '%14': '\x14', '%15': '\x15', '%16': '\x16', '%17': '\x17',
-  '%18': '\x18', '%19': '\x19', '%1a': '\x1a', '%1A': '\x1a', '%1b': '\x1b',
-  '%1B': '\x1b', '%1c': '\x1c', '%1C': '\x1c', '%1d': '\x1d', '%1D': '\x1d',
-  '%1e': '\x1e', '%1E': '\x1e', '%1f': '\x1f', '%1F': '\x1f', '%20': '\x20',
-  '%21': '\x21', '%22': '\x22', '%23': '\x23', '%24': '\x24', '%25': '\x25',
-  '%26': '\x26', '%27': '\x27', '%28': '\x28', '%29': '\x29', '%2a': '\x2a',
-  '%2A': '\x2a', '%2b': '\x2b', '%2B': '\x2b', '%2c': '\x2c', '%2C': '\x2c',
-  '%2d': '\x2d', '%2D': '\x2d', '%2e': '\x2e', '%2E': '\x2e', '%2f': '\x2f',
-  '%2F': '\x2f', '%30': '\x30', '%31': '\x31', '%32': '\x32', '%33': '\x33',
-  '%34': '\x34', '%35': '\x35', '%36': '\x36', '%37': '\x37', '%38': '\x38',
-  '%39': '\x39', '%3a': '\x3a', '%3A': '\x3a', '%3b': '\x3b', '%3B': '\x3b',
-  '%3c': '\x3c', '%3C': '\x3c', '%3d': '\x3d', '%3D': '\x3d', '%3e': '\x3e',
-  '%3E': '\x3e', '%3f': '\x3f', '%3F': '\x3f', '%40': '\x40', '%41': '\x41',
-  '%42': '\x42', '%43': '\x43', '%44': '\x44', '%45': '\x45', '%46': '\x46',
-  '%47': '\x47', '%48': '\x48', '%49': '\x49', '%4a': '\x4a', '%4A': '\x4a',
-  '%4b': '\x4b', '%4B': '\x4b', '%4c': '\x4c', '%4C': '\x4c', '%4d': '\x4d',
-  '%4D': '\x4d', '%4e': '\x4e', '%4E': '\x4e', '%4f': '\x4f', '%4F': '\x4f',
-  '%50': '\x50', '%51': '\x51', '%52': '\x52', '%53': '\x53', '%54': '\x54',
-  '%55': '\x55', '%56': '\x56', '%57': '\x57', '%58': '\x58', '%59': '\x59',
-  '%5a': '\x5a', '%5A': '\x5a', '%5b': '\x5b', '%5B': '\x5b', '%5c': '\x5c',
-  '%5C': '\x5c', '%5d': '\x5d', '%5D': '\x5d', '%5e': '\x5e', '%5E': '\x5e',
-  '%5f': '\x5f', '%5F': '\x5f', '%60': '\x60', '%61': '\x61', '%62': '\x62',
-  '%63': '\x63', '%64': '\x64', '%65': '\x65', '%66': '\x66', '%67': '\x67',
-  '%68': '\x68', '%69': '\x69', '%6a': '\x6a', '%6A': '\x6a', '%6b': '\x6b',
-  '%6B': '\x6b', '%6c': '\x6c', '%6C': '\x6c', '%6d': '\x6d', '%6D': '\x6d',
-  '%6e': '\x6e', '%6E': '\x6e', '%6f': '\x6f', '%6F': '\x6f', '%70': '\x70',
-  '%71': '\x71', '%72': '\x72', '%73': '\x73', '%74': '\x74', '%75': '\x75',
-  '%76': '\x76', '%77': '\x77', '%78': '\x78', '%79': '\x79', '%7a': '\x7a',
-  '%7A': '\x7a', '%7b': '\x7b', '%7B': '\x7b', '%7c': '\x7c', '%7C': '\x7c',
-  '%7d': '\x7d', '%7D': '\x7d', '%7e': '\x7e', '%7E': '\x7e', '%7f': '\x7f',
-  '%7F': '\x7f', '%80': '\x80', '%81': '\x81', '%82': '\x82', '%83': '\x83',
-  '%84': '\x84', '%85': '\x85', '%86': '\x86', '%87': '\x87', '%88': '\x88',
-  '%89': '\x89', '%8a': '\x8a', '%8A': '\x8a', '%8b': '\x8b', '%8B': '\x8b',
-  '%8c': '\x8c', '%8C': '\x8c', '%8d': '\x8d', '%8D': '\x8d', '%8e': '\x8e',
-  '%8E': '\x8e', '%8f': '\x8f', '%8F': '\x8f', '%90': '\x90', '%91': '\x91',
-  '%92': '\x92', '%93': '\x93', '%94': '\x94', '%95': '\x95', '%96': '\x96',
-  '%97': '\x97', '%98': '\x98', '%99': '\x99', '%9a': '\x9a', '%9A': '\x9a',
-  '%9b': '\x9b', '%9B': '\x9b', '%9c': '\x9c', '%9C': '\x9c', '%9d': '\x9d',
-  '%9D': '\x9d', '%9e': '\x9e', '%9E': '\x9e', '%9f': '\x9f', '%9F': '\x9f',
-  '%a0': '\xa0', '%A0': '\xa0', '%a1': '\xa1', '%A1': '\xa1', '%a2': '\xa2',
-  '%A2': '\xa2', '%a3': '\xa3', '%A3': '\xa3', '%a4': '\xa4', '%A4': '\xa4',
-  '%a5': '\xa5', '%A5': '\xa5', '%a6': '\xa6', '%A6': '\xa6', '%a7': '\xa7',
-  '%A7': '\xa7', '%a8': '\xa8', '%A8': '\xa8', '%a9': '\xa9', '%A9': '\xa9',
-  '%aa': '\xaa', '%Aa': '\xaa', '%aA': '\xaa', '%AA': '\xaa', '%ab': '\xab',
-  '%Ab': '\xab', '%aB': '\xab', '%AB': '\xab', '%ac': '\xac', '%Ac': '\xac',
-  '%aC': '\xac', '%AC': '\xac', '%ad': '\xad', '%Ad': '\xad', '%aD': '\xad',
-  '%AD': '\xad', '%ae': '\xae', '%Ae': '\xae', '%aE': '\xae', '%AE': '\xae',
-  '%af': '\xaf', '%Af': '\xaf', '%aF': '\xaf', '%AF': '\xaf', '%b0': '\xb0',
-  '%B0': '\xb0', '%b1': '\xb1', '%B1': '\xb1', '%b2': '\xb2', '%B2': '\xb2',
-  '%b3': '\xb3', '%B3': '\xb3', '%b4': '\xb4', '%B4': '\xb4', '%b5': '\xb5',
-  '%B5': '\xb5', '%b6': '\xb6', '%B6': '\xb6', '%b7': '\xb7', '%B7': '\xb7',
-  '%b8': '\xb8', '%B8': '\xb8', '%b9': '\xb9', '%B9': '\xb9', '%ba': '\xba',
-  '%Ba': '\xba', '%bA': '\xba', '%BA': '\xba', '%bb': '\xbb', '%Bb': '\xbb',
-  '%bB': '\xbb', '%BB': '\xbb', '%bc': '\xbc', '%Bc': '\xbc', '%bC': '\xbc',
-  '%BC': '\xbc', '%bd': '\xbd', '%Bd': '\xbd', '%bD': '\xbd', '%BD': '\xbd',
-  '%be': '\xbe', '%Be': '\xbe', '%bE': '\xbe', '%BE': '\xbe', '%bf': '\xbf',
-  '%Bf': '\xbf', '%bF': '\xbf', '%BF': '\xbf', '%c0': '\xc0', '%C0': '\xc0',
-  '%c1': '\xc1', '%C1': '\xc1', '%c2': '\xc2', '%C2': '\xc2', '%c3': '\xc3',
-  '%C3': '\xc3', '%c4': '\xc4', '%C4': '\xc4', '%c5': '\xc5', '%C5': '\xc5',
-  '%c6': '\xc6', '%C6': '\xc6', '%c7': '\xc7', '%C7': '\xc7', '%c8': '\xc8',
-  '%C8': '\xc8', '%c9': '\xc9', '%C9': '\xc9', '%ca': '\xca', '%Ca': '\xca',
-  '%cA': '\xca', '%CA': '\xca', '%cb': '\xcb', '%Cb': '\xcb', '%cB': '\xcb',
-  '%CB': '\xcb', '%cc': '\xcc', '%Cc': '\xcc', '%cC': '\xcc', '%CC': '\xcc',
-  '%cd': '\xcd', '%Cd': '\xcd', '%cD': '\xcd', '%CD': '\xcd', '%ce': '\xce',
-  '%Ce': '\xce', '%cE': '\xce', '%CE': '\xce', '%cf': '\xcf', '%Cf': '\xcf',
-  '%cF': '\xcf', '%CF': '\xcf', '%d0': '\xd0', '%D0': '\xd0', '%d1': '\xd1',
-  '%D1': '\xd1', '%d2': '\xd2', '%D2': '\xd2', '%d3': '\xd3', '%D3': '\xd3',
-  '%d4': '\xd4', '%D4': '\xd4', '%d5': '\xd5', '%D5': '\xd5', '%d6': '\xd6',
-  '%D6': '\xd6', '%d7': '\xd7', '%D7': '\xd7', '%d8': '\xd8', '%D8': '\xd8',
-  '%d9': '\xd9', '%D9': '\xd9', '%da': '\xda', '%Da': '\xda', '%dA': '\xda',
-  '%DA': '\xda', '%db': '\xdb', '%Db': '\xdb', '%dB': '\xdb', '%DB': '\xdb',
-  '%dc': '\xdc', '%Dc': '\xdc', '%dC': '\xdc', '%DC': '\xdc', '%dd': '\xdd',
-  '%Dd': '\xdd', '%dD': '\xdd', '%DD': '\xdd', '%de': '\xde', '%De': '\xde',
-  '%dE': '\xde', '%DE': '\xde', '%df': '\xdf', '%Df': '\xdf', '%dF': '\xdf',
-  '%DF': '\xdf', '%e0': '\xe0', '%E0': '\xe0', '%e1': '\xe1', '%E1': '\xe1',
-  '%e2': '\xe2', '%E2': '\xe2', '%e3': '\xe3', '%E3': '\xe3', '%e4': '\xe4',
-  '%E4': '\xe4', '%e5': '\xe5', '%E5': '\xe5', '%e6': '\xe6', '%E6': '\xe6',
-  '%e7': '\xe7', '%E7': '\xe7', '%e8': '\xe8', '%E8': '\xe8', '%e9': '\xe9',
-  '%E9': '\xe9', '%ea': '\xea', '%Ea': '\xea', '%eA': '\xea', '%EA': '\xea',
-  '%eb': '\xeb', '%Eb': '\xeb', '%eB': '\xeb', '%EB': '\xeb', '%ec': '\xec',
-  '%Ec': '\xec', '%eC': '\xec', '%EC': '\xec', '%ed': '\xed', '%Ed': '\xed',
-  '%eD': '\xed', '%ED': '\xed', '%ee': '\xee', '%Ee': '\xee', '%eE': '\xee',
-  '%EE': '\xee', '%ef': '\xef', '%Ef': '\xef', '%eF': '\xef', '%EF': '\xef',
-  '%f0': '\xf0', '%F0': '\xf0', '%f1': '\xf1', '%F1': '\xf1', '%f2': '\xf2',
-  '%F2': '\xf2', '%f3': '\xf3', '%F3': '\xf3', '%f4': '\xf4', '%F4': '\xf4',
-  '%f5': '\xf5', '%F5': '\xf5', '%f6': '\xf6', '%F6': '\xf6', '%f7': '\xf7',
-  '%F7': '\xf7', '%f8': '\xf8', '%F8': '\xf8', '%f9': '\xf9', '%F9': '\xf9',
-  '%fa': '\xfa', '%Fa': '\xfa', '%fA': '\xfa', '%FA': '\xfa', '%fb': '\xfb',
-  '%Fb': '\xfb', '%fB': '\xfb', '%FB': '\xfb', '%fc': '\xfc', '%Fc': '\xfc',
-  '%fC': '\xfc', '%FC': '\xfc', '%fd': '\xfd', '%Fd': '\xfd', '%fD': '\xfd',
-  '%FD': '\xfd', '%fe': '\xfe', '%Fe': '\xfe', '%fE': '\xfe', '%FE': '\xfe',
-  '%ff': '\xff', '%Ff': '\xff', '%fF': '\xff', '%FF': '\xff'
-}
-
-function encodedReplacer (match) {
-  return EncodedLookup[match]
-}
-
-const STATE_KEY = 0
-const STATE_VALUE = 1
-const STATE_CHARSET = 2
-const STATE_LANG = 3
-
-function parseParams (str) {
-  const res = []
-  let state = STATE_KEY
-  let charset = ''
-  let inquote = false
-  let escaping = false
-  let p = 0
-  let tmp = ''
-  const len = str.length
-
-  for (var i = 0; i < len; ++i) { // eslint-disable-line no-var
-    const char = str[i]
-    if (char === '\\' && inquote) {
-      if (escaping) { escaping = false } else {
-        escaping = true
-        continue
-      }
-    } else if (char === '"') {
-      if (!escaping) {
-        if (inquote) {
-          inquote = false
-          state = STATE_KEY
-        } else { inquote = true }
-        continue
-      } else { escaping = false }
-    } else {
-      if (escaping && inquote) { tmp += '\\' }
-      escaping = false
-      if ((state === STATE_CHARSET || state === STATE_LANG) && char === "'") {
-        if (state === STATE_CHARSET) {
-          state = STATE_LANG
-          charset = tmp.substring(1)
-        } else { state = STATE_VALUE }
-        tmp = ''
-        continue
-      } else if (state === STATE_KEY &&
-        (char === '*' || char === '=') &&
-        res.length) {
-        state = char === '*'
-          ? STATE_CHARSET
-          : STATE_VALUE
-        res[p] = [tmp, undefined]
-        tmp = ''
-        continue
-      } else if (!inquote && char === ';') {
-        state = STATE_KEY
-        if (charset) {
-          if (tmp.length) {
-            tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),
-              'binary',
-              charset)
-          }
-          charset = ''
-        } else if (tmp.length) {
-          tmp = decodeText(tmp, 'binary', 'utf8')
-        }
-        if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp }
-        tmp = ''
-        ++p
-        continue
-      } else if (!inquote && (char === ' ' || char === '\t')) { continue }
-    }
-    tmp += char
-  }
-  if (charset && tmp.length) {
-    tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),
-      'binary',
-      charset)
-  } else if (tmp) {
-    tmp = decodeText(tmp, 'binary', 'utf8')
-  }
-
-  if (res[p] === undefined) {
-    if (tmp) { res[p] = tmp }
-  } else { res[p][1] = tmp }
-
-  return res
-}
-
-module.exports = parseParams
diff --git a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/package.json b/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/package.json
deleted file mode 100644
index 4be895c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@fastify/busboy/package.json
+++ /dev/null
@@ -1,86 +0,0 @@
-{
-  "name": "@fastify/busboy",
-  "version": "2.1.0",
-  "private": false,
-  "author": "Brian White <mscdex@mscdex.net>",
-  "contributors": [
-    {
-      "name": "Igor Savin",
-      "email": "kibertoad@gmail.com",
-      "url": "https://github.com/kibertoad"
-    },
-    {
-      "name": "Aras Abbasi",
-      "email": "aras.abbasi@gmail.com",
-      "url": "https://github.com/uzlopak"
-    }
-  ],
-  "description": "A streaming parser for HTML form data for node.js",
-  "main": "lib/main",
-  "type": "commonjs",
-  "types": "lib/main.d.ts",
-  "scripts": {
-    "bench:busboy": "cd benchmarks && npm install && npm run benchmark-fastify",
-    "bench:dicer": "node bench/dicer/dicer-bench-multipart-parser.js",
-    "coveralls": "nyc report --reporter=lcov",
-    "lint": "npm run lint:standard",
-    "lint:everything": "npm run lint && npm run test:types",
-    "lint:fix": "standard --fix",
-    "lint:standard": "standard --verbose | snazzy",
-    "test:mocha": "tap",
-    "test:types": "tsd",
-    "test:coverage": "nyc npm run test",
-    "test": "npm run test:mocha"
-  },
-  "engines": {
-    "node": ">=14"
-  },
-  "devDependencies": {
-    "@types/node": "^20.1.0",
-    "busboy": "^1.0.0",
-    "photofinish": "^1.8.0",
-    "snazzy": "^9.0.0",
-    "standard": "^17.0.0",
-    "tap": "^16.3.8",
-    "tinybench": "^2.5.1",
-    "tsd": "^0.29.0",
-    "typescript": "^5.0.2"
-  },
-  "keywords": [
-    "uploads",
-    "forms",
-    "multipart",
-    "form-data"
-  ],
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/fastify/busboy.git"
-  },
-  "tsd": {
-    "directory": "test/types",
-    "compilerOptions": {
-      "esModuleInterop": false,
-      "module": "commonjs",
-      "target": "ES2017"
-    }
-  },
-  "standard": {
-    "globals": [
-      "describe",
-      "it"
-    ],
-    "ignore": [
-      "bench"
-    ]
-  },
-  "files": [
-    "README.md",
-    "LICENSE",
-    "lib/*",
-    "deps/encoding/*",
-    "deps/dicer/lib",
-    "deps/streamsearch/",
-    "deps/dicer/LICENSE"
-  ]
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/LICENSE
deleted file mode 100644
index ef2c18e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright (c) 2019 Octokit contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/README.md b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/README.md
deleted file mode 100644
index 2e48b73..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/README.md
+++ /dev/null
@@ -1,285 +0,0 @@
-# auth-token.js
-
-> GitHub API token authentication for browsers and Node.js
-
-[![@latest](https://img.shields.io/npm/v/@octokit/auth-token.svg)](https://www.npmjs.com/package/@octokit/auth-token)
-[![Build Status](https://github.com/octokit/auth-token.js/workflows/Test/badge.svg)](https://github.com/octokit/auth-token.js/actions?query=workflow%3ATest)
-
-`@octokit/auth-token` is the simplest of [GitHub’s authentication strategies](https://github.com/octokit/auth.js).
-
-It is useful if you want to support multiple authentication strategies, as it’s API is compatible with its sibling packages for [basic](https://github.com/octokit/auth-basic.js), [GitHub App](https://github.com/octokit/auth-app.js) and [OAuth app](https://github.com/octokit/auth.js) authentication.
-
-<!-- toc -->
-
-- [Usage](#usage)
-- [`createTokenAuth(token) options`](#createtokenauthtoken-options)
-- [`auth()`](#auth)
-- [Authentication object](#authentication-object)
-- [`auth.hook(request, route, options)` or `auth.hook(request, options)`](#authhookrequest-route-options-or-authhookrequest-options)
-- [Find more information](#find-more-information)
-  - [Find out what scopes are enabled for oauth tokens](#find-out-what-scopes-are-enabled-for-oauth-tokens)
-  - [Find out if token is a personal access token or if it belongs to an OAuth app](#find-out-if-token-is-a-personal-access-token-or-if-it-belongs-to-an-oauth-app)
-  - [Find out what permissions are enabled for a repository](#find-out-what-permissions-are-enabled-for-a-repository)
-  - [Use token for git operations](#use-token-for-git-operations)
-- [License](#license)
-
-<!-- tocstop -->
-
-## Usage
-
-<table>
-<tbody valign=top align=left>
-<tr><th>
-Browsers
-</th><td width=100%>
-
-Load `@octokit/auth-token` directly from [cdn.skypack.dev](https://cdn.skypack.dev)
-
-```html
-<script type="module">
-  import { createTokenAuth } from "https://cdn.skypack.dev/@octokit/auth-token";
-</script>
-```
-
-</td></tr>
-<tr><th>
-Node
-</th><td>
-
-Install with <code>npm install @octokit/auth-token</code>
-
-```js
-const { createTokenAuth } = require("@octokit/auth-token");
-// or: import { createTokenAuth } from "@octokit/auth-token";
-```
-
-</td></tr>
-</tbody>
-</table>
-
-```js
-const auth = createTokenAuth("ghp_PersonalAccessToken01245678900000000");
-const authentication = await auth();
-// {
-//   type: 'token',
-//   token: 'ghp_PersonalAccessToken01245678900000000',
-//   tokenType: 'oauth'
-// }
-```
-
-## `createTokenAuth(token) options`
-
-The `createTokenAuth` method accepts a single argument of type string, which is the token. The passed token can be one of the following:
-
-- [Personal access token](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line)
-- [OAuth access token](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/)
-- [GITHUB_TOKEN provided to GitHub Actions](https://developer.github.com/actions/creating-github-actions/accessing-the-runtime-environment/#environment-variables)
-- Installation access token ([server-to-server](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation))
-- User authentication for installation ([user-to-server](https://docs.github.com/en/developers/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps))
-
-Examples
-
-```js
-// Personal access token or OAuth access token
-createTokenAuth("ghp_PersonalAccessToken01245678900000000");
-// {
-//   type: 'token',
-//   token: 'ghp_PersonalAccessToken01245678900000000',
-//   tokenType: 'oauth'
-// }
-
-// Installation access token or GitHub Action token
-createTokenAuth("ghs_InstallallationOrActionToken00000000");
-// {
-//   type: 'token',
-//   token: 'ghs_InstallallationOrActionToken00000000',
-//   tokenType: 'installation'
-// }
-
-// Installation access token or GitHub Action token
-createTokenAuth("ghu_InstallationUserToServer000000000000");
-// {
-//   type: 'token',
-//   token: 'ghu_InstallationUserToServer000000000000',
-//   tokenType: 'user-to-server'
-// }
-```
-
-## `auth()`
-
-The `auth()` method has no options. It returns a promise which resolves with the the authentication object.
-
-## Authentication object
-
-<table width="100%">
-  <thead align=left>
-    <tr>
-      <th width=150>
-        name
-      </th>
-      <th width=70>
-        type
-      </th>
-      <th>
-        description
-      </th>
-    </tr>
-  </thead>
-  <tbody align=left valign=top>
-    <tr>
-      <th>
-        <code>type</code>
-      </th>
-      <th>
-        <code>string</code>
-      </th>
-      <td>
-        <code>"token"</code>
-      </td>
-    </tr>
-    <tr>
-      <th>
-        <code>token</code>
-      </th>
-      <th>
-        <code>string</code>
-      </th>
-      <td>
-        The provided token.
-      </td>
-    </tr>
-    <tr>
-      <th>
-        <code>tokenType</code>
-      </th>
-      <th>
-        <code>string</code>
-      </th>
-      <td>
-        Can be either <code>"oauth"</code> for personal access tokens and OAuth tokens, <code>"installation"</code> for installation access tokens (includes <code>GITHUB_TOKEN</code> provided to GitHub Actions), <code>"app"</code> for a GitHub App JSON Web Token, or <code>"user-to-server"</code> for a user authentication token through an app installation.
-      </td>
-    </tr>
-  </tbody>
-</table>
-
-## `auth.hook(request, route, options)` or `auth.hook(request, options)`
-
-`auth.hook()` hooks directly into the request life cycle. It authenticates the request using the provided token.
-
-The `request` option is an instance of [`@octokit/request`](https://github.com/octokit/request.js#readme). The `route`/`options` parameters are the same as for the [`request()` method](https://github.com/octokit/request.js#request).
-
-`auth.hook()` can be called directly to send an authenticated request
-
-```js
-const { data: authorizations } = await auth.hook(
-  request,
-  "GET /authorizations"
-);
-```
-
-Or it can be passed as option to [`request()`](https://github.com/octokit/request.js#request).
-
-```js
-const requestWithAuth = request.defaults({
-  request: {
-    hook: auth.hook,
-  },
-});
-
-const { data: authorizations } = await requestWithAuth("GET /authorizations");
-```
-
-## Find more information
-
-`auth()` does not send any requests, it only transforms the provided token string into an authentication object.
-
-Here is a list of things you can do to retrieve further information
-
-### Find out what scopes are enabled for oauth tokens
-
-Note that this does not work for installations. There is no way to retrieve permissions based on an installation access tokens.
-
-```js
-const TOKEN = "ghp_PersonalAccessToken01245678900000000";
-
-const auth = createTokenAuth(TOKEN);
-const authentication = await auth();
-
-const response = await request("HEAD /");
-const scopes = response.headers["x-oauth-scopes"].split(/,\s+/);
-
-if (scopes.length) {
-  console.log(
-    `"${TOKEN}" has ${scopes.length} scopes enabled: ${scopes.join(", ")}`
-  );
-} else {
-  console.log(`"${TOKEN}" has no scopes enabled`);
-}
-```
-
-### Find out if token is a personal access token or if it belongs to an OAuth app
-
-```js
-const TOKEN = "ghp_PersonalAccessToken01245678900000000";
-
-const auth = createTokenAuth(TOKEN);
-const authentication = await auth();
-
-const response = await request("HEAD /");
-const clientId = response.headers["x-oauth-client-id"];
-
-if (clientId) {
-  console.log(
-    `"${token}" is an OAuth token, its app’s client_id is ${clientId}.`
-  );
-} else {
-  console.log(`"${token}" is a personal access token`);
-}
-```
-
-### Find out what permissions are enabled for a repository
-
-Note that the `permissions` key is not set when authenticated using an installation access token.
-
-```js
-const TOKEN = "ghp_PersonalAccessToken01245678900000000";
-
-const auth = createTokenAuth(TOKEN);
-const authentication = await auth();
-
-const response = await request("GET /repos/{owner}/{repo}", {
-  owner: "octocat",
-  repo: "hello-world",
-});
-
-console.log(response.data.permissions);
-// {
-//   admin: true,
-//   push: true,
-//   pull: true
-// }
-```
-
-### Use token for git operations
-
-Both OAuth and installation access tokens can be used for git operations. However, when using with an installation, [the token must be prefixed with `x-access-token`](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#http-based-git-access-by-an-installation).
-
-This example is using the [`execa`](https://github.com/sindresorhus/execa) package to run a `git push` command.
-
-```js
-const TOKEN = "ghp_PersonalAccessToken01245678900000000";
-
-const auth = createTokenAuth(TOKEN);
-const { token, tokenType } = await auth();
-const tokenWithPrefix =
-  tokenType === "installation" ? `x-access-token:${token}` : token;
-
-const repositoryUrl = `https://${tokenWithPrefix}@github.com/octocat/hello-world.git`;
-
-const { stdout } = await execa("git", ["push", repositoryUrl]);
-console.log(stdout);
-```
-
-## License
-
-[MIT](LICENSE)
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-node/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-node/index.js
deleted file mode 100644
index 93ea7c8..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-node/index.js
+++ /dev/null
@@ -1,79 +0,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
-  if (from && typeof from === "object" || typeof from === "function") {
-    for (let key of __getOwnPropNames(from))
-      if (!__hasOwnProp.call(to, key) && key !== except)
-        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
-  }
-  return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
-  createTokenAuth: () => createTokenAuth
-});
-module.exports = __toCommonJS(dist_src_exports);
-
-// pkg/dist-src/auth.js
-var REGEX_IS_INSTALLATION_LEGACY = /^v1\./;
-var REGEX_IS_INSTALLATION = /^ghs_/;
-var REGEX_IS_USER_TO_SERVER = /^ghu_/;
-async function auth(token) {
-  const isApp = token.split(/\./).length === 3;
-  const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);
-  const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);
-  const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth";
-  return {
-    type: "token",
-    token,
-    tokenType
-  };
-}
-
-// pkg/dist-src/with-authorization-prefix.js
-function withAuthorizationPrefix(token) {
-  if (token.split(/\./).length === 3) {
-    return `bearer ${token}`;
-  }
-  return `token ${token}`;
-}
-
-// pkg/dist-src/hook.js
-async function hook(token, request, route, parameters) {
-  const endpoint = request.endpoint.merge(
-    route,
-    parameters
-  );
-  endpoint.headers.authorization = withAuthorizationPrefix(token);
-  return request(endpoint);
-}
-
-// pkg/dist-src/index.js
-var createTokenAuth = function createTokenAuth2(token) {
-  if (!token) {
-    throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
-  }
-  if (typeof token !== "string") {
-    throw new Error(
-      "[@octokit/auth-token] Token passed to createTokenAuth is not a string"
-    );
-  }
-  token = token.replace(/^(token|bearer) +/i, "");
-  return Object.assign(auth.bind(null, token), {
-    hook: hook.bind(null, token)
-  });
-};
-// Annotate the CommonJS export names for ESM import in node:
-0 && (module.exports = {
-  createTokenAuth
-});
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-node/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-node/index.js.map
deleted file mode 100644
index deff6da..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-node/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/index.js", "../dist-src/auth.js", "../dist-src/with-authorization-prefix.js", "../dist-src/hook.js"],
-  "sourcesContent": ["import { auth } from \"./auth\";\nimport { hook } from \"./hook\";\nconst createTokenAuth = function createTokenAuth2(token) {\n  if (!token) {\n    throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n  }\n  if (typeof token !== \"string\") {\n    throw new Error(\n      \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n    );\n  }\n  token = token.replace(/^(token|bearer) +/i, \"\");\n  return Object.assign(auth.bind(null, token), {\n    hook: hook.bind(null, token)\n  });\n};\nexport {\n  createTokenAuth\n};\n", "const REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nconst REGEX_IS_INSTALLATION = /^ghs_/;\nconst REGEX_IS_USER_TO_SERVER = /^ghu_/;\nasync function auth(token) {\n  const isApp = token.split(/\\./).length === 3;\n  const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);\n  const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n  const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n  return {\n    type: \"token\",\n    token,\n    tokenType\n  };\n}\nexport {\n  auth\n};\n", "function withAuthorizationPrefix(token) {\n  if (token.split(/\\./).length === 3) {\n    return `bearer ${token}`;\n  }\n  return `token ${token}`;\n}\nexport {\n  withAuthorizationPrefix\n};\n", "import { withAuthorizationPrefix } from \"./with-authorization-prefix\";\nasync function hook(token, request, route, parameters) {\n  const endpoint = request.endpoint.merge(\n    route,\n    parameters\n  );\n  endpoint.headers.authorization = withAuthorizationPrefix(token);\n  return request(endpoint);\n}\nexport {\n  hook\n};\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAM,+BAA+B;AACrC,IAAM,wBAAwB;AAC9B,IAAM,0BAA0B;AAChC,eAAe,KAAK,OAAO;AACzB,QAAM,QAAQ,MAAM,MAAM,IAAI,EAAE,WAAW;AAC3C,QAAM,iBAAiB,6BAA6B,KAAK,KAAK,KAAK,sBAAsB,KAAK,KAAK;AACnG,QAAM,iBAAiB,wBAAwB,KAAK,KAAK;AACzD,QAAM,YAAY,QAAQ,QAAQ,iBAAiB,iBAAiB,iBAAiB,mBAAmB;AACxG,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF;AACF;;;ACbA,SAAS,wBAAwB,OAAO;AACtC,MAAI,MAAM,MAAM,IAAI,EAAE,WAAW,GAAG;AAClC,WAAO,UAAU;AAAA,EACnB;AACA,SAAO,SAAS;AAClB;;;ACJA,eAAe,KAAK,OAAO,SAAS,OAAO,YAAY;AACrD,QAAM,WAAW,QAAQ,SAAS;AAAA,IAChC;AAAA,IACA;AAAA,EACF;AACA,WAAS,QAAQ,gBAAgB,wBAAwB,KAAK;AAC9D,SAAO,QAAQ,QAAQ;AACzB;;;AHNA,IAAM,kBAAkB,SAAS,iBAAiB,OAAO;AACvD,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,0DAA0D;AAAA,EAC5E;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,UAAQ,MAAM,QAAQ,sBAAsB,EAAE;AAC9C,SAAO,OAAO,OAAO,KAAK,KAAK,MAAM,KAAK,GAAG;AAAA,IAC3C,MAAM,KAAK,KAAK,MAAM,KAAK;AAAA,EAC7B,CAAC;AACH;",
-  "names": []
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-src/auth.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-src/auth.js
deleted file mode 100644
index d3efbf5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-src/auth.js
+++ /dev/null
@@ -1,17 +0,0 @@
-const REGEX_IS_INSTALLATION_LEGACY = /^v1\./;
-const REGEX_IS_INSTALLATION = /^ghs_/;
-const REGEX_IS_USER_TO_SERVER = /^ghu_/;
-async function auth(token) {
-  const isApp = token.split(/\./).length === 3;
-  const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);
-  const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);
-  const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth";
-  return {
-    type: "token",
-    token,
-    tokenType
-  };
-}
-export {
-  auth
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-src/hook.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-src/hook.js
deleted file mode 100644
index 371a041..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-src/hook.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { withAuthorizationPrefix } from "./with-authorization-prefix";
-async function hook(token, request, route, parameters) {
-  const endpoint = request.endpoint.merge(
-    route,
-    parameters
-  );
-  endpoint.headers.authorization = withAuthorizationPrefix(token);
-  return request(endpoint);
-}
-export {
-  hook
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-src/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-src/index.js
deleted file mode 100644
index 445cfaa..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-src/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import { auth } from "./auth";
-import { hook } from "./hook";
-const createTokenAuth = function createTokenAuth2(token) {
-  if (!token) {
-    throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
-  }
-  if (typeof token !== "string") {
-    throw new Error(
-      "[@octokit/auth-token] Token passed to createTokenAuth is not a string"
-    );
-  }
-  token = token.replace(/^(token|bearer) +/i, "");
-  return Object.assign(auth.bind(null, token), {
-    hook: hook.bind(null, token)
-  });
-};
-export {
-  createTokenAuth
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js
deleted file mode 100644
index 02a4bb5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js
+++ /dev/null
@@ -1,9 +0,0 @@
-function withAuthorizationPrefix(token) {
-  if (token.split(/\./).length === 3) {
-    return `bearer ${token}`;
-  }
-  return `token ${token}`;
-}
-export {
-  withAuthorizationPrefix
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/auth.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/auth.d.ts
deleted file mode 100644
index 941d8c2..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/auth.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import type { Token, Authentication } from "./types";
-export declare function auth(token: Token): Promise<Authentication>;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/hook.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/hook.d.ts
deleted file mode 100644
index ad457dc..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/hook.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import type { AnyResponse, EndpointOptions, RequestInterface, RequestParameters, Route, Token } from "./types";
-export declare function hook(token: Token, request: RequestInterface, route: Route | EndpointOptions, parameters?: RequestParameters): Promise<AnyResponse>;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/index.d.ts
deleted file mode 100644
index 115bb7f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/index.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import type { StrategyInterface, Token, Authentication } from "./types";
-export type Types = {
-    StrategyOptions: Token;
-    AuthOptions: never;
-    Authentication: Authentication;
-};
-export declare const createTokenAuth: StrategyInterface;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/types.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/types.d.ts
deleted file mode 100644
index 4267fa1..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/types.d.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import * as OctokitTypes from "@octokit/types";
-export type AnyResponse = OctokitTypes.OctokitResponse<any>;
-export type StrategyInterface = OctokitTypes.StrategyInterface<[
-    Token
-], [
-], Authentication>;
-export type EndpointDefaults = OctokitTypes.EndpointDefaults;
-export type EndpointOptions = OctokitTypes.EndpointOptions;
-export type RequestParameters = OctokitTypes.RequestParameters;
-export type RequestInterface = OctokitTypes.RequestInterface;
-export type Route = OctokitTypes.Route;
-export type Token = string;
-export type OAuthTokenAuthentication = {
-    type: "token";
-    tokenType: "oauth";
-    token: Token;
-};
-export type InstallationTokenAuthentication = {
-    type: "token";
-    tokenType: "installation";
-    token: Token;
-};
-export type AppAuthentication = {
-    type: "token";
-    tokenType: "app";
-    token: Token;
-};
-export type UserToServerAuthentication = {
-    type: "token";
-    tokenType: "user-to-server";
-    token: Token;
-};
-export type Authentication = OAuthTokenAuthentication | InstallationTokenAuthentication | AppAuthentication | UserToServerAuthentication;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts
deleted file mode 100644
index 2e52c31..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Prefix token for usage in the Authorization header
- *
- * @param token OAuth token or JSON Web Token
- */
-export declare function withAuthorizationPrefix(token: string): string;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-web/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-web/index.js
deleted file mode 100644
index b6f7249..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-web/index.js
+++ /dev/null
@@ -1,52 +0,0 @@
-// pkg/dist-src/auth.js
-var REGEX_IS_INSTALLATION_LEGACY = /^v1\./;
-var REGEX_IS_INSTALLATION = /^ghs_/;
-var REGEX_IS_USER_TO_SERVER = /^ghu_/;
-async function auth(token) {
-  const isApp = token.split(/\./).length === 3;
-  const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);
-  const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);
-  const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth";
-  return {
-    type: "token",
-    token,
-    tokenType
-  };
-}
-
-// pkg/dist-src/with-authorization-prefix.js
-function withAuthorizationPrefix(token) {
-  if (token.split(/\./).length === 3) {
-    return `bearer ${token}`;
-  }
-  return `token ${token}`;
-}
-
-// pkg/dist-src/hook.js
-async function hook(token, request, route, parameters) {
-  const endpoint = request.endpoint.merge(
-    route,
-    parameters
-  );
-  endpoint.headers.authorization = withAuthorizationPrefix(token);
-  return request(endpoint);
-}
-
-// pkg/dist-src/index.js
-var createTokenAuth = function createTokenAuth2(token) {
-  if (!token) {
-    throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
-  }
-  if (typeof token !== "string") {
-    throw new Error(
-      "[@octokit/auth-token] Token passed to createTokenAuth is not a string"
-    );
-  }
-  token = token.replace(/^(token|bearer) +/i, "");
-  return Object.assign(auth.bind(null, token), {
-    hook: hook.bind(null, token)
-  });
-};
-export {
-  createTokenAuth
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-web/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-web/index.js.map
deleted file mode 100644
index b84a1ea..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/dist-web/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/auth.js", "../dist-src/with-authorization-prefix.js", "../dist-src/hook.js", "../dist-src/index.js"],
-  "sourcesContent": ["const REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nconst REGEX_IS_INSTALLATION = /^ghs_/;\nconst REGEX_IS_USER_TO_SERVER = /^ghu_/;\nasync function auth(token) {\n  const isApp = token.split(/\\./).length === 3;\n  const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);\n  const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n  const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n  return {\n    type: \"token\",\n    token,\n    tokenType\n  };\n}\nexport {\n  auth\n};\n", "function withAuthorizationPrefix(token) {\n  if (token.split(/\\./).length === 3) {\n    return `bearer ${token}`;\n  }\n  return `token ${token}`;\n}\nexport {\n  withAuthorizationPrefix\n};\n", "import { withAuthorizationPrefix } from \"./with-authorization-prefix\";\nasync function hook(token, request, route, parameters) {\n  const endpoint = request.endpoint.merge(\n    route,\n    parameters\n  );\n  endpoint.headers.authorization = withAuthorizationPrefix(token);\n  return request(endpoint);\n}\nexport {\n  hook\n};\n", "import { auth } from \"./auth\";\nimport { hook } from \"./hook\";\nconst createTokenAuth = function createTokenAuth2(token) {\n  if (!token) {\n    throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n  }\n  if (typeof token !== \"string\") {\n    throw new Error(\n      \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n    );\n  }\n  token = token.replace(/^(token|bearer) +/i, \"\");\n  return Object.assign(auth.bind(null, token), {\n    hook: hook.bind(null, token)\n  });\n};\nexport {\n  createTokenAuth\n};\n"],
-  "mappings": ";AAAA,IAAM,+BAA+B;AACrC,IAAM,wBAAwB;AAC9B,IAAM,0BAA0B;AAChC,eAAe,KAAK,OAAO;AACzB,QAAM,QAAQ,MAAM,MAAM,IAAI,EAAE,WAAW;AAC3C,QAAM,iBAAiB,6BAA6B,KAAK,KAAK,KAAK,sBAAsB,KAAK,KAAK;AACnG,QAAM,iBAAiB,wBAAwB,KAAK,KAAK;AACzD,QAAM,YAAY,QAAQ,QAAQ,iBAAiB,iBAAiB,iBAAiB,mBAAmB;AACxG,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF;AACF;;;ACbA,SAAS,wBAAwB,OAAO;AACtC,MAAI,MAAM,MAAM,IAAI,EAAE,WAAW,GAAG;AAClC,WAAO,UAAU;AAAA,EACnB;AACA,SAAO,SAAS;AAClB;;;ACJA,eAAe,KAAK,OAAO,SAAS,OAAO,YAAY;AACrD,QAAM,WAAW,QAAQ,SAAS;AAAA,IAChC;AAAA,IACA;AAAA,EACF;AACA,WAAS,QAAQ,gBAAgB,wBAAwB,KAAK;AAC9D,SAAO,QAAQ,QAAQ;AACzB;;;ACNA,IAAM,kBAAkB,SAAS,iBAAiB,OAAO;AACvD,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,0DAA0D;AAAA,EAC5E;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,UAAQ,MAAM,QAAQ,sBAAsB,EAAE;AAC9C,SAAO,OAAO,OAAO,KAAK,KAAK,MAAM,KAAK,GAAG;AAAA,IAC3C,MAAM,KAAK,KAAK,MAAM,KAAK;AAAA,EAC7B,CAAC;AACH;",
-  "names": []
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/package.json b/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/package.json
deleted file mode 100644
index cecbfb6..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/auth-token/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "name": "@octokit/auth-token",
-  "publishConfig": {
-    "access": "public"
-  },
-  "version": "4.0.0",
-  "description": "GitHub API token authentication for browsers and Node.js",
-  "repository": "github:octokit/auth-token.js",
-  "keywords": [
-    "github",
-    "octokit",
-    "authentication",
-    "api"
-  ],
-  "author": "Gregor Martynus (https://github.com/gr2m)",
-  "license": "MIT",
-  "devDependencies": {
-    "@octokit/request": "^6.0.0",
-    "@octokit/tsconfig": "^2.0.0",
-    "@octokit/types": "^9.2.3",
-    "@types/fetch-mock": "^7.3.1",
-    "@types/jest": "^29.0.0",
-    "esbuild": "^0.18.0",
-    "fetch-mock": "^9.0.0",
-    "glob": "^10.2.6",
-    "jest": "^29.0.0",
-    "prettier": "2.8.8",
-    "semantic-release": "^21.0.0",
-    "ts-jest": "^29.0.0",
-    "typescript": "^5.0.0"
-  },
-  "engines": {
-    "node": ">= 18"
-  },
-  "files": [
-    "dist-*/**",
-    "bin/**"
-  ],
-  "main": "dist-node/index.js",
-  "browser": "dist-web/index.js",
-  "types": "dist-types/index.d.ts",
-  "module": "dist-src/index.js",
-  "sideEffects": false
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@octokit/core/LICENSE
deleted file mode 100644
index ef2c18e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright (c) 2019 Octokit contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/README.md b/actions/bcr-pr-review-notifier/node_modules/@octokit/core/README.md
deleted file mode 100644
index 985841b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/README.md
+++ /dev/null
@@ -1,448 +0,0 @@
-# core.js
-
-> Extendable client for GitHub's REST & GraphQL APIs
-
-[![@latest](https://img.shields.io/npm/v/@octokit/core.svg)](https://www.npmjs.com/package/@octokit/core)
-[![Build Status](https://github.com/octokit/core.js/workflows/Test/badge.svg)](https://github.com/octokit/core.js/actions?query=workflow%3ATest+branch%3Amain)
-
-<!-- toc -->
-
-- [Usage](#usage)
-  - [REST API example](#rest-api-example)
-  - [GraphQL example](#graphql-example)
-- [Options](#options)
-- [Defaults](#defaults)
-- [Authentication](#authentication)
-- [Logging](#logging)
-- [Hooks](#hooks)
-- [Plugins](#plugins)
-- [Build your own Octokit with Plugins and Defaults](#build-your-own-octokit-with-plugins-and-defaults)
-- [LICENSE](#license)
-
-<!-- tocstop -->
-
-If you need a minimalistic library to utilize GitHub's [REST API](https://developer.github.com/v3/) and [GraphQL API](https://developer.github.com/v4/) which you can extend with plugins as needed, then `@octokit/core` is a great starting point.
-
-If you don't need the Plugin API then using [`@octokit/request`](https://github.com/octokit/request.js/) or [`@octokit/graphql`](https://github.com/octokit/graphql.js/) directly is a good alternative.
-
-## Usage
-
-<table>
-<tbody valign=top align=left>
-<tr><th>
-Browsers
-</th><td width=100%>
-Load <code>@octokit/core</code> directly from <a href="https://esm.sh">esm.sh</a>
-
-```html
-<script type="module">
-  import { Octokit } from "https://esm.sh/@octokit/core";
-</script>
-```
-
-</td></tr>
-<tr><th>
-Node
-</th><td>
-
-Install with <code>npm install @octokit/core</code>
-
-```js
-const { Octokit } = require("@octokit/core");
-// or: import { Octokit } from "@octokit/core";
-```
-
-</td></tr>
-</tbody>
-</table>
-
-### REST API example
-
-```js
-// Create a personal access token at https://github.com/settings/tokens/new?scopes=repo
-const octokit = new Octokit({ auth: `personal-access-token123` });
-
-const response = await octokit.request("GET /orgs/{org}/repos", {
-  org: "octokit",
-  type: "private",
-});
-```
-
-See [`@octokit/request`](https://github.com/octokit/request.js) for full documentation of the `.request` method.
-
-### GraphQL example
-
-```js
-const octokit = new Octokit({ auth: `secret123` });
-
-const response = await octokit.graphql(
-  `query ($login: String!) {
-    organization(login: $login) {
-      repositories(privacy: PRIVATE) {
-        totalCount
-      }
-    }
-  }`,
-  { login: "octokit" },
-);
-```
-
-See [`@octokit/graphql`](https://github.com/octokit/graphql.js) for full documentation of the `.graphql` method.
-
-## Options
-
-<table>
-  <thead align=left>
-    <tr>
-      <th>
-        name
-      </th>
-      <th>
-        type
-      </th>
-      <th width=100%>
-        description
-      </th>
-    </tr>
-  </thead>
-  <tbody align=left valign=top>
-    <tr>
-      <th>
-        <code>options.authStrategy</code>
-      </th>
-      <td>
-        <code>Function<code>
-      </td>
-      <td>
-        Defaults to <a href="https://github.com/octokit/auth-token.js#readme"><code>@octokit/auth-token</code></a>. See <a href="#authentication">Authentication</a> below for examples.
-      </td>
-    </tr>
-    <tr>
-      <th>
-        <code>options.auth</code>
-      </th>
-      <td>
-        <code>String</code> or <code>Object</code>
-      </td>
-      <td>
-        See <a href="#authentication">Authentication</a> below for examples.
-      </td>
-    </tr>
-    <tr>
-      <th>
-        <code>options.baseUrl</code>
-      </th>
-      <td>
-        <code>String</code>
-      </td>
-      <td>
-
-When using with GitHub Enterprise Server, set `options.baseUrl` to the root URL of the API. For example, if your GitHub Enterprise Server's hostname is `github.acme-inc.com`, then set `options.baseUrl` to `https://github.acme-inc.com/api/v3`. Example
-
-```js
-const octokit = new Octokit({
-  baseUrl: "https://github.acme-inc.com/api/v3",
-});
-```
-
-</td></tr>
-    <tr>
-      <th>
-        <code>options.previews</code>
-      </th>
-      <td>
-        <code>Array of Strings</code>
-      </td>
-      <td>
-
-Some REST API endpoints require preview headers to be set, or enable
-additional features. Preview headers can be set on a per-request basis, e.g.
-
-```js
-octokit.request("POST /repos/{owner}/{repo}/pulls", {
-  mediaType: {
-    previews: ["shadow-cat"],
-  },
-  owner,
-  repo,
-  title: "My pull request",
-  base: "main",
-  head: "my-feature",
-  draft: true,
-});
-```
-
-You can also set previews globally, by setting the `options.previews` option on the constructor. Example:
-
-```js
-const octokit = new Octokit({
-  previews: ["shadow-cat"],
-});
-```
-
-</td></tr>
-    <tr>
-      <th>
-        <code>options.request</code>
-      </th>
-      <td>
-        <code>Object</code>
-      </td>
-      <td>
-
-Set a default request timeout (`options.request.timeout`) or an [`http(s).Agent`](https://nodejs.org/api/http.html#http_class_http_agent) e.g. for proxy usage (Node only, `options.request.agent`).
-
-There are more `options.request.*` options, see [`@octokit/request` options](https://github.com/octokit/request.js#request). `options.request` can also be set on a per-request basis.
-
-</td></tr>
-    <tr>
-      <th>
-        <code>options.timeZone</code>
-      </th>
-      <td>
-        <code>String</code>
-      </td>
-      <td>
-
-Sets the `Time-Zone` header which defines a timezone according to the [list of names from the Olson database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
-
-```js
-const octokit = new Octokit({
-  timeZone: "America/Los_Angeles",
-});
-```
-
-The time zone header will determine the timezone used for generating the timestamp when creating commits. See [GitHub's Timezones documentation](https://developer.github.com/v3/#timezones).
-
-</td></tr>
-    <tr>
-      <th>
-        <code>options.userAgent</code>
-      </th>
-      <td>
-        <code>String</code>
-      </td>
-      <td>
-
-A custom user agent string for your app or library. Example
-
-```js
-const octokit = new Octokit({
-  userAgent: "my-app/v1.2.3",
-});
-```
-
-</td></tr>
-  </tbody>
-</table>
-
-## Defaults
-
-You can create a new Octokit class with customized default options.
-
-```js
-const MyOctokit = Octokit.defaults({
-  auth: "personal-access-token123",
-  baseUrl: "https://github.acme-inc.com/api/v3",
-  userAgent: "my-app/v1.2.3",
-});
-const octokit1 = new MyOctokit();
-const octokit2 = new MyOctokit();
-```
-
-If you pass additional options to your new constructor, the options will be merged shallowly.
-
-```js
-const MyOctokit = Octokit.defaults({
-  foo: {
-    opt1: 1,
-  },
-});
-const octokit = new MyOctokit({
-  foo: {
-    opt2: 1,
-  },
-});
-// options will be { foo: { opt2: 1 }}
-```
-
-If you need a deep or conditional merge, you can pass a function instead.
-
-```js
-const MyOctokit = Octokit.defaults((options) => {
-  return {
-    foo: Object.assign({}, options.foo, { opt1: 1 }),
-  };
-});
-const octokit = new MyOctokit({
-  foo: { opt2: 1 },
-});
-// options will be { foo: { opt1: 1, opt2: 1 }}
-```
-
-Be careful about mutating the `options` object in the `Octokit.defaults` callback, as it can have unforeseen consequences.
-
-## Authentication
-
-Authentication is optional for some REST API endpoints accessing public data, but is required for GraphQL queries. Using authentication also increases your [API rate limit](https://developer.github.com/v3/#rate-limiting).
-
-By default, Octokit authenticates using the [token authentication strategy](https://github.com/octokit/auth-token.js). Pass in a token using `options.auth`. It can be a personal access token, an OAuth token, an installation access token or a JSON Web Token for GitHub App authentication. The `Authorization` header will be set according to the type of token.
-
-```js
-import { Octokit } from "@octokit/core";
-
-const octokit = new Octokit({
-  auth: "mypersonalaccesstoken123",
-});
-
-const { data } = await octokit.request("/user");
-```
-
-To use a different authentication strategy, set `options.authStrategy`. A list of authentication strategies is available at [octokit/authentication-strategies.js](https://github.com/octokit/authentication-strategies.js/#readme).
-
-Example
-
-```js
-import { Octokit } from "@octokit/core";
-import { createAppAuth } from "@octokit/auth-app";
-
-const appOctokit = new Octokit({
-  authStrategy: createAppAuth,
-  auth: {
-    appId: 123,
-    privateKey: process.env.PRIVATE_KEY,
-  },
-});
-
-const { data } = await appOctokit.request("/app");
-```
-
-The `.auth()` method returned by the current authentication strategy can be accessed at `octokit.auth()`. Example
-
-```js
-const { token } = await appOctokit.auth({
-  type: "installation",
-  installationId: 123,
-});
-```
-
-## Logging
-
-There are four built-in log methods
-
-1. `octokit.log.debug(message[, additionalInfo])`
-1. `octokit.log.info(message[, additionalInfo])`
-1. `octokit.log.warn(message[, additionalInfo])`
-1. `octokit.log.error(message[, additionalInfo])`
-
-They can be configured using the [`log` client option](client-options). By default, `octokit.log.debug()` and `octokit.log.info()` are no-ops, while the other two call `console.warn()` and `console.error()` respectively.
-
-This is useful if you build reusable [plugins](#plugins).
-
-If you would like to make the log level configurable using an environment variable or external option, we recommend the [console-log-level](https://github.com/watson/console-log-level) package. Example
-
-```js
-const octokit = new Octokit({
-  log: require("console-log-level")({ level: "info" }),
-});
-```
-
-## Hooks
-
-You can customize Octokit's request lifecycle with hooks.
-
-```js
-octokit.hook.before("request", async (options) => {
-  validate(options);
-});
-octokit.hook.after("request", async (response, options) => {
-  console.log(`${options.method} ${options.url}: ${response.status}`);
-});
-octokit.hook.error("request", async (error, options) => {
-  if (error.status === 304) {
-    return findInCache(error.response.headers.etag);
-  }
-
-  throw error;
-});
-octokit.hook.wrap("request", async (request, options) => {
-  // add logic before, after, catch errors or replace the request altogether
-  return request(options);
-});
-```
-
-See [before-after-hook](https://github.com/gr2m/before-after-hook#readme) for more documentation on hooks.
-
-## Plugins
-
-Octokit’s functionality can be extended using plugins. The `Octokit.plugin()` method accepts a plugin (or many) and returns a new constructor.
-
-A plugin is a function which gets two arguments:
-
-1. the current instance
-2. the options passed to the constructor.
-
-In order to extend `octokit`'s API, the plugin must return an object with the new methods. Please refrain from adding methods directly to the `octokit` instance, especialy if you depend on keys that do not exist in `@octokit/core`, such as `octokit.rest`.
-
-```js
-// index.js
-const { Octokit } = require("@octokit/core")
-const MyOctokit = Octokit.plugin(
-  require("./lib/my-plugin"),
-  require("octokit-plugin-example")
-);
-
-const octokit = new MyOctokit({ greeting: "Moin moin" });
-octokit.helloWorld(); // logs "Moin moin, world!"
-octokit.request("GET /"); // logs "GET / - 200 in 123ms"
-
-// lib/my-plugin.js
-module.exports = (octokit, options = { greeting: "Hello" }) => {
-  // hook into the request lifecycle
-  octokit.hook.wrap("request", async (request, options) => {
-    const time = Date.now();
-    const response = await request(options);
-    console.log(
-      `${options.method} ${options.url} – ${response.status} in ${Date.now() -
-        time}ms`
-    );
-    return response;
-  });
-
-  // add a custom method
-  return {
-    helloWorld: () => console.log(`${options.greeting}, world!`);
-  }
-};
-```
-
-## Build your own Octokit with Plugins and Defaults
-
-You can build your own Octokit class with preset default options and plugins. In fact, this is mostly how the `@octokit/<context>` modules work, such as [`@octokit/action`](https://github.com/octokit/action.js):
-
-```js
-const { Octokit } = require("@octokit/core");
-const MyActionOctokit = Octokit.plugin(
-  require("@octokit/plugin-paginate-rest").paginateRest,
-  require("@octokit/plugin-throttling").throttling,
-  require("@octokit/plugin-retry").retry,
-).defaults({
-  throttle: {
-    onAbuseLimit: (retryAfter, options) => {
-      /* ... */
-    },
-    onRateLimit: (retryAfter, options) => {
-      /* ... */
-    },
-  },
-  authStrategy: require("@octokit/auth-action").createActionAuth,
-  userAgent: `my-octokit-action/v1.2.3`,
-});
-
-const octokit = new MyActionOctokit();
-const installations = await octokit.paginate("GET /app/installations");
-```
-
-## LICENSE
-
-[MIT](LICENSE)
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-node/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-node/index.js
deleted file mode 100644
index c405227..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-node/index.js
+++ /dev/null
@@ -1,163 +0,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
-  if (from && typeof from === "object" || typeof from === "function") {
-    for (let key of __getOwnPropNames(from))
-      if (!__hasOwnProp.call(to, key) && key !== except)
-        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
-  }
-  return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
-  Octokit: () => Octokit
-});
-module.exports = __toCommonJS(dist_src_exports);
-var import_universal_user_agent = require("universal-user-agent");
-var import_before_after_hook = require("before-after-hook");
-var import_request = require("@octokit/request");
-var import_graphql = require("@octokit/graphql");
-var import_auth_token = require("@octokit/auth-token");
-
-// pkg/dist-src/version.js
-var VERSION = "5.1.0";
-
-// pkg/dist-src/index.js
-var noop = () => {
-};
-var consoleWarn = console.warn.bind(console);
-var consoleError = console.error.bind(console);
-var userAgentTrail = `octokit-core.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;
-var Octokit = class {
-  static {
-    this.VERSION = VERSION;
-  }
-  static defaults(defaults) {
-    const OctokitWithDefaults = class extends this {
-      constructor(...args) {
-        const options = args[0] || {};
-        if (typeof defaults === "function") {
-          super(defaults(options));
-          return;
-        }
-        super(
-          Object.assign(
-            {},
-            defaults,
-            options,
-            options.userAgent && defaults.userAgent ? {
-              userAgent: `${options.userAgent} ${defaults.userAgent}`
-            } : null
-          )
-        );
-      }
-    };
-    return OctokitWithDefaults;
-  }
-  static {
-    this.plugins = [];
-  }
-  /**
-   * Attach a plugin (or many) to your Octokit instance.
-   *
-   * @example
-   * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
-   */
-  static plugin(...newPlugins) {
-    const currentPlugins = this.plugins;
-    const NewOctokit = class extends this {
-      static {
-        this.plugins = currentPlugins.concat(
-          newPlugins.filter((plugin) => !currentPlugins.includes(plugin))
-        );
-      }
-    };
-    return NewOctokit;
-  }
-  constructor(options = {}) {
-    const hook = new import_before_after_hook.Collection();
-    const requestDefaults = {
-      baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl,
-      headers: {},
-      request: Object.assign({}, options.request, {
-        // @ts-ignore internal usage only, no need to type
-        hook: hook.bind(null, "request")
-      }),
-      mediaType: {
-        previews: [],
-        format: ""
-      }
-    };
-    requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;
-    if (options.baseUrl) {
-      requestDefaults.baseUrl = options.baseUrl;
-    }
-    if (options.previews) {
-      requestDefaults.mediaType.previews = options.previews;
-    }
-    if (options.timeZone) {
-      requestDefaults.headers["time-zone"] = options.timeZone;
-    }
-    this.request = import_request.request.defaults(requestDefaults);
-    this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults(requestDefaults);
-    this.log = Object.assign(
-      {
-        debug: noop,
-        info: noop,
-        warn: consoleWarn,
-        error: consoleError
-      },
-      options.log
-    );
-    this.hook = hook;
-    if (!options.authStrategy) {
-      if (!options.auth) {
-        this.auth = async () => ({
-          type: "unauthenticated"
-        });
-      } else {
-        const auth = (0, import_auth_token.createTokenAuth)(options.auth);
-        hook.wrap("request", auth.hook);
-        this.auth = auth;
-      }
-    } else {
-      const { authStrategy, ...otherOptions } = options;
-      const auth = authStrategy(
-        Object.assign(
-          {
-            request: this.request,
-            log: this.log,
-            // we pass the current octokit instance as well as its constructor options
-            // to allow for authentication strategies that return a new octokit instance
-            // that shares the same internal state as the current one. The original
-            // requirement for this was the "event-octokit" authentication strategy
-            // of https://github.com/probot/octokit-auth-probot.
-            octokit: this,
-            octokitOptions: otherOptions
-          },
-          options.auth
-        )
-      );
-      hook.wrap("request", auth.hook);
-      this.auth = auth;
-    }
-    const classConstructor = this.constructor;
-    for (let i = 0; i < classConstructor.plugins.length; ++i) {
-      Object.assign(this, classConstructor.plugins[i](this, options));
-    }
-  }
-};
-// Annotate the CommonJS export names for ESM import in node:
-0 && (module.exports = {
-  Octokit
-});
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-node/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-node/index.js.map
deleted file mode 100644
index 8452599..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-node/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/index.js", "../dist-src/version.js"],
-  "sourcesContent": ["import { getUserAgent } from \"universal-user-agent\";\nimport { Collection } from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { graphql, withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version.js\";\nconst noop = () => {\n};\nconst consoleWarn = console.warn.bind(console);\nconst consoleError = console.error.bind(console);\nconst userAgentTrail = `octokit-core.js/${VERSION} ${getUserAgent()}`;\nclass Octokit {\n  static {\n    this.VERSION = VERSION;\n  }\n  static defaults(defaults) {\n    const OctokitWithDefaults = class extends this {\n      constructor(...args) {\n        const options = args[0] || {};\n        if (typeof defaults === \"function\") {\n          super(defaults(options));\n          return;\n        }\n        super(\n          Object.assign(\n            {},\n            defaults,\n            options,\n            options.userAgent && defaults.userAgent ? {\n              userAgent: `${options.userAgent} ${defaults.userAgent}`\n            } : null\n          )\n        );\n      }\n    };\n    return OctokitWithDefaults;\n  }\n  static {\n    this.plugins = [];\n  }\n  /**\n   * Attach a plugin (or many) to your Octokit instance.\n   *\n   * @example\n   * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n   */\n  static plugin(...newPlugins) {\n    const currentPlugins = this.plugins;\n    const NewOctokit = class extends this {\n      static {\n        this.plugins = currentPlugins.concat(\n          newPlugins.filter((plugin) => !currentPlugins.includes(plugin))\n        );\n      }\n    };\n    return NewOctokit;\n  }\n  constructor(options = {}) {\n    const hook = new Collection();\n    const requestDefaults = {\n      baseUrl: request.endpoint.DEFAULTS.baseUrl,\n      headers: {},\n      request: Object.assign({}, options.request, {\n        // @ts-ignore internal usage only, no need to type\n        hook: hook.bind(null, \"request\")\n      }),\n      mediaType: {\n        previews: [],\n        format: \"\"\n      }\n    };\n    requestDefaults.headers[\"user-agent\"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;\n    if (options.baseUrl) {\n      requestDefaults.baseUrl = options.baseUrl;\n    }\n    if (options.previews) {\n      requestDefaults.mediaType.previews = options.previews;\n    }\n    if (options.timeZone) {\n      requestDefaults.headers[\"time-zone\"] = options.timeZone;\n    }\n    this.request = request.defaults(requestDefaults);\n    this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n    this.log = Object.assign(\n      {\n        debug: noop,\n        info: noop,\n        warn: consoleWarn,\n        error: consoleError\n      },\n      options.log\n    );\n    this.hook = hook;\n    if (!options.authStrategy) {\n      if (!options.auth) {\n        this.auth = async () => ({\n          type: \"unauthenticated\"\n        });\n      } else {\n        const auth = createTokenAuth(options.auth);\n        hook.wrap(\"request\", auth.hook);\n        this.auth = auth;\n      }\n    } else {\n      const { authStrategy, ...otherOptions } = options;\n      const auth = authStrategy(\n        Object.assign(\n          {\n            request: this.request,\n            log: this.log,\n            // we pass the current octokit instance as well as its constructor options\n            // to allow for authentication strategies that return a new octokit instance\n            // that shares the same internal state as the current one. The original\n            // requirement for this was the \"event-octokit\" authentication strategy\n            // of https://github.com/probot/octokit-auth-probot.\n            octokit: this,\n            octokitOptions: otherOptions\n          },\n          options.auth\n        )\n      );\n      hook.wrap(\"request\", auth.hook);\n      this.auth = auth;\n    }\n    const classConstructor = this.constructor;\n    for (let i = 0; i < classConstructor.plugins.length; ++i) {\n      Object.assign(this, classConstructor.plugins[i](this, options));\n    }\n  }\n}\nexport {\n  Octokit\n};\n", "const VERSION = \"5.1.0\";\nexport {\n  VERSION\n};\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kCAA6B;AAC7B,+BAA2B;AAC3B,qBAAwB;AACxB,qBAA2C;AAC3C,wBAAgC;;;ACJhC,IAAM,UAAU;;;ADMhB,IAAM,OAAO,MAAM;AACnB;AACA,IAAM,cAAc,QAAQ,KAAK,KAAK,OAAO;AAC7C,IAAM,eAAe,QAAQ,MAAM,KAAK,OAAO;AAC/C,IAAM,iBAAiB,mBAAmB,OAAO,QAAI,0CAAa,CAAC;AACnE,IAAM,UAAN,MAAc;AAAA,EACZ,OAAO;AACL,SAAK,UAAU;AAAA,EACjB;AAAA,EACA,OAAO,SAAS,UAAU;AACxB,UAAM,sBAAsB,cAAc,KAAK;AAAA,MAC7C,eAAe,MAAM;AACnB,cAAM,UAAU,KAAK,CAAC,KAAK,CAAC;AAC5B,YAAI,OAAO,aAAa,YAAY;AAClC,gBAAM,SAAS,OAAO,CAAC;AACvB;AAAA,QACF;AACA;AAAA,UACE,OAAO;AAAA,YACL,CAAC;AAAA,YACD;AAAA,YACA;AAAA,YACA,QAAQ,aAAa,SAAS,YAAY;AAAA,cACxC,WAAW,GAAG,QAAQ,SAAS,IAAI,SAAS,SAAS;AAAA,YACvD,IAAI;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO;AACL,SAAK,UAAU,CAAC;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,UAAU,YAAY;AAC3B,UAAM,iBAAiB,KAAK;AAC5B,UAAM,aAAa,cAAc,KAAK;AAAA,MACpC,OAAO;AACL,aAAK,UAAU,eAAe;AAAA,UAC5B,WAAW,OAAO,CAAC,WAAW,CAAC,eAAe,SAAS,MAAM,CAAC;AAAA,QAChE;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY,UAAU,CAAC,GAAG;AACxB,UAAM,OAAO,IAAI,oCAAW;AAC5B,UAAM,kBAAkB;AAAA,MACtB,SAAS,uBAAQ,SAAS,SAAS;AAAA,MACnC,SAAS,CAAC;AAAA,MACV,SAAS,OAAO,OAAO,CAAC,GAAG,QAAQ,SAAS;AAAA;AAAA,QAE1C,MAAM,KAAK,KAAK,MAAM,SAAS;AAAA,MACjC,CAAC;AAAA,MACD,WAAW;AAAA,QACT,UAAU,CAAC;AAAA,QACX,QAAQ;AAAA,MACV;AAAA,IACF;AACA,oBAAgB,QAAQ,YAAY,IAAI,QAAQ,YAAY,GAAG,QAAQ,SAAS,IAAI,cAAc,KAAK;AACvG,QAAI,QAAQ,SAAS;AACnB,sBAAgB,UAAU,QAAQ;AAAA,IACpC;AACA,QAAI,QAAQ,UAAU;AACpB,sBAAgB,UAAU,WAAW,QAAQ;AAAA,IAC/C;AACA,QAAI,QAAQ,UAAU;AACpB,sBAAgB,QAAQ,WAAW,IAAI,QAAQ;AAAA,IACjD;AACA,SAAK,UAAU,uBAAQ,SAAS,eAAe;AAC/C,SAAK,cAAU,kCAAkB,KAAK,OAAO,EAAE,SAAS,eAAe;AACvE,SAAK,MAAM,OAAO;AAAA,MAChB;AAAA,QACE,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,IACV;AACA,SAAK,OAAO;AACZ,QAAI,CAAC,QAAQ,cAAc;AACzB,UAAI,CAAC,QAAQ,MAAM;AACjB,aAAK,OAAO,aAAa;AAAA,UACvB,MAAM;AAAA,QACR;AAAA,MACF,OAAO;AACL,cAAM,WAAO,mCAAgB,QAAQ,IAAI;AACzC,aAAK,KAAK,WAAW,KAAK,IAAI;AAC9B,aAAK,OAAO;AAAA,MACd;AAAA,IACF,OAAO;AACL,YAAM,EAAE,cAAc,GAAG,aAAa,IAAI;AAC1C,YAAM,OAAO;AAAA,QACX,OAAO;AAAA,UACL;AAAA,YACE,SAAS,KAAK;AAAA,YACd,KAAK,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMV,SAAS;AAAA,YACT,gBAAgB;AAAA,UAClB;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,MACF;AACA,WAAK,KAAK,WAAW,KAAK,IAAI;AAC9B,WAAK,OAAO;AAAA,IACd;AACA,UAAM,mBAAmB,KAAK;AAC9B,aAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,QAAQ,EAAE,GAAG;AACxD,aAAO,OAAO,MAAM,iBAAiB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;AAAA,IAChE;AAAA,EACF;AACF;",
-  "names": []
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-src/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-src/index.js
deleted file mode 100644
index cbea61b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-src/index.js
+++ /dev/null
@@ -1,133 +0,0 @@
-import { getUserAgent } from "universal-user-agent";
-import { Collection } from "before-after-hook";
-import { request } from "@octokit/request";
-import { graphql, withCustomRequest } from "@octokit/graphql";
-import { createTokenAuth } from "@octokit/auth-token";
-import { VERSION } from "./version.js";
-const noop = () => {
-};
-const consoleWarn = console.warn.bind(console);
-const consoleError = console.error.bind(console);
-const userAgentTrail = `octokit-core.js/${VERSION} ${getUserAgent()}`;
-class Octokit {
-  static {
-    this.VERSION = VERSION;
-  }
-  static defaults(defaults) {
-    const OctokitWithDefaults = class extends this {
-      constructor(...args) {
-        const options = args[0] || {};
-        if (typeof defaults === "function") {
-          super(defaults(options));
-          return;
-        }
-        super(
-          Object.assign(
-            {},
-            defaults,
-            options,
-            options.userAgent && defaults.userAgent ? {
-              userAgent: `${options.userAgent} ${defaults.userAgent}`
-            } : null
-          )
-        );
-      }
-    };
-    return OctokitWithDefaults;
-  }
-  static {
-    this.plugins = [];
-  }
-  /**
-   * Attach a plugin (or many) to your Octokit instance.
-   *
-   * @example
-   * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
-   */
-  static plugin(...newPlugins) {
-    const currentPlugins = this.plugins;
-    const NewOctokit = class extends this {
-      static {
-        this.plugins = currentPlugins.concat(
-          newPlugins.filter((plugin) => !currentPlugins.includes(plugin))
-        );
-      }
-    };
-    return NewOctokit;
-  }
-  constructor(options = {}) {
-    const hook = new Collection();
-    const requestDefaults = {
-      baseUrl: request.endpoint.DEFAULTS.baseUrl,
-      headers: {},
-      request: Object.assign({}, options.request, {
-        // @ts-ignore internal usage only, no need to type
-        hook: hook.bind(null, "request")
-      }),
-      mediaType: {
-        previews: [],
-        format: ""
-      }
-    };
-    requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;
-    if (options.baseUrl) {
-      requestDefaults.baseUrl = options.baseUrl;
-    }
-    if (options.previews) {
-      requestDefaults.mediaType.previews = options.previews;
-    }
-    if (options.timeZone) {
-      requestDefaults.headers["time-zone"] = options.timeZone;
-    }
-    this.request = request.defaults(requestDefaults);
-    this.graphql = withCustomRequest(this.request).defaults(requestDefaults);
-    this.log = Object.assign(
-      {
-        debug: noop,
-        info: noop,
-        warn: consoleWarn,
-        error: consoleError
-      },
-      options.log
-    );
-    this.hook = hook;
-    if (!options.authStrategy) {
-      if (!options.auth) {
-        this.auth = async () => ({
-          type: "unauthenticated"
-        });
-      } else {
-        const auth = createTokenAuth(options.auth);
-        hook.wrap("request", auth.hook);
-        this.auth = auth;
-      }
-    } else {
-      const { authStrategy, ...otherOptions } = options;
-      const auth = authStrategy(
-        Object.assign(
-          {
-            request: this.request,
-            log: this.log,
-            // we pass the current octokit instance as well as its constructor options
-            // to allow for authentication strategies that return a new octokit instance
-            // that shares the same internal state as the current one. The original
-            // requirement for this was the "event-octokit" authentication strategy
-            // of https://github.com/probot/octokit-auth-probot.
-            octokit: this,
-            octokitOptions: otherOptions
-          },
-          options.auth
-        )
-      );
-      hook.wrap("request", auth.hook);
-      this.auth = auth;
-    }
-    const classConstructor = this.constructor;
-    for (let i = 0; i < classConstructor.plugins.length; ++i) {
-      Object.assign(this, classConstructor.plugins[i](this, options));
-    }
-  }
-}
-export {
-  Octokit
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-src/version.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-src/version.js
deleted file mode 100644
index 2f3ce58..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-src/version.js
+++ /dev/null
@@ -1,4 +0,0 @@
-const VERSION = "5.1.0";
-export {
-  VERSION
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-types/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-types/index.d.ts
deleted file mode 100644
index 1102b3b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-types/index.d.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { HookCollection } from "before-after-hook";
-import { request } from "@octokit/request";
-import { graphql } from "@octokit/graphql";
-import type { Constructor, Hooks, OctokitOptions, OctokitPlugin, ReturnTypeOf, UnionToIntersection } from "./types.js";
-export type { OctokitOptions } from "./types.js";
-export declare class Octokit {
-    static VERSION: string;
-    static defaults<S extends Constructor<any>>(this: S, defaults: OctokitOptions | Function): S;
-    static plugins: OctokitPlugin[];
-    /**
-     * Attach a plugin (or many) to your Octokit instance.
-     *
-     * @example
-     * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
-     */
-    static plugin<S extends Constructor<any> & {
-        plugins: any[];
-    }, T extends OctokitPlugin[]>(this: S, ...newPlugins: T): S & Constructor<UnionToIntersection<ReturnTypeOf<T>>>;
-    constructor(options?: OctokitOptions);
-    request: typeof request;
-    graphql: typeof graphql;
-    log: {
-        debug: (message: string, additionalInfo?: object) => any;
-        info: (message: string, additionalInfo?: object) => any;
-        warn: (message: string, additionalInfo?: object) => any;
-        error: (message: string, additionalInfo?: object) => any;
-        [key: string]: any;
-    };
-    hook: HookCollection<Hooks>;
-    auth: (...args: unknown[]) => Promise<unknown>;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-types/types.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-types/types.d.ts
deleted file mode 100644
index 3f8f09b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-types/types.d.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import * as OctokitTypes from "@octokit/types";
-import { RequestError } from "@octokit/request-error";
-import type { Octokit } from "./index.js";
-export type RequestParameters = OctokitTypes.RequestParameters;
-export interface OctokitOptions {
-    authStrategy?: any;
-    auth?: any;
-    userAgent?: string;
-    previews?: string[];
-    baseUrl?: string;
-    log?: {
-        debug: (message: string) => unknown;
-        info: (message: string) => unknown;
-        warn: (message: string) => unknown;
-        error: (message: string) => unknown;
-    };
-    request?: OctokitTypes.RequestRequestOptions;
-    timeZone?: string;
-    [option: string]: any;
-}
-export type Constructor<T> = new (...args: any[]) => T;
-export type ReturnTypeOf<T extends AnyFunction | AnyFunction[]> = T extends AnyFunction ? ReturnType<T> : T extends AnyFunction[] ? UnionToIntersection<Exclude<ReturnType<T[number]>, void>> : never;
-/**
- * @author https://stackoverflow.com/users/2887218/jcalz
- * @see https://stackoverflow.com/a/50375286/10325032
- */
-export type UnionToIntersection<Union> = (Union extends any ? (argument: Union) => void : never) extends (argument: infer Intersection) => void ? Intersection : never;
-type AnyFunction = (...args: any) => any;
-export type OctokitPlugin = (octokit: Octokit, options: OctokitOptions) => {
-    [key: string]: any;
-} | void;
-export type Hooks = {
-    request: {
-        Options: Required<OctokitTypes.EndpointDefaults>;
-        Result: OctokitTypes.OctokitResponse<any>;
-        Error: RequestError | Error;
-    };
-    [key: string]: {
-        Options: unknown;
-        Result: unknown;
-        Error: unknown;
-    };
-};
-export {};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-types/version.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-types/version.d.ts
deleted file mode 100644
index 8da971f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-types/version.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare const VERSION = "5.1.0";
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-web/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-web/index.js
deleted file mode 100644
index f72f36d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-web/index.js
+++ /dev/null
@@ -1,138 +0,0 @@
-// pkg/dist-src/index.js
-import { getUserAgent } from "universal-user-agent";
-import { Collection } from "before-after-hook";
-import { request } from "@octokit/request";
-import { graphql, withCustomRequest } from "@octokit/graphql";
-import { createTokenAuth } from "@octokit/auth-token";
-
-// pkg/dist-src/version.js
-var VERSION = "5.1.0";
-
-// pkg/dist-src/index.js
-var noop = () => {
-};
-var consoleWarn = console.warn.bind(console);
-var consoleError = console.error.bind(console);
-var userAgentTrail = `octokit-core.js/${VERSION} ${getUserAgent()}`;
-var Octokit = class {
-  static {
-    this.VERSION = VERSION;
-  }
-  static defaults(defaults) {
-    const OctokitWithDefaults = class extends this {
-      constructor(...args) {
-        const options = args[0] || {};
-        if (typeof defaults === "function") {
-          super(defaults(options));
-          return;
-        }
-        super(
-          Object.assign(
-            {},
-            defaults,
-            options,
-            options.userAgent && defaults.userAgent ? {
-              userAgent: `${options.userAgent} ${defaults.userAgent}`
-            } : null
-          )
-        );
-      }
-    };
-    return OctokitWithDefaults;
-  }
-  static {
-    this.plugins = [];
-  }
-  /**
-   * Attach a plugin (or many) to your Octokit instance.
-   *
-   * @example
-   * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
-   */
-  static plugin(...newPlugins) {
-    const currentPlugins = this.plugins;
-    const NewOctokit = class extends this {
-      static {
-        this.plugins = currentPlugins.concat(
-          newPlugins.filter((plugin) => !currentPlugins.includes(plugin))
-        );
-      }
-    };
-    return NewOctokit;
-  }
-  constructor(options = {}) {
-    const hook = new Collection();
-    const requestDefaults = {
-      baseUrl: request.endpoint.DEFAULTS.baseUrl,
-      headers: {},
-      request: Object.assign({}, options.request, {
-        // @ts-ignore internal usage only, no need to type
-        hook: hook.bind(null, "request")
-      }),
-      mediaType: {
-        previews: [],
-        format: ""
-      }
-    };
-    requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;
-    if (options.baseUrl) {
-      requestDefaults.baseUrl = options.baseUrl;
-    }
-    if (options.previews) {
-      requestDefaults.mediaType.previews = options.previews;
-    }
-    if (options.timeZone) {
-      requestDefaults.headers["time-zone"] = options.timeZone;
-    }
-    this.request = request.defaults(requestDefaults);
-    this.graphql = withCustomRequest(this.request).defaults(requestDefaults);
-    this.log = Object.assign(
-      {
-        debug: noop,
-        info: noop,
-        warn: consoleWarn,
-        error: consoleError
-      },
-      options.log
-    );
-    this.hook = hook;
-    if (!options.authStrategy) {
-      if (!options.auth) {
-        this.auth = async () => ({
-          type: "unauthenticated"
-        });
-      } else {
-        const auth = createTokenAuth(options.auth);
-        hook.wrap("request", auth.hook);
-        this.auth = auth;
-      }
-    } else {
-      const { authStrategy, ...otherOptions } = options;
-      const auth = authStrategy(
-        Object.assign(
-          {
-            request: this.request,
-            log: this.log,
-            // we pass the current octokit instance as well as its constructor options
-            // to allow for authentication strategies that return a new octokit instance
-            // that shares the same internal state as the current one. The original
-            // requirement for this was the "event-octokit" authentication strategy
-            // of https://github.com/probot/octokit-auth-probot.
-            octokit: this,
-            octokitOptions: otherOptions
-          },
-          options.auth
-        )
-      );
-      hook.wrap("request", auth.hook);
-      this.auth = auth;
-    }
-    const classConstructor = this.constructor;
-    for (let i = 0; i < classConstructor.plugins.length; ++i) {
-      Object.assign(this, classConstructor.plugins[i](this, options));
-    }
-  }
-};
-export {
-  Octokit
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-web/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-web/index.js.map
deleted file mode 100644
index c38157d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/dist-web/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/index.js", "../dist-src/version.js"],
-  "sourcesContent": ["import { getUserAgent } from \"universal-user-agent\";\nimport { Collection } from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { graphql, withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version.js\";\nconst noop = () => {\n};\nconst consoleWarn = console.warn.bind(console);\nconst consoleError = console.error.bind(console);\nconst userAgentTrail = `octokit-core.js/${VERSION} ${getUserAgent()}`;\nclass Octokit {\n  static {\n    this.VERSION = VERSION;\n  }\n  static defaults(defaults) {\n    const OctokitWithDefaults = class extends this {\n      constructor(...args) {\n        const options = args[0] || {};\n        if (typeof defaults === \"function\") {\n          super(defaults(options));\n          return;\n        }\n        super(\n          Object.assign(\n            {},\n            defaults,\n            options,\n            options.userAgent && defaults.userAgent ? {\n              userAgent: `${options.userAgent} ${defaults.userAgent}`\n            } : null\n          )\n        );\n      }\n    };\n    return OctokitWithDefaults;\n  }\n  static {\n    this.plugins = [];\n  }\n  /**\n   * Attach a plugin (or many) to your Octokit instance.\n   *\n   * @example\n   * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n   */\n  static plugin(...newPlugins) {\n    const currentPlugins = this.plugins;\n    const NewOctokit = class extends this {\n      static {\n        this.plugins = currentPlugins.concat(\n          newPlugins.filter((plugin) => !currentPlugins.includes(plugin))\n        );\n      }\n    };\n    return NewOctokit;\n  }\n  constructor(options = {}) {\n    const hook = new Collection();\n    const requestDefaults = {\n      baseUrl: request.endpoint.DEFAULTS.baseUrl,\n      headers: {},\n      request: Object.assign({}, options.request, {\n        // @ts-ignore internal usage only, no need to type\n        hook: hook.bind(null, \"request\")\n      }),\n      mediaType: {\n        previews: [],\n        format: \"\"\n      }\n    };\n    requestDefaults.headers[\"user-agent\"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;\n    if (options.baseUrl) {\n      requestDefaults.baseUrl = options.baseUrl;\n    }\n    if (options.previews) {\n      requestDefaults.mediaType.previews = options.previews;\n    }\n    if (options.timeZone) {\n      requestDefaults.headers[\"time-zone\"] = options.timeZone;\n    }\n    this.request = request.defaults(requestDefaults);\n    this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n    this.log = Object.assign(\n      {\n        debug: noop,\n        info: noop,\n        warn: consoleWarn,\n        error: consoleError\n      },\n      options.log\n    );\n    this.hook = hook;\n    if (!options.authStrategy) {\n      if (!options.auth) {\n        this.auth = async () => ({\n          type: \"unauthenticated\"\n        });\n      } else {\n        const auth = createTokenAuth(options.auth);\n        hook.wrap(\"request\", auth.hook);\n        this.auth = auth;\n      }\n    } else {\n      const { authStrategy, ...otherOptions } = options;\n      const auth = authStrategy(\n        Object.assign(\n          {\n            request: this.request,\n            log: this.log,\n            // we pass the current octokit instance as well as its constructor options\n            // to allow for authentication strategies that return a new octokit instance\n            // that shares the same internal state as the current one. The original\n            // requirement for this was the \"event-octokit\" authentication strategy\n            // of https://github.com/probot/octokit-auth-probot.\n            octokit: this,\n            octokitOptions: otherOptions\n          },\n          options.auth\n        )\n      );\n      hook.wrap(\"request\", auth.hook);\n      this.auth = auth;\n    }\n    const classConstructor = this.constructor;\n    for (let i = 0; i < classConstructor.plugins.length; ++i) {\n      Object.assign(this, classConstructor.plugins[i](this, options));\n    }\n  }\n}\nexport {\n  Octokit\n};\n", "const VERSION = \"5.1.0\";\nexport {\n  VERSION\n};\n"],
-  "mappings": ";AAAA,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,eAAe;AACxB,SAAS,SAAS,yBAAyB;AAC3C,SAAS,uBAAuB;;;ACJhC,IAAM,UAAU;;;ADMhB,IAAM,OAAO,MAAM;AACnB;AACA,IAAM,cAAc,QAAQ,KAAK,KAAK,OAAO;AAC7C,IAAM,eAAe,QAAQ,MAAM,KAAK,OAAO;AAC/C,IAAM,iBAAiB,mBAAmB,OAAO,IAAI,aAAa,CAAC;AACnE,IAAM,UAAN,MAAc;AAAA,EACZ,OAAO;AACL,SAAK,UAAU;AAAA,EACjB;AAAA,EACA,OAAO,SAAS,UAAU;AACxB,UAAM,sBAAsB,cAAc,KAAK;AAAA,MAC7C,eAAe,MAAM;AACnB,cAAM,UAAU,KAAK,CAAC,KAAK,CAAC;AAC5B,YAAI,OAAO,aAAa,YAAY;AAClC,gBAAM,SAAS,OAAO,CAAC;AACvB;AAAA,QACF;AACA;AAAA,UACE,OAAO;AAAA,YACL,CAAC;AAAA,YACD;AAAA,YACA;AAAA,YACA,QAAQ,aAAa,SAAS,YAAY;AAAA,cACxC,WAAW,GAAG,QAAQ,SAAS,IAAI,SAAS,SAAS;AAAA,YACvD,IAAI;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO;AACL,SAAK,UAAU,CAAC;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,UAAU,YAAY;AAC3B,UAAM,iBAAiB,KAAK;AAC5B,UAAM,aAAa,cAAc,KAAK;AAAA,MACpC,OAAO;AACL,aAAK,UAAU,eAAe;AAAA,UAC5B,WAAW,OAAO,CAAC,WAAW,CAAC,eAAe,SAAS,MAAM,CAAC;AAAA,QAChE;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY,UAAU,CAAC,GAAG;AACxB,UAAM,OAAO,IAAI,WAAW;AAC5B,UAAM,kBAAkB;AAAA,MACtB,SAAS,QAAQ,SAAS,SAAS;AAAA,MACnC,SAAS,CAAC;AAAA,MACV,SAAS,OAAO,OAAO,CAAC,GAAG,QAAQ,SAAS;AAAA;AAAA,QAE1C,MAAM,KAAK,KAAK,MAAM,SAAS;AAAA,MACjC,CAAC;AAAA,MACD,WAAW;AAAA,QACT,UAAU,CAAC;AAAA,QACX,QAAQ;AAAA,MACV;AAAA,IACF;AACA,oBAAgB,QAAQ,YAAY,IAAI,QAAQ,YAAY,GAAG,QAAQ,SAAS,IAAI,cAAc,KAAK;AACvG,QAAI,QAAQ,SAAS;AACnB,sBAAgB,UAAU,QAAQ;AAAA,IACpC;AACA,QAAI,QAAQ,UAAU;AACpB,sBAAgB,UAAU,WAAW,QAAQ;AAAA,IAC/C;AACA,QAAI,QAAQ,UAAU;AACpB,sBAAgB,QAAQ,WAAW,IAAI,QAAQ;AAAA,IACjD;AACA,SAAK,UAAU,QAAQ,SAAS,eAAe;AAC/C,SAAK,UAAU,kBAAkB,KAAK,OAAO,EAAE,SAAS,eAAe;AACvE,SAAK,MAAM,OAAO;AAAA,MAChB;AAAA,QACE,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,IACV;AACA,SAAK,OAAO;AACZ,QAAI,CAAC,QAAQ,cAAc;AACzB,UAAI,CAAC,QAAQ,MAAM;AACjB,aAAK,OAAO,aAAa;AAAA,UACvB,MAAM;AAAA,QACR;AAAA,MACF,OAAO;AACL,cAAM,OAAO,gBAAgB,QAAQ,IAAI;AACzC,aAAK,KAAK,WAAW,KAAK,IAAI;AAC9B,aAAK,OAAO;AAAA,MACd;AAAA,IACF,OAAO;AACL,YAAM,EAAE,cAAc,GAAG,aAAa,IAAI;AAC1C,YAAM,OAAO;AAAA,QACX,OAAO;AAAA,UACL;AAAA,YACE,SAAS,KAAK;AAAA,YACd,KAAK,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMV,SAAS;AAAA,YACT,gBAAgB;AAAA,UAClB;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,MACF;AACA,WAAK,KAAK,WAAW,KAAK,IAAI;AAC9B,WAAK,OAAO;AAAA,IACd;AACA,UAAM,mBAAmB,KAAK;AAC9B,aAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,QAAQ,EAAE,GAAG;AACxD,aAAO,OAAO,MAAM,iBAAiB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;AAAA,IAChE;AAAA,EACF;AACF;",
-  "names": []
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/package.json b/actions/bcr-pr-review-notifier/node_modules/@octokit/core/package.json
deleted file mode 100644
index c67063a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/core/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "name": "@octokit/core",
-  "version": "5.1.0",
-  "publishConfig": {
-    "access": "public"
-  },
-  "description": "Extendable client for GitHub's REST & GraphQL APIs",
-  "repository": "github:octokit/core.js",
-  "keywords": [
-    "octokit",
-    "github",
-    "api",
-    "sdk",
-    "toolkit"
-  ],
-  "author": "Gregor Martynus (https://github.com/gr2m)",
-  "license": "MIT",
-  "dependencies": {
-    "@octokit/auth-token": "^4.0.0",
-    "@octokit/graphql": "^7.0.0",
-    "@octokit/request": "^8.0.2",
-    "@octokit/request-error": "^5.0.0",
-    "@octokit/types": "^12.0.0",
-    "before-after-hook": "^2.2.0",
-    "universal-user-agent": "^6.0.0"
-  },
-  "devDependencies": {
-    "@octokit/auth-action": "^4.0.0",
-    "@octokit/auth-app": "^6.0.0",
-    "@octokit/auth-oauth-app": "^7.0.0",
-    "@octokit/tsconfig": "^2.0.0",
-    "@sinonjs/fake-timers": "^11.2.2",
-    "@types/fetch-mock": "^7.3.1",
-    "@types/jest": "^29.0.0",
-    "@types/lolex": "^5.1.0",
-    "@types/node": "^20.0.0",
-    "@types/sinonjs__fake-timers": "^8.1.5",
-    "esbuild": "^0.19.0",
-    "fetch-mock": "npm:@gr2m/fetch-mock@9.11.0-pull-request-644.1",
-    "glob": "^10.2.5",
-    "http-proxy-agent": "^7.0.0",
-    "jest": "^29.0.0",
-    "prettier": "3.2.4",
-    "proxy": "^2.0.0",
-    "semantic-release": "^23.0.0",
-    "semantic-release-plugin-update-version-in-files": "^1.0.0",
-    "ts-jest": "^29.0.0",
-    "typescript": "^5.0.0",
-    "undici": "^6.0.0"
-  },
-  "engines": {
-    "node": ">= 18"
-  },
-  "files": [
-    "dist-*/**",
-    "bin/**"
-  ],
-  "main": "dist-node/index.js",
-  "module": "dist-web/index.js",
-  "types": "dist-types/index.d.ts",
-  "source": "dist-src/index.js",
-  "sideEffects": false
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/LICENSE
deleted file mode 100644
index af5366d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright (c) 2018 Octokit contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/README.md b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/README.md
deleted file mode 100644
index 07acbd1..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/README.md
+++ /dev/null
@@ -1,410 +0,0 @@
-# endpoint.js
-
-> Turns GitHub REST API endpoints into generic request options
-
-[![@latest](https://img.shields.io/npm/v/@octokit/endpoint.svg)](https://www.npmjs.com/package/@octokit/endpoint)
-[![Build Status](https://github.com/octokit/endpoint.js/workflows/Test/badge.svg)](https://github.com/octokit/endpoint.js/actions/workflows/test.yml?query=branch%3Amain)
-
-`@octokit/endpoint` combines [GitHub REST API routes](https://developer.github.com/v3/) with your parameters and turns them into generic request options that can be used in any request library.
-
-<!-- update table of contents by running `npx markdown-toc README.md -i` -->
-
-<!-- toc -->
-
-- [Usage](#usage)
-- [API](#api)
-  - [`endpoint(route, options)` or `endpoint(options)`](#endpointroute-options-or-endpointoptions)
-  - [`endpoint.defaults()`](#endpointdefaults)
-  - [`endpoint.DEFAULTS`](#endpointdefaults)
-  - [`endpoint.merge(route, options)` or `endpoint.merge(options)`](#endpointmergeroute-options-or-endpointmergeoptions)
-  - [`endpoint.parse()`](#endpointparse)
-- [Special cases](#special-cases)
-  - [The `data` parameter – set request body directly](#the-data-parameter-%E2%80%93-set-request-body-directly)
-  - [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body)
-- [LICENSE](#license)
-
-<!-- tocstop -->
-
-## Usage
-
-<table>
-<tbody valign=top align=left>
-<tr><th>
-Browsers
-</th><td width=100%>
-Load <code>@octokit/endpoint</code> directly from <a href="https://esm.sh">esm.sh</a>
-
-```html
-<script type="module">
-  import { endpoint } from "https://esm.sh/@octokit/endpoint";
-</script>
-```
-
-</td></tr>
-<tr><th>
-Node
-</th><td>
-
-Install with <code>npm install @octokit/endpoint</code>
-
-```js
-const { endpoint } = require("@octokit/endpoint");
-// or: import { endpoint } from "@octokit/endpoint";
-```
-
-</td></tr>
-</tbody>
-</table>
-
-Example for [List organization repositories](https://developer.github.com/v3/repos/#list-organization-repositories)
-
-```js
-const requestOptions = endpoint("GET /orgs/{org}/repos", {
-  headers: {
-    authorization: "token 0000000000000000000000000000000000000001",
-  },
-  org: "octokit",
-  type: "private",
-});
-```
-
-The resulting `requestOptions` looks as follows
-
-```json
-{
-  "method": "GET",
-  "url": "https://api.github.com/orgs/octokit/repos?type=private",
-  "headers": {
-    "accept": "application/vnd.github.v3+json",
-    "authorization": "token 0000000000000000000000000000000000000001",
-    "user-agent": "octokit/endpoint.js v1.2.3"
-  }
-}
-```
-
-You can pass `requestOptions` to common request libraries
-
-```js
-const { url, ...options } = requestOptions;
-// using with fetch (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
-fetch(url, options);
-// using with request (https://github.com/request/request)
-request(requestOptions);
-// using with got (https://github.com/sindresorhus/got)
-got[options.method](url, options);
-// using with axios
-axios(requestOptions);
-```
-
-## API
-
-### `endpoint(route, options)` or `endpoint(options)`
-
-<table>
-  <thead align=left>
-    <tr>
-      <th>
-        name
-      </th>
-      <th>
-        type
-      </th>
-      <th width=100%>
-        description
-      </th>
-    </tr>
-  </thead>
-  <tbody align=left valign=top>
-    <tr>
-      <th>
-        <code>route</code>
-      </th>
-      <td>
-        String
-      </td>
-      <td>
-        If set, it has to be a string consisting of URL and the request method, e.g., <code>GET /orgs/{org}</code>. If it’s set to a URL, only the method defaults to <code>GET</code>.
-      </td>
-    </tr>
-    <tr>
-      <th>
-        <code>options.method</code>
-      </th>
-      <td>
-        String
-      </td>
-      <td>
-        <strong>Required unless <code>route</code> is set.</strong> Any supported <a href="https://developer.github.com/v3/#http-verbs">http verb</a>. <em>Defaults to <code>GET</code></em>.
-      </td>
-    </tr>
-    <tr>
-      <th>
-        <code>options.url</code>
-      </th>
-      <td>
-        String
-      </td>
-      <td>
-        <strong>Required unless <code>route</code> is set.</strong> A path or full URL which may contain <code>:variable</code> or <code>{variable}</code> placeholders,
-        e.g., <code>/orgs/{org}/repos</code>. The <code>url</code> is parsed using <a href="https://github.com/bramstein/url-template">url-template</a>.
-      </td>
-    </tr>
-    <tr>
-      <th>
-        <code>options.baseUrl</code>
-      </th>
-      <td>
-        String
-      </td>
-      <td>
-        <em>Defaults to <code>https://api.github.com</code></em>.
-      </td>
-    </tr>
-    <tr>
-      <th>
-        <code>options.headers</code>
-      </th>
-      <td>
-        Object
-      </td>
-      <td>
-        Custom headers. Passed headers are merged with defaults:<br>
-        <em><code>headers['user-agent']</code> defaults to <code>octokit-endpoint.js/1.2.3</code> (where <code>1.2.3</code> is the released version)</em>.<br>
-        <em><code>headers['accept']</code> defaults to <code>application/vnd.github.v3+json</code></em>.<br>
-      </td>
-    </tr>
-    <tr>
-      <th>
-        <code>options.mediaType.format</code>
-      </th>
-      <td>
-        String
-      </td>
-      <td>
-        Media type param, such as <code>raw</code>, <code>diff</code>, or <code>text+json</code>. See <a href="https://developer.github.com/v3/media/">Media Types</a>. Setting <code>options.mediaType.format</code> will amend the <code>headers.accept</code> value.
-      </td>
-    </tr>
-    <tr>
-      <th>
-        <code>options.data</code>
-      </th>
-      <td>
-        Any
-      </td>
-      <td>
-        Set request body directly instead of setting it to JSON based on additional parameters. See <a href="#data-parameter">"The <code>data</code> parameter"</a> below.
-      </td>
-    </tr>
-    <tr>
-      <th>
-        <code>options.request</code>
-      </th>
-      <td>
-        Object
-      </td>
-      <td>
-        Pass custom meta information for the request. The <code>request</code> object will be returned as is.
-      </td>
-    </tr>
-  </tbody>
-</table>
-
-All other options will be passed depending on the `method` and `url` options.
-
-1. If the option key has a placeholder in the `url`, it will be used as the replacement. For example, if the passed options are `{url: '/orgs/{org}/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos`.
-2. If the `method` is `GET` or `HEAD`, the option is passed as a query parameter.
-3. Otherwise, the parameter is passed in the request body as a JSON key.
-
-**Result**
-
-`endpoint()` is a synchronous method and returns an object with the following keys:
-
-<table>
-  <thead align=left>
-    <tr>
-      <th>
-        key
-      </th>
-      <th>
-        type
-      </th>
-      <th width=100%>
-        description
-      </th>
-    </tr>
-  </thead>
-  <tbody align=left valign=top>
-    <tr>
-      <th><code>method</code></th>
-      <td>String</td>
-      <td>The http method. Always lowercase.</td>
-    </tr>
-    <tr>
-      <th><code>url</code></th>
-      <td>String</td>
-      <td>The url with placeholders replaced with passed parameters.</td>
-    </tr>
-    <tr>
-      <th><code>headers</code></th>
-      <td>Object</td>
-      <td>All header names are lowercased.</td>
-    </tr>
-    <tr>
-      <th><code>body</code></th>
-      <td>Any</td>
-      <td>The request body if one is present. Only for <code>PATCH</code>, <code>POST</code>, <code>PUT</code>, <code>DELETE</code> requests.</td>
-    </tr>
-    <tr>
-      <th><code>request</code></th>
-      <td>Object</td>
-      <td>Request meta option, it will be returned as it was passed into <code>endpoint()</code></td>
-    </tr>
-  </tbody>
-</table>
-
-### `endpoint.defaults()`
-
-Override or set default options. Example:
-
-```js
-const request = require("request");
-const myEndpoint = require("@octokit/endpoint").defaults({
-  baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
-  headers: {
-    "user-agent": "myApp/1.2.3",
-    authorization: `token 0000000000000000000000000000000000000001`,
-  },
-  org: "my-project",
-  per_page: 100,
-});
-
-request(myEndpoint(`GET /orgs/{org}/repos`));
-```
-
-You can call `.defaults()` again on the returned method, the defaults will cascade.
-
-```js
-const myProjectEndpoint = endpoint.defaults({
-  baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
-  headers: {
-    "user-agent": "myApp/1.2.3",
-  },
-  org: "my-project",
-});
-const myProjectEndpointWithAuth = myProjectEndpoint.defaults({
-  headers: {
-    authorization: `token 0000000000000000000000000000000000000001`,
-  },
-});
-```
-
-`myProjectEndpointWithAuth` now defaults the `baseUrl`, `headers['user-agent']`,
-`org` and `headers['authorization']` on top of `headers['accept']` that is set
-by the global default.
-
-### `endpoint.DEFAULTS`
-
-The current default options.
-
-```js
-endpoint.DEFAULTS.baseUrl; // https://api.github.com
-const myEndpoint = endpoint.defaults({
-  baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
-});
-myEndpoint.DEFAULTS.baseUrl; // https://github-enterprise.acme-inc.com/api/v3
-```
-
-### `endpoint.merge(route, options)` or `endpoint.merge(options)`
-
-Get the defaulted endpoint options, but without parsing them into request options:
-
-```js
-const myProjectEndpoint = endpoint.defaults({
-  baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
-  headers: {
-    "user-agent": "myApp/1.2.3",
-  },
-  org: "my-project",
-});
-myProjectEndpoint.merge("GET /orgs/{org}/repos", {
-  headers: {
-    authorization: `token 0000000000000000000000000000000000000001`,
-  },
-  org: "my-secret-project",
-  type: "private",
-});
-
-// {
-//   baseUrl: 'https://github-enterprise.acme-inc.com/api/v3',
-//   method: 'GET',
-//   url: '/orgs/{org}/repos',
-//   headers: {
-//     accept: 'application/vnd.github.v3+json',
-//     authorization: `token 0000000000000000000000000000000000000001`,
-//     'user-agent': 'myApp/1.2.3'
-//   },
-//   org: 'my-secret-project',
-//   type: 'private'
-// }
-```
-
-### `endpoint.parse()`
-
-Stateless method to turn endpoint options into request options. Calling
-`endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`.
-
-## Special cases
-
-<a name="data-parameter"></a>
-
-### The `data` parameter – set request body directly
-
-Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead, the request body needs to be set directly. In these cases, set the `data` parameter.
-
-```js
-const options = endpoint("POST /markdown/raw", {
-  data: "Hello world github/linguist#1 **cool**, and #1!",
-  headers: {
-    accept: "text/html;charset=utf-8",
-    "content-type": "text/plain",
-  },
-});
-
-// options is
-// {
-//   method: 'post',
-//   url: 'https://api.github.com/markdown/raw',
-//   headers: {
-//     accept: 'text/html;charset=utf-8',
-//     'content-type': 'text/plain',
-//     'user-agent': userAgent
-//   },
-//   body: 'Hello world github/linguist#1 **cool**, and #1!'
-// }
-```
-
-### Set parameters for both the URL/query and the request body
-
-There are API endpoints that accept both query parameters as well as a body. In that case, you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570).
-
-Example
-
-```js
-endpoint(
-  "POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}",
-  {
-    name: "example.zip",
-    label: "short description",
-    headers: {
-      "content-type": "text/plain",
-      "content-length": 14,
-      authorization: `token 0000000000000000000000000000000000000001`,
-    },
-    data: "Hello, world!",
-  },
-);
-```
-
-## LICENSE
-
-[MIT](LICENSE)
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-node/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-node/index.js
deleted file mode 100644
index 0c197b6..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-node/index.js
+++ /dev/null
@@ -1,378 +0,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
-  if (from && typeof from === "object" || typeof from === "function") {
-    for (let key of __getOwnPropNames(from))
-      if (!__hasOwnProp.call(to, key) && key !== except)
-        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
-  }
-  return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
-  endpoint: () => endpoint
-});
-module.exports = __toCommonJS(dist_src_exports);
-
-// pkg/dist-src/defaults.js
-var import_universal_user_agent = require("universal-user-agent");
-
-// pkg/dist-src/version.js
-var VERSION = "9.0.4";
-
-// pkg/dist-src/defaults.js
-var userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;
-var DEFAULTS = {
-  method: "GET",
-  baseUrl: "https://api.github.com",
-  headers: {
-    accept: "application/vnd.github.v3+json",
-    "user-agent": userAgent
-  },
-  mediaType: {
-    format: ""
-  }
-};
-
-// pkg/dist-src/util/lowercase-keys.js
-function lowercaseKeys(object) {
-  if (!object) {
-    return {};
-  }
-  return Object.keys(object).reduce((newObj, key) => {
-    newObj[key.toLowerCase()] = object[key];
-    return newObj;
-  }, {});
-}
-
-// pkg/dist-src/util/is-plain-object.js
-function isPlainObject(value) {
-  if (typeof value !== "object" || value === null)
-    return false;
-  if (Object.prototype.toString.call(value) !== "[object Object]")
-    return false;
-  const proto = Object.getPrototypeOf(value);
-  if (proto === null)
-    return true;
-  const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
-  return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
-}
-
-// pkg/dist-src/util/merge-deep.js
-function mergeDeep(defaults, options) {
-  const result = Object.assign({}, defaults);
-  Object.keys(options).forEach((key) => {
-    if (isPlainObject(options[key])) {
-      if (!(key in defaults))
-        Object.assign(result, { [key]: options[key] });
-      else
-        result[key] = mergeDeep(defaults[key], options[key]);
-    } else {
-      Object.assign(result, { [key]: options[key] });
-    }
-  });
-  return result;
-}
-
-// pkg/dist-src/util/remove-undefined-properties.js
-function removeUndefinedProperties(obj) {
-  for (const key in obj) {
-    if (obj[key] === void 0) {
-      delete obj[key];
-    }
-  }
-  return obj;
-}
-
-// pkg/dist-src/merge.js
-function merge(defaults, route, options) {
-  if (typeof route === "string") {
-    let [method, url] = route.split(" ");
-    options = Object.assign(url ? { method, url } : { url: method }, options);
-  } else {
-    options = Object.assign({}, route);
-  }
-  options.headers = lowercaseKeys(options.headers);
-  removeUndefinedProperties(options);
-  removeUndefinedProperties(options.headers);
-  const mergedOptions = mergeDeep(defaults || {}, options);
-  if (options.url === "/graphql") {
-    if (defaults && defaults.mediaType.previews?.length) {
-      mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(
-        (preview) => !mergedOptions.mediaType.previews.includes(preview)
-      ).concat(mergedOptions.mediaType.previews);
-    }
-    mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, ""));
-  }
-  return mergedOptions;
-}
-
-// pkg/dist-src/util/add-query-parameters.js
-function addQueryParameters(url, parameters) {
-  const separator = /\?/.test(url) ? "&" : "?";
-  const names = Object.keys(parameters);
-  if (names.length === 0) {
-    return url;
-  }
-  return url + separator + names.map((name) => {
-    if (name === "q") {
-      return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
-    }
-    return `${name}=${encodeURIComponent(parameters[name])}`;
-  }).join("&");
-}
-
-// pkg/dist-src/util/extract-url-variable-names.js
-var urlVariableRegex = /\{[^}]+\}/g;
-function removeNonChars(variableName) {
-  return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
-}
-function extractUrlVariableNames(url) {
-  const matches = url.match(urlVariableRegex);
-  if (!matches) {
-    return [];
-  }
-  return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
-}
-
-// pkg/dist-src/util/omit.js
-function omit(object, keysToOmit) {
-  const result = { __proto__: null };
-  for (const key of Object.keys(object)) {
-    if (keysToOmit.indexOf(key) === -1) {
-      result[key] = object[key];
-    }
-  }
-  return result;
-}
-
-// pkg/dist-src/util/url-template.js
-function encodeReserved(str) {
-  return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {
-    if (!/%[0-9A-Fa-f]/.test(part)) {
-      part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
-    }
-    return part;
-  }).join("");
-}
-function encodeUnreserved(str) {
-  return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
-    return "%" + c.charCodeAt(0).toString(16).toUpperCase();
-  });
-}
-function encodeValue(operator, value, key) {
-  value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
-  if (key) {
-    return encodeUnreserved(key) + "=" + value;
-  } else {
-    return value;
-  }
-}
-function isDefined(value) {
-  return value !== void 0 && value !== null;
-}
-function isKeyOperator(operator) {
-  return operator === ";" || operator === "&" || operator === "?";
-}
-function getValues(context, operator, key, modifier) {
-  var value = context[key], result = [];
-  if (isDefined(value) && value !== "") {
-    if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
-      value = value.toString();
-      if (modifier && modifier !== "*") {
-        value = value.substring(0, parseInt(modifier, 10));
-      }
-      result.push(
-        encodeValue(operator, value, isKeyOperator(operator) ? key : "")
-      );
-    } else {
-      if (modifier === "*") {
-        if (Array.isArray(value)) {
-          value.filter(isDefined).forEach(function(value2) {
-            result.push(
-              encodeValue(operator, value2, isKeyOperator(operator) ? key : "")
-            );
-          });
-        } else {
-          Object.keys(value).forEach(function(k) {
-            if (isDefined(value[k])) {
-              result.push(encodeValue(operator, value[k], k));
-            }
-          });
-        }
-      } else {
-        const tmp = [];
-        if (Array.isArray(value)) {
-          value.filter(isDefined).forEach(function(value2) {
-            tmp.push(encodeValue(operator, value2));
-          });
-        } else {
-          Object.keys(value).forEach(function(k) {
-            if (isDefined(value[k])) {
-              tmp.push(encodeUnreserved(k));
-              tmp.push(encodeValue(operator, value[k].toString()));
-            }
-          });
-        }
-        if (isKeyOperator(operator)) {
-          result.push(encodeUnreserved(key) + "=" + tmp.join(","));
-        } else if (tmp.length !== 0) {
-          result.push(tmp.join(","));
-        }
-      }
-    }
-  } else {
-    if (operator === ";") {
-      if (isDefined(value)) {
-        result.push(encodeUnreserved(key));
-      }
-    } else if (value === "" && (operator === "&" || operator === "?")) {
-      result.push(encodeUnreserved(key) + "=");
-    } else if (value === "") {
-      result.push("");
-    }
-  }
-  return result;
-}
-function parseUrl(template) {
-  return {
-    expand: expand.bind(null, template)
-  };
-}
-function expand(template, context) {
-  var operators = ["+", "#", ".", "/", ";", "?", "&"];
-  template = template.replace(
-    /\{([^\{\}]+)\}|([^\{\}]+)/g,
-    function(_, expression, literal) {
-      if (expression) {
-        let operator = "";
-        const values = [];
-        if (operators.indexOf(expression.charAt(0)) !== -1) {
-          operator = expression.charAt(0);
-          expression = expression.substr(1);
-        }
-        expression.split(/,/g).forEach(function(variable) {
-          var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
-          values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
-        });
-        if (operator && operator !== "+") {
-          var separator = ",";
-          if (operator === "?") {
-            separator = "&";
-          } else if (operator !== "#") {
-            separator = operator;
-          }
-          return (values.length !== 0 ? operator : "") + values.join(separator);
-        } else {
-          return values.join(",");
-        }
-      } else {
-        return encodeReserved(literal);
-      }
-    }
-  );
-  if (template === "/") {
-    return template;
-  } else {
-    return template.replace(/\/$/, "");
-  }
-}
-
-// pkg/dist-src/parse.js
-function parse(options) {
-  let method = options.method.toUpperCase();
-  let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
-  let headers = Object.assign({}, options.headers);
-  let body;
-  let parameters = omit(options, [
-    "method",
-    "baseUrl",
-    "url",
-    "headers",
-    "request",
-    "mediaType"
-  ]);
-  const urlVariableNames = extractUrlVariableNames(url);
-  url = parseUrl(url).expand(parameters);
-  if (!/^http/.test(url)) {
-    url = options.baseUrl + url;
-  }
-  const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl");
-  const remainingParameters = omit(parameters, omittedParameters);
-  const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
-  if (!isBinaryRequest) {
-    if (options.mediaType.format) {
-      headers.accept = headers.accept.split(/,/).map(
-        (format) => format.replace(
-          /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,
-          `application/vnd$1$2.${options.mediaType.format}`
-        )
-      ).join(",");
-    }
-    if (url.endsWith("/graphql")) {
-      if (options.mediaType.previews?.length) {
-        const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
-        headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {
-          const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
-          return `application/vnd.github.${preview}-preview${format}`;
-        }).join(",");
-      }
-    }
-  }
-  if (["GET", "HEAD"].includes(method)) {
-    url = addQueryParameters(url, remainingParameters);
-  } else {
-    if ("data" in remainingParameters) {
-      body = remainingParameters.data;
-    } else {
-      if (Object.keys(remainingParameters).length) {
-        body = remainingParameters;
-      }
-    }
-  }
-  if (!headers["content-type"] && typeof body !== "undefined") {
-    headers["content-type"] = "application/json; charset=utf-8";
-  }
-  if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
-    body = "";
-  }
-  return Object.assign(
-    { method, url, headers },
-    typeof body !== "undefined" ? { body } : null,
-    options.request ? { request: options.request } : null
-  );
-}
-
-// pkg/dist-src/endpoint-with-defaults.js
-function endpointWithDefaults(defaults, route, options) {
-  return parse(merge(defaults, route, options));
-}
-
-// pkg/dist-src/with-defaults.js
-function withDefaults(oldDefaults, newDefaults) {
-  const DEFAULTS2 = merge(oldDefaults, newDefaults);
-  const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);
-  return Object.assign(endpoint2, {
-    DEFAULTS: DEFAULTS2,
-    defaults: withDefaults.bind(null, DEFAULTS2),
-    merge: merge.bind(null, DEFAULTS2),
-    parse
-  });
-}
-
-// pkg/dist-src/index.js
-var endpoint = withDefaults(null, DEFAULTS);
-// Annotate the CommonJS export names for ESM import in node:
-0 && (module.exports = {
-  endpoint
-});
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-node/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-node/index.js.map
deleted file mode 100644
index 60f2ed9..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-node/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/index.js", "../dist-src/defaults.js", "../dist-src/version.js", "../dist-src/util/lowercase-keys.js", "../dist-src/util/is-plain-object.js", "../dist-src/util/merge-deep.js", "../dist-src/util/remove-undefined-properties.js", "../dist-src/merge.js", "../dist-src/util/add-query-parameters.js", "../dist-src/util/extract-url-variable-names.js", "../dist-src/util/omit.js", "../dist-src/util/url-template.js", "../dist-src/parse.js", "../dist-src/endpoint-with-defaults.js", "../dist-src/with-defaults.js"],
-  "sourcesContent": ["import { withDefaults } from \"./with-defaults\";\nimport { DEFAULTS } from \"./defaults\";\nconst endpoint = withDefaults(null, DEFAULTS);\nexport {\n  endpoint\n};\n", "import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nconst userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\nconst DEFAULTS = {\n  method: \"GET\",\n  baseUrl: \"https://api.github.com\",\n  headers: {\n    accept: \"application/vnd.github.v3+json\",\n    \"user-agent\": userAgent\n  },\n  mediaType: {\n    format: \"\"\n  }\n};\nexport {\n  DEFAULTS\n};\n", "const VERSION = \"9.0.4\";\nexport {\n  VERSION\n};\n", "function lowercaseKeys(object) {\n  if (!object) {\n    return {};\n  }\n  return Object.keys(object).reduce((newObj, key) => {\n    newObj[key.toLowerCase()] = object[key];\n    return newObj;\n  }, {});\n}\nexport {\n  lowercaseKeys\n};\n", "function isPlainObject(value) {\n  if (typeof value !== \"object\" || value === null)\n    return false;\n  if (Object.prototype.toString.call(value) !== \"[object Object]\")\n    return false;\n  const proto = Object.getPrototypeOf(value);\n  if (proto === null)\n    return true;\n  const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n  return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\nexport {\n  isPlainObject\n};\n", "import { isPlainObject } from \"./is-plain-object\";\nfunction mergeDeep(defaults, options) {\n  const result = Object.assign({}, defaults);\n  Object.keys(options).forEach((key) => {\n    if (isPlainObject(options[key])) {\n      if (!(key in defaults))\n        Object.assign(result, { [key]: options[key] });\n      else\n        result[key] = mergeDeep(defaults[key], options[key]);\n    } else {\n      Object.assign(result, { [key]: options[key] });\n    }\n  });\n  return result;\n}\nexport {\n  mergeDeep\n};\n", "function removeUndefinedProperties(obj) {\n  for (const key in obj) {\n    if (obj[key] === void 0) {\n      delete obj[key];\n    }\n  }\n  return obj;\n}\nexport {\n  removeUndefinedProperties\n};\n", "import { lowercaseKeys } from \"./util/lowercase-keys\";\nimport { mergeDeep } from \"./util/merge-deep\";\nimport { removeUndefinedProperties } from \"./util/remove-undefined-properties\";\nfunction merge(defaults, route, options) {\n  if (typeof route === \"string\") {\n    let [method, url] = route.split(\" \");\n    options = Object.assign(url ? { method, url } : { url: method }, options);\n  } else {\n    options = Object.assign({}, route);\n  }\n  options.headers = lowercaseKeys(options.headers);\n  removeUndefinedProperties(options);\n  removeUndefinedProperties(options.headers);\n  const mergedOptions = mergeDeep(defaults || {}, options);\n  if (options.url === \"/graphql\") {\n    if (defaults && defaults.mediaType.previews?.length) {\n      mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n        (preview) => !mergedOptions.mediaType.previews.includes(preview)\n      ).concat(mergedOptions.mediaType.previews);\n    }\n    mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n  }\n  return mergedOptions;\n}\nexport {\n  merge\n};\n", "function addQueryParameters(url, parameters) {\n  const separator = /\\?/.test(url) ? \"&\" : \"?\";\n  const names = Object.keys(parameters);\n  if (names.length === 0) {\n    return url;\n  }\n  return url + separator + names.map((name) => {\n    if (name === \"q\") {\n      return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n    }\n    return `${name}=${encodeURIComponent(parameters[name])}`;\n  }).join(\"&\");\n}\nexport {\n  addQueryParameters\n};\n", "const urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n  return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nfunction extractUrlVariableNames(url) {\n  const matches = url.match(urlVariableRegex);\n  if (!matches) {\n    return [];\n  }\n  return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\nexport {\n  extractUrlVariableNames\n};\n", "function omit(object, keysToOmit) {\n  const result = { __proto__: null };\n  for (const key of Object.keys(object)) {\n    if (keysToOmit.indexOf(key) === -1) {\n      result[key] = object[key];\n    }\n  }\n  return result;\n}\nexport {\n  omit\n};\n", "function encodeReserved(str) {\n  return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n    if (!/%[0-9A-Fa-f]/.test(part)) {\n      part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n    }\n    return part;\n  }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n  return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n    return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n  });\n}\nfunction encodeValue(operator, value, key) {\n  value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n  if (key) {\n    return encodeUnreserved(key) + \"=\" + value;\n  } else {\n    return value;\n  }\n}\nfunction isDefined(value) {\n  return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n  return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n  var value = context[key], result = [];\n  if (isDefined(value) && value !== \"\") {\n    if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n      value = value.toString();\n      if (modifier && modifier !== \"*\") {\n        value = value.substring(0, parseInt(modifier, 10));\n      }\n      result.push(\n        encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n      );\n    } else {\n      if (modifier === \"*\") {\n        if (Array.isArray(value)) {\n          value.filter(isDefined).forEach(function(value2) {\n            result.push(\n              encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n            );\n          });\n        } else {\n          Object.keys(value).forEach(function(k) {\n            if (isDefined(value[k])) {\n              result.push(encodeValue(operator, value[k], k));\n            }\n          });\n        }\n      } else {\n        const tmp = [];\n        if (Array.isArray(value)) {\n          value.filter(isDefined).forEach(function(value2) {\n            tmp.push(encodeValue(operator, value2));\n          });\n        } else {\n          Object.keys(value).forEach(function(k) {\n            if (isDefined(value[k])) {\n              tmp.push(encodeUnreserved(k));\n              tmp.push(encodeValue(operator, value[k].toString()));\n            }\n          });\n        }\n        if (isKeyOperator(operator)) {\n          result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n        } else if (tmp.length !== 0) {\n          result.push(tmp.join(\",\"));\n        }\n      }\n    }\n  } else {\n    if (operator === \";\") {\n      if (isDefined(value)) {\n        result.push(encodeUnreserved(key));\n      }\n    } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n      result.push(encodeUnreserved(key) + \"=\");\n    } else if (value === \"\") {\n      result.push(\"\");\n    }\n  }\n  return result;\n}\nfunction parseUrl(template) {\n  return {\n    expand: expand.bind(null, template)\n  };\n}\nfunction expand(template, context) {\n  var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n  template = template.replace(\n    /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n    function(_, expression, literal) {\n      if (expression) {\n        let operator = \"\";\n        const values = [];\n        if (operators.indexOf(expression.charAt(0)) !== -1) {\n          operator = expression.charAt(0);\n          expression = expression.substr(1);\n        }\n        expression.split(/,/g).forEach(function(variable) {\n          var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n          values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n        });\n        if (operator && operator !== \"+\") {\n          var separator = \",\";\n          if (operator === \"?\") {\n            separator = \"&\";\n          } else if (operator !== \"#\") {\n            separator = operator;\n          }\n          return (values.length !== 0 ? operator : \"\") + values.join(separator);\n        } else {\n          return values.join(\",\");\n        }\n      } else {\n        return encodeReserved(literal);\n      }\n    }\n  );\n  if (template === \"/\") {\n    return template;\n  } else {\n    return template.replace(/\\/$/, \"\");\n  }\n}\nexport {\n  parseUrl\n};\n", "import { addQueryParameters } from \"./util/add-query-parameters\";\nimport { extractUrlVariableNames } from \"./util/extract-url-variable-names\";\nimport { omit } from \"./util/omit\";\nimport { parseUrl } from \"./util/url-template\";\nfunction parse(options) {\n  let method = options.method.toUpperCase();\n  let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n  let headers = Object.assign({}, options.headers);\n  let body;\n  let parameters = omit(options, [\n    \"method\",\n    \"baseUrl\",\n    \"url\",\n    \"headers\",\n    \"request\",\n    \"mediaType\"\n  ]);\n  const urlVariableNames = extractUrlVariableNames(url);\n  url = parseUrl(url).expand(parameters);\n  if (!/^http/.test(url)) {\n    url = options.baseUrl + url;\n  }\n  const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n  const remainingParameters = omit(parameters, omittedParameters);\n  const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n  if (!isBinaryRequest) {\n    if (options.mediaType.format) {\n      headers.accept = headers.accept.split(/,/).map(\n        (format) => format.replace(\n          /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n          `application/vnd$1$2.${options.mediaType.format}`\n        )\n      ).join(\",\");\n    }\n    if (url.endsWith(\"/graphql\")) {\n      if (options.mediaType.previews?.length) {\n        const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n        headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {\n          const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n          return `application/vnd.github.${preview}-preview${format}`;\n        }).join(\",\");\n      }\n    }\n  }\n  if ([\"GET\", \"HEAD\"].includes(method)) {\n    url = addQueryParameters(url, remainingParameters);\n  } else {\n    if (\"data\" in remainingParameters) {\n      body = remainingParameters.data;\n    } else {\n      if (Object.keys(remainingParameters).length) {\n        body = remainingParameters;\n      }\n    }\n  }\n  if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n    headers[\"content-type\"] = \"application/json; charset=utf-8\";\n  }\n  if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n    body = \"\";\n  }\n  return Object.assign(\n    { method, url, headers },\n    typeof body !== \"undefined\" ? { body } : null,\n    options.request ? { request: options.request } : null\n  );\n}\nexport {\n  parse\n};\n", "import { DEFAULTS } from \"./defaults\";\nimport { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nfunction endpointWithDefaults(defaults, route, options) {\n  return parse(merge(defaults, route, options));\n}\nexport {\n  endpointWithDefaults\n};\n", "import { endpointWithDefaults } from \"./endpoint-with-defaults\";\nimport { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nfunction withDefaults(oldDefaults, newDefaults) {\n  const DEFAULTS = merge(oldDefaults, newDefaults);\n  const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n  return Object.assign(endpoint, {\n    DEFAULTS,\n    defaults: withDefaults.bind(null, DEFAULTS),\n    merge: merge.bind(null, DEFAULTS),\n    parse\n  });\n}\nexport {\n  withDefaults\n};\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,kCAA6B;;;ACA7B,IAAM,UAAU;;;ADEhB,IAAM,YAAY,uBAAuB,OAAO,QAAI,0CAAa,CAAC;AAClE,IAAM,WAAW;AAAA,EACf,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACT,QAAQ;AAAA,EACV;AACF;;;AEbA,SAAS,cAAc,QAAQ;AAC7B,MAAI,CAAC,QAAQ;AACX,WAAO,CAAC;AAAA,EACV;AACA,SAAO,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,QAAQ,QAAQ;AACjD,WAAO,IAAI,YAAY,CAAC,IAAI,OAAO,GAAG;AACtC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP;;;ACRA,SAAS,cAAc,OAAO;AAC5B,MAAI,OAAO,UAAU,YAAY,UAAU;AACzC,WAAO;AACT,MAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAC5C,WAAO;AACT,QAAM,QAAQ,OAAO,eAAe,KAAK;AACzC,MAAI,UAAU;AACZ,WAAO;AACT,QAAM,OAAO,OAAO,UAAU,eAAe,KAAK,OAAO,aAAa,KAAK,MAAM;AACjF,SAAO,OAAO,SAAS,cAAc,gBAAgB,QAAQ,SAAS,UAAU,KAAK,IAAI,MAAM,SAAS,UAAU,KAAK,KAAK;AAC9H;;;ACTA,SAAS,UAAU,UAAU,SAAS;AACpC,QAAM,SAAS,OAAO,OAAO,CAAC,GAAG,QAAQ;AACzC,SAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAQ;AACpC,QAAI,cAAc,QAAQ,GAAG,CAAC,GAAG;AAC/B,UAAI,EAAE,OAAO;AACX,eAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC;AAAA;AAE7C,eAAO,GAAG,IAAI,UAAU,SAAS,GAAG,GAAG,QAAQ,GAAG,CAAC;AAAA,IACvD,OAAO;AACL,aAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC;AAAA,IAC/C;AAAA,EACF,CAAC;AACD,SAAO;AACT;;;ACdA,SAAS,0BAA0B,KAAK;AACtC,aAAW,OAAO,KAAK;AACrB,QAAI,IAAI,GAAG,MAAM,QAAQ;AACvB,aAAO,IAAI,GAAG;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;;;ACJA,SAAS,MAAM,UAAU,OAAO,SAAS;AACvC,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,MAAM,GAAG;AACnC,cAAU,OAAO,OAAO,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,KAAK,OAAO,GAAG,OAAO;AAAA,EAC1E,OAAO;AACL,cAAU,OAAO,OAAO,CAAC,GAAG,KAAK;AAAA,EACnC;AACA,UAAQ,UAAU,cAAc,QAAQ,OAAO;AAC/C,4BAA0B,OAAO;AACjC,4BAA0B,QAAQ,OAAO;AACzC,QAAM,gBAAgB,UAAU,YAAY,CAAC,GAAG,OAAO;AACvD,MAAI,QAAQ,QAAQ,YAAY;AAC9B,QAAI,YAAY,SAAS,UAAU,UAAU,QAAQ;AACnD,oBAAc,UAAU,WAAW,SAAS,UAAU,SAAS;AAAA,QAC7D,CAAC,YAAY,CAAC,cAAc,UAAU,SAAS,SAAS,OAAO;AAAA,MACjE,EAAE,OAAO,cAAc,UAAU,QAAQ;AAAA,IAC3C;AACA,kBAAc,UAAU,YAAY,cAAc,UAAU,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,QAAQ,QAAQ,YAAY,EAAE,CAAC;AAAA,EAC9H;AACA,SAAO;AACT;;;ACvBA,SAAS,mBAAmB,KAAK,YAAY;AAC3C,QAAM,YAAY,KAAK,KAAK,GAAG,IAAI,MAAM;AACzC,QAAM,QAAQ,OAAO,KAAK,UAAU;AACpC,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AACA,SAAO,MAAM,YAAY,MAAM,IAAI,CAAC,SAAS;AAC3C,QAAI,SAAS,KAAK;AAChB,aAAO,OAAO,WAAW,EAAE,MAAM,GAAG,EAAE,IAAI,kBAAkB,EAAE,KAAK,GAAG;AAAA,IACxE;AACA,WAAO,GAAG,IAAI,IAAI,mBAAmB,WAAW,IAAI,CAAC,CAAC;AAAA,EACxD,CAAC,EAAE,KAAK,GAAG;AACb;;;ACZA,IAAM,mBAAmB;AACzB,SAAS,eAAe,cAAc;AACpC,SAAO,aAAa,QAAQ,cAAc,EAAE,EAAE,MAAM,GAAG;AACzD;AACA,SAAS,wBAAwB,KAAK;AACpC,QAAM,UAAU,IAAI,MAAM,gBAAgB;AAC1C,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC;AAAA,EACV;AACA,SAAO,QAAQ,IAAI,cAAc,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACrE;;;ACVA,SAAS,KAAK,QAAQ,YAAY;AAChC,QAAM,SAAS,EAAE,WAAW,KAAK;AACjC,aAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACrC,QAAI,WAAW,QAAQ,GAAG,MAAM,IAAI;AAClC,aAAO,GAAG,IAAI,OAAO,GAAG;AAAA,IAC1B;AAAA,EACF;AACA,SAAO;AACT;;;ACRA,SAAS,eAAe,KAAK;AAC3B,SAAO,IAAI,MAAM,oBAAoB,EAAE,IAAI,SAAS,MAAM;AACxD,QAAI,CAAC,eAAe,KAAK,IAAI,GAAG;AAC9B,aAAO,UAAU,IAAI,EAAE,QAAQ,QAAQ,GAAG,EAAE,QAAQ,QAAQ,GAAG;AAAA,IACjE;AACA,WAAO;AAAA,EACT,CAAC,EAAE,KAAK,EAAE;AACZ;AACA,SAAS,iBAAiB,KAAK;AAC7B,SAAO,mBAAmB,GAAG,EAAE,QAAQ,YAAY,SAAS,GAAG;AAC7D,WAAO,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY;AAAA,EACxD,CAAC;AACH;AACA,SAAS,YAAY,UAAU,OAAO,KAAK;AACzC,UAAQ,aAAa,OAAO,aAAa,MAAM,eAAe,KAAK,IAAI,iBAAiB,KAAK;AAC7F,MAAI,KAAK;AACP,WAAO,iBAAiB,GAAG,IAAI,MAAM;AAAA,EACvC,OAAO;AACL,WAAO;AAAA,EACT;AACF;AACA,SAAS,UAAU,OAAO;AACxB,SAAO,UAAU,UAAU,UAAU;AACvC;AACA,SAAS,cAAc,UAAU;AAC/B,SAAO,aAAa,OAAO,aAAa,OAAO,aAAa;AAC9D;AACA,SAAS,UAAU,SAAS,UAAU,KAAK,UAAU;AACnD,MAAI,QAAQ,QAAQ,GAAG,GAAG,SAAS,CAAC;AACpC,MAAI,UAAU,KAAK,KAAK,UAAU,IAAI;AACpC,QAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AACxF,cAAQ,MAAM,SAAS;AACvB,UAAI,YAAY,aAAa,KAAK;AAChC,gBAAQ,MAAM,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC;AAAA,MACnD;AACA,aAAO;AAAA,QACL,YAAY,UAAU,OAAO,cAAc,QAAQ,IAAI,MAAM,EAAE;AAAA,MACjE;AAAA,IACF,OAAO;AACL,UAAI,aAAa,KAAK;AACpB,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAM,OAAO,SAAS,EAAE,QAAQ,SAAS,QAAQ;AAC/C,mBAAO;AAAA,cACL,YAAY,UAAU,QAAQ,cAAc,QAAQ,IAAI,MAAM,EAAE;AAAA,YAClE;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,KAAK,KAAK,EAAE,QAAQ,SAAS,GAAG;AACrC,gBAAI,UAAU,MAAM,CAAC,CAAC,GAAG;AACvB,qBAAO,KAAK,YAAY,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC;AAAA,YAChD;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,cAAM,MAAM,CAAC;AACb,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAM,OAAO,SAAS,EAAE,QAAQ,SAAS,QAAQ;AAC/C,gBAAI,KAAK,YAAY,UAAU,MAAM,CAAC;AAAA,UACxC,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,KAAK,KAAK,EAAE,QAAQ,SAAS,GAAG;AACrC,gBAAI,UAAU,MAAM,CAAC,CAAC,GAAG;AACvB,kBAAI,KAAK,iBAAiB,CAAC,CAAC;AAC5B,kBAAI,KAAK,YAAY,UAAU,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AAAA,YACrD;AAAA,UACF,CAAC;AAAA,QACH;AACA,YAAI,cAAc,QAAQ,GAAG;AAC3B,iBAAO,KAAK,iBAAiB,GAAG,IAAI,MAAM,IAAI,KAAK,GAAG,CAAC;AAAA,QACzD,WAAW,IAAI,WAAW,GAAG;AAC3B,iBAAO,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,EACF,OAAO;AACL,QAAI,aAAa,KAAK;AACpB,UAAI,UAAU,KAAK,GAAG;AACpB,eAAO,KAAK,iBAAiB,GAAG,CAAC;AAAA,MACnC;AAAA,IACF,WAAW,UAAU,OAAO,aAAa,OAAO,aAAa,MAAM;AACjE,aAAO,KAAK,iBAAiB,GAAG,IAAI,GAAG;AAAA,IACzC,WAAW,UAAU,IAAI;AACvB,aAAO,KAAK,EAAE;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,SAAS,UAAU;AAC1B,SAAO;AAAA,IACL,QAAQ,OAAO,KAAK,MAAM,QAAQ;AAAA,EACpC;AACF;AACA,SAAS,OAAO,UAAU,SAAS;AACjC,MAAI,YAAY,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAClD,aAAW,SAAS;AAAA,IAClB;AAAA,IACA,SAAS,GAAG,YAAY,SAAS;AAC/B,UAAI,YAAY;AACd,YAAI,WAAW;AACf,cAAM,SAAS,CAAC;AAChB,YAAI,UAAU,QAAQ,WAAW,OAAO,CAAC,CAAC,MAAM,IAAI;AAClD,qBAAW,WAAW,OAAO,CAAC;AAC9B,uBAAa,WAAW,OAAO,CAAC;AAAA,QAClC;AACA,mBAAW,MAAM,IAAI,EAAE,QAAQ,SAAS,UAAU;AAChD,cAAI,MAAM,4BAA4B,KAAK,QAAQ;AACnD,iBAAO,KAAK,UAAU,SAAS,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AAAA,QACpE,CAAC;AACD,YAAI,YAAY,aAAa,KAAK;AAChC,cAAI,YAAY;AAChB,cAAI,aAAa,KAAK;AACpB,wBAAY;AAAA,UACd,WAAW,aAAa,KAAK;AAC3B,wBAAY;AAAA,UACd;AACA,kBAAQ,OAAO,WAAW,IAAI,WAAW,MAAM,OAAO,KAAK,SAAS;AAAA,QACtE,OAAO;AACL,iBAAO,OAAO,KAAK,GAAG;AAAA,QACxB;AAAA,MACF,OAAO;AACL,eAAO,eAAe,OAAO;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AACA,MAAI,aAAa,KAAK;AACpB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,SAAS,QAAQ,OAAO,EAAE;AAAA,EACnC;AACF;;;AC7HA,SAAS,MAAM,SAAS;AACtB,MAAI,SAAS,QAAQ,OAAO,YAAY;AACxC,MAAI,OAAO,QAAQ,OAAO,KAAK,QAAQ,gBAAgB,MAAM;AAC7D,MAAI,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO;AAC/C,MAAI;AACJ,MAAI,aAAa,KAAK,SAAS;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,mBAAmB,wBAAwB,GAAG;AACpD,QAAM,SAAS,GAAG,EAAE,OAAO,UAAU;AACrC,MAAI,CAAC,QAAQ,KAAK,GAAG,GAAG;AACtB,UAAM,QAAQ,UAAU;AAAA,EAC1B;AACA,QAAM,oBAAoB,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,WAAW,iBAAiB,SAAS,MAAM,CAAC,EAAE,OAAO,SAAS;AACrH,QAAM,sBAAsB,KAAK,YAAY,iBAAiB;AAC9D,QAAM,kBAAkB,6BAA6B,KAAK,QAAQ,MAAM;AACxE,MAAI,CAAC,iBAAiB;AACpB,QAAI,QAAQ,UAAU,QAAQ;AAC5B,cAAQ,SAAS,QAAQ,OAAO,MAAM,GAAG,EAAE;AAAA,QACzC,CAAC,WAAW,OAAO;AAAA,UACjB;AAAA,UACA,uBAAuB,QAAQ,UAAU,MAAM;AAAA,QACjD;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AACA,QAAI,IAAI,SAAS,UAAU,GAAG;AAC5B,UAAI,QAAQ,UAAU,UAAU,QAAQ;AACtC,cAAM,2BAA2B,QAAQ,OAAO,MAAM,qBAAqB,KAAK,CAAC;AACjF,gBAAQ,SAAS,yBAAyB,OAAO,QAAQ,UAAU,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC5F,gBAAM,SAAS,QAAQ,UAAU,SAAS,IAAI,QAAQ,UAAU,MAAM,KAAK;AAC3E,iBAAO,0BAA0B,OAAO,WAAW,MAAM;AAAA,QAC3D,CAAC,EAAE,KAAK,GAAG;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,OAAO,MAAM,EAAE,SAAS,MAAM,GAAG;AACpC,UAAM,mBAAmB,KAAK,mBAAmB;AAAA,EACnD,OAAO;AACL,QAAI,UAAU,qBAAqB;AACjC,aAAO,oBAAoB;AAAA,IAC7B,OAAO;AACL,UAAI,OAAO,KAAK,mBAAmB,EAAE,QAAQ;AAC3C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,QAAQ,cAAc,KAAK,OAAO,SAAS,aAAa;AAC3D,YAAQ,cAAc,IAAI;AAAA,EAC5B;AACA,MAAI,CAAC,SAAS,KAAK,EAAE,SAAS,MAAM,KAAK,OAAO,SAAS,aAAa;AACpE,WAAO;AAAA,EACT;AACA,SAAO,OAAO;AAAA,IACZ,EAAE,QAAQ,KAAK,QAAQ;AAAA,IACvB,OAAO,SAAS,cAAc,EAAE,KAAK,IAAI;AAAA,IACzC,QAAQ,UAAU,EAAE,SAAS,QAAQ,QAAQ,IAAI;AAAA,EACnD;AACF;;;AC/DA,SAAS,qBAAqB,UAAU,OAAO,SAAS;AACtD,SAAO,MAAM,MAAM,UAAU,OAAO,OAAO,CAAC;AAC9C;;;ACFA,SAAS,aAAa,aAAa,aAAa;AAC9C,QAAMA,YAAW,MAAM,aAAa,WAAW;AAC/C,QAAMC,YAAW,qBAAqB,KAAK,MAAMD,SAAQ;AACzD,SAAO,OAAO,OAAOC,WAAU;AAAA,IAC7B,UAAAD;AAAA,IACA,UAAU,aAAa,KAAK,MAAMA,SAAQ;AAAA,IAC1C,OAAO,MAAM,KAAK,MAAMA,SAAQ;AAAA,IAChC;AAAA,EACF,CAAC;AACH;;;AdVA,IAAM,WAAW,aAAa,MAAM,QAAQ;",
-  "names": ["DEFAULTS", "endpoint"]
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/defaults.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/defaults.js
deleted file mode 100644
index 43d620c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/defaults.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import { getUserAgent } from "universal-user-agent";
-import { VERSION } from "./version";
-const userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
-const DEFAULTS = {
-  method: "GET",
-  baseUrl: "https://api.github.com",
-  headers: {
-    accept: "application/vnd.github.v3+json",
-    "user-agent": userAgent
-  },
-  mediaType: {
-    format: ""
-  }
-};
-export {
-  DEFAULTS
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js
deleted file mode 100644
index f3c4f4b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { DEFAULTS } from "./defaults";
-import { merge } from "./merge";
-import { parse } from "./parse";
-function endpointWithDefaults(defaults, route, options) {
-  return parse(merge(defaults, route, options));
-}
-export {
-  endpointWithDefaults
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/index.js
deleted file mode 100644
index b1d45e3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import { withDefaults } from "./with-defaults";
-import { DEFAULTS } from "./defaults";
-const endpoint = withDefaults(null, DEFAULTS);
-export {
-  endpoint
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/merge.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/merge.js
deleted file mode 100644
index baf7469..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/merge.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import { lowercaseKeys } from "./util/lowercase-keys";
-import { mergeDeep } from "./util/merge-deep";
-import { removeUndefinedProperties } from "./util/remove-undefined-properties";
-function merge(defaults, route, options) {
-  if (typeof route === "string") {
-    let [method, url] = route.split(" ");
-    options = Object.assign(url ? { method, url } : { url: method }, options);
-  } else {
-    options = Object.assign({}, route);
-  }
-  options.headers = lowercaseKeys(options.headers);
-  removeUndefinedProperties(options);
-  removeUndefinedProperties(options.headers);
-  const mergedOptions = mergeDeep(defaults || {}, options);
-  if (options.url === "/graphql") {
-    if (defaults && defaults.mediaType.previews?.length) {
-      mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(
-        (preview) => !mergedOptions.mediaType.previews.includes(preview)
-      ).concat(mergedOptions.mediaType.previews);
-    }
-    mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, ""));
-  }
-  return mergedOptions;
-}
-export {
-  merge
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/parse.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/parse.js
deleted file mode 100644
index 2cbbe7c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/parse.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import { addQueryParameters } from "./util/add-query-parameters";
-import { extractUrlVariableNames } from "./util/extract-url-variable-names";
-import { omit } from "./util/omit";
-import { parseUrl } from "./util/url-template";
-function parse(options) {
-  let method = options.method.toUpperCase();
-  let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
-  let headers = Object.assign({}, options.headers);
-  let body;
-  let parameters = omit(options, [
-    "method",
-    "baseUrl",
-    "url",
-    "headers",
-    "request",
-    "mediaType"
-  ]);
-  const urlVariableNames = extractUrlVariableNames(url);
-  url = parseUrl(url).expand(parameters);
-  if (!/^http/.test(url)) {
-    url = options.baseUrl + url;
-  }
-  const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl");
-  const remainingParameters = omit(parameters, omittedParameters);
-  const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
-  if (!isBinaryRequest) {
-    if (options.mediaType.format) {
-      headers.accept = headers.accept.split(/,/).map(
-        (format) => format.replace(
-          /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,
-          `application/vnd$1$2.${options.mediaType.format}`
-        )
-      ).join(",");
-    }
-    if (url.endsWith("/graphql")) {
-      if (options.mediaType.previews?.length) {
-        const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
-        headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {
-          const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
-          return `application/vnd.github.${preview}-preview${format}`;
-        }).join(",");
-      }
-    }
-  }
-  if (["GET", "HEAD"].includes(method)) {
-    url = addQueryParameters(url, remainingParameters);
-  } else {
-    if ("data" in remainingParameters) {
-      body = remainingParameters.data;
-    } else {
-      if (Object.keys(remainingParameters).length) {
-        body = remainingParameters;
-      }
-    }
-  }
-  if (!headers["content-type"] && typeof body !== "undefined") {
-    headers["content-type"] = "application/json; charset=utf-8";
-  }
-  if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
-    body = "";
-  }
-  return Object.assign(
-    { method, url, headers },
-    typeof body !== "undefined" ? { body } : null,
-    options.request ? { request: options.request } : null
-  );
-}
-export {
-  parse
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js
deleted file mode 100644
index 6bdf736..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js
+++ /dev/null
@@ -1,16 +0,0 @@
-function addQueryParameters(url, parameters) {
-  const separator = /\?/.test(url) ? "&" : "?";
-  const names = Object.keys(parameters);
-  if (names.length === 0) {
-    return url;
-  }
-  return url + separator + names.map((name) => {
-    if (name === "q") {
-      return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
-    }
-    return `${name}=${encodeURIComponent(parameters[name])}`;
-  }).join("&");
-}
-export {
-  addQueryParameters
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js
deleted file mode 100644
index 1d75bb9..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const urlVariableRegex = /\{[^}]+\}/g;
-function removeNonChars(variableName) {
-  return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
-}
-function extractUrlVariableNames(url) {
-  const matches = url.match(urlVariableRegex);
-  if (!matches) {
-    return [];
-  }
-  return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
-}
-export {
-  extractUrlVariableNames
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js
deleted file mode 100644
index 44b5eb2..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js
+++ /dev/null
@@ -1,14 +0,0 @@
-function isPlainObject(value) {
-  if (typeof value !== "object" || value === null)
-    return false;
-  if (Object.prototype.toString.call(value) !== "[object Object]")
-    return false;
-  const proto = Object.getPrototypeOf(value);
-  if (proto === null)
-    return true;
-  const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
-  return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
-}
-export {
-  isPlainObject
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js
deleted file mode 100644
index 9bd7bb9..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js
+++ /dev/null
@@ -1,12 +0,0 @@
-function lowercaseKeys(object) {
-  if (!object) {
-    return {};
-  }
-  return Object.keys(object).reduce((newObj, key) => {
-    newObj[key.toLowerCase()] = object[key];
-    return newObj;
-  }, {});
-}
-export {
-  lowercaseKeys
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js
deleted file mode 100644
index c165445..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { isPlainObject } from "./is-plain-object";
-function mergeDeep(defaults, options) {
-  const result = Object.assign({}, defaults);
-  Object.keys(options).forEach((key) => {
-    if (isPlainObject(options[key])) {
-      if (!(key in defaults))
-        Object.assign(result, { [key]: options[key] });
-      else
-        result[key] = mergeDeep(defaults[key], options[key]);
-    } else {
-      Object.assign(result, { [key]: options[key] });
-    }
-  });
-  return result;
-}
-export {
-  mergeDeep
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/omit.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/omit.js
deleted file mode 100644
index aceffe2..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/omit.js
+++ /dev/null
@@ -1,12 +0,0 @@
-function omit(object, keysToOmit) {
-  const result = { __proto__: null };
-  for (const key of Object.keys(object)) {
-    if (keysToOmit.indexOf(key) === -1) {
-      result[key] = object[key];
-    }
-  }
-  return result;
-}
-export {
-  omit
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js
deleted file mode 100644
index 8653027..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js
+++ /dev/null
@@ -1,11 +0,0 @@
-function removeUndefinedProperties(obj) {
-  for (const key in obj) {
-    if (obj[key] === void 0) {
-      delete obj[key];
-    }
-  }
-  return obj;
-}
-export {
-  removeUndefinedProperties
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/url-template.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/url-template.js
deleted file mode 100644
index f70aa5c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/util/url-template.js
+++ /dev/null
@@ -1,133 +0,0 @@
-function encodeReserved(str) {
-  return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {
-    if (!/%[0-9A-Fa-f]/.test(part)) {
-      part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
-    }
-    return part;
-  }).join("");
-}
-function encodeUnreserved(str) {
-  return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
-    return "%" + c.charCodeAt(0).toString(16).toUpperCase();
-  });
-}
-function encodeValue(operator, value, key) {
-  value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
-  if (key) {
-    return encodeUnreserved(key) + "=" + value;
-  } else {
-    return value;
-  }
-}
-function isDefined(value) {
-  return value !== void 0 && value !== null;
-}
-function isKeyOperator(operator) {
-  return operator === ";" || operator === "&" || operator === "?";
-}
-function getValues(context, operator, key, modifier) {
-  var value = context[key], result = [];
-  if (isDefined(value) && value !== "") {
-    if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
-      value = value.toString();
-      if (modifier && modifier !== "*") {
-        value = value.substring(0, parseInt(modifier, 10));
-      }
-      result.push(
-        encodeValue(operator, value, isKeyOperator(operator) ? key : "")
-      );
-    } else {
-      if (modifier === "*") {
-        if (Array.isArray(value)) {
-          value.filter(isDefined).forEach(function(value2) {
-            result.push(
-              encodeValue(operator, value2, isKeyOperator(operator) ? key : "")
-            );
-          });
-        } else {
-          Object.keys(value).forEach(function(k) {
-            if (isDefined(value[k])) {
-              result.push(encodeValue(operator, value[k], k));
-            }
-          });
-        }
-      } else {
-        const tmp = [];
-        if (Array.isArray(value)) {
-          value.filter(isDefined).forEach(function(value2) {
-            tmp.push(encodeValue(operator, value2));
-          });
-        } else {
-          Object.keys(value).forEach(function(k) {
-            if (isDefined(value[k])) {
-              tmp.push(encodeUnreserved(k));
-              tmp.push(encodeValue(operator, value[k].toString()));
-            }
-          });
-        }
-        if (isKeyOperator(operator)) {
-          result.push(encodeUnreserved(key) + "=" + tmp.join(","));
-        } else if (tmp.length !== 0) {
-          result.push(tmp.join(","));
-        }
-      }
-    }
-  } else {
-    if (operator === ";") {
-      if (isDefined(value)) {
-        result.push(encodeUnreserved(key));
-      }
-    } else if (value === "" && (operator === "&" || operator === "?")) {
-      result.push(encodeUnreserved(key) + "=");
-    } else if (value === "") {
-      result.push("");
-    }
-  }
-  return result;
-}
-function parseUrl(template) {
-  return {
-    expand: expand.bind(null, template)
-  };
-}
-function expand(template, context) {
-  var operators = ["+", "#", ".", "/", ";", "?", "&"];
-  template = template.replace(
-    /\{([^\{\}]+)\}|([^\{\}]+)/g,
-    function(_, expression, literal) {
-      if (expression) {
-        let operator = "";
-        const values = [];
-        if (operators.indexOf(expression.charAt(0)) !== -1) {
-          operator = expression.charAt(0);
-          expression = expression.substr(1);
-        }
-        expression.split(/,/g).forEach(function(variable) {
-          var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
-          values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
-        });
-        if (operator && operator !== "+") {
-          var separator = ",";
-          if (operator === "?") {
-            separator = "&";
-          } else if (operator !== "#") {
-            separator = operator;
-          }
-          return (values.length !== 0 ? operator : "") + values.join(separator);
-        } else {
-          return values.join(",");
-        }
-      } else {
-        return encodeReserved(literal);
-      }
-    }
-  );
-  if (template === "/") {
-    return template;
-  } else {
-    return template.replace(/\/$/, "");
-  }
-}
-export {
-  parseUrl
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/version.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/version.js
deleted file mode 100644
index f3dacfa..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/version.js
+++ /dev/null
@@ -1,4 +0,0 @@
-const VERSION = "9.0.4";
-export {
-  VERSION
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/with-defaults.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/with-defaults.js
deleted file mode 100644
index 6d508f0..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-src/with-defaults.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import { endpointWithDefaults } from "./endpoint-with-defaults";
-import { merge } from "./merge";
-import { parse } from "./parse";
-function withDefaults(oldDefaults, newDefaults) {
-  const DEFAULTS = merge(oldDefaults, newDefaults);
-  const endpoint = endpointWithDefaults.bind(null, DEFAULTS);
-  return Object.assign(endpoint, {
-    DEFAULTS,
-    defaults: withDefaults.bind(null, DEFAULTS),
-    merge: merge.bind(null, DEFAULTS),
-    parse
-  });
-}
-export {
-  withDefaults
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/defaults.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/defaults.d.ts
deleted file mode 100644
index d65e889..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/defaults.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import type { EndpointDefaults } from "@octokit/types";
-export declare const DEFAULTS: EndpointDefaults;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts
deleted file mode 100644
index c36732e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import type { EndpointOptions, RequestParameters, Route } from "@octokit/types";
-import { DEFAULTS } from "./defaults";
-export declare function endpointWithDefaults(defaults: typeof DEFAULTS, route: Route | EndpointOptions, options?: RequestParameters): import("@octokit/types").RequestOptions;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/index.d.ts
deleted file mode 100644
index 1ede136..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare const endpoint: import("@octokit/types").EndpointInterface<object>;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/merge.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/merge.d.ts
deleted file mode 100644
index f583981..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/merge.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import type { EndpointDefaults, RequestParameters, Route } from "@octokit/types";
-export declare function merge(defaults: EndpointDefaults | null, route?: Route | RequestParameters, options?: RequestParameters): EndpointDefaults;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/parse.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/parse.d.ts
deleted file mode 100644
index 5d0927a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/parse.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import type { EndpointDefaults, RequestOptions } from "@octokit/types";
-export declare function parse(options: EndpointDefaults): RequestOptions;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts
deleted file mode 100644
index 4b192ac..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export declare function addQueryParameters(url: string, parameters: {
-    [x: string]: string | undefined;
-    q?: string;
-}): string;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts
deleted file mode 100644
index 93586d4..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare function extractUrlVariableNames(url: string): string[];
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts
deleted file mode 100644
index 004fa4b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare function isPlainObject(value: unknown): value is Object;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts
deleted file mode 100644
index 1daf307..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export declare function lowercaseKeys(object?: {
-    [key: string]: any;
-}): {
-    [key: string]: any;
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts
deleted file mode 100644
index 914411c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare function mergeDeep(defaults: any, options: any): object;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts
deleted file mode 100644
index 06927d6..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export declare function omit(object: {
-    [key: string]: any;
-}, keysToOmit: string[]): {
-    [key: string]: any;
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts
deleted file mode 100644
index 92d8d85..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare function removeUndefinedProperties(obj: any): any;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts
deleted file mode 100644
index 5d967ca..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export declare function parseUrl(template: string): {
-    expand: (context: object) => string;
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/version.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/version.d.ts
deleted file mode 100644
index 6fe73ae..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/version.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare const VERSION = "9.0.4";
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts
deleted file mode 100644
index e09354c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import type { EndpointInterface, RequestParameters, EndpointDefaults } from "@octokit/types";
-export declare function withDefaults(oldDefaults: EndpointDefaults | null, newDefaults: RequestParameters): EndpointInterface;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-web/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-web/index.js
deleted file mode 100644
index 3ef99a5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-web/index.js
+++ /dev/null
@@ -1,351 +0,0 @@
-// pkg/dist-src/defaults.js
-import { getUserAgent } from "universal-user-agent";
-
-// pkg/dist-src/version.js
-var VERSION = "9.0.4";
-
-// pkg/dist-src/defaults.js
-var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
-var DEFAULTS = {
-  method: "GET",
-  baseUrl: "https://api.github.com",
-  headers: {
-    accept: "application/vnd.github.v3+json",
-    "user-agent": userAgent
-  },
-  mediaType: {
-    format: ""
-  }
-};
-
-// pkg/dist-src/util/lowercase-keys.js
-function lowercaseKeys(object) {
-  if (!object) {
-    return {};
-  }
-  return Object.keys(object).reduce((newObj, key) => {
-    newObj[key.toLowerCase()] = object[key];
-    return newObj;
-  }, {});
-}
-
-// pkg/dist-src/util/is-plain-object.js
-function isPlainObject(value) {
-  if (typeof value !== "object" || value === null)
-    return false;
-  if (Object.prototype.toString.call(value) !== "[object Object]")
-    return false;
-  const proto = Object.getPrototypeOf(value);
-  if (proto === null)
-    return true;
-  const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
-  return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
-}
-
-// pkg/dist-src/util/merge-deep.js
-function mergeDeep(defaults, options) {
-  const result = Object.assign({}, defaults);
-  Object.keys(options).forEach((key) => {
-    if (isPlainObject(options[key])) {
-      if (!(key in defaults))
-        Object.assign(result, { [key]: options[key] });
-      else
-        result[key] = mergeDeep(defaults[key], options[key]);
-    } else {
-      Object.assign(result, { [key]: options[key] });
-    }
-  });
-  return result;
-}
-
-// pkg/dist-src/util/remove-undefined-properties.js
-function removeUndefinedProperties(obj) {
-  for (const key in obj) {
-    if (obj[key] === void 0) {
-      delete obj[key];
-    }
-  }
-  return obj;
-}
-
-// pkg/dist-src/merge.js
-function merge(defaults, route, options) {
-  if (typeof route === "string") {
-    let [method, url] = route.split(" ");
-    options = Object.assign(url ? { method, url } : { url: method }, options);
-  } else {
-    options = Object.assign({}, route);
-  }
-  options.headers = lowercaseKeys(options.headers);
-  removeUndefinedProperties(options);
-  removeUndefinedProperties(options.headers);
-  const mergedOptions = mergeDeep(defaults || {}, options);
-  if (options.url === "/graphql") {
-    if (defaults && defaults.mediaType.previews?.length) {
-      mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(
-        (preview) => !mergedOptions.mediaType.previews.includes(preview)
-      ).concat(mergedOptions.mediaType.previews);
-    }
-    mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, ""));
-  }
-  return mergedOptions;
-}
-
-// pkg/dist-src/util/add-query-parameters.js
-function addQueryParameters(url, parameters) {
-  const separator = /\?/.test(url) ? "&" : "?";
-  const names = Object.keys(parameters);
-  if (names.length === 0) {
-    return url;
-  }
-  return url + separator + names.map((name) => {
-    if (name === "q") {
-      return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
-    }
-    return `${name}=${encodeURIComponent(parameters[name])}`;
-  }).join("&");
-}
-
-// pkg/dist-src/util/extract-url-variable-names.js
-var urlVariableRegex = /\{[^}]+\}/g;
-function removeNonChars(variableName) {
-  return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
-}
-function extractUrlVariableNames(url) {
-  const matches = url.match(urlVariableRegex);
-  if (!matches) {
-    return [];
-  }
-  return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
-}
-
-// pkg/dist-src/util/omit.js
-function omit(object, keysToOmit) {
-  const result = { __proto__: null };
-  for (const key of Object.keys(object)) {
-    if (keysToOmit.indexOf(key) === -1) {
-      result[key] = object[key];
-    }
-  }
-  return result;
-}
-
-// pkg/dist-src/util/url-template.js
-function encodeReserved(str) {
-  return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {
-    if (!/%[0-9A-Fa-f]/.test(part)) {
-      part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
-    }
-    return part;
-  }).join("");
-}
-function encodeUnreserved(str) {
-  return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
-    return "%" + c.charCodeAt(0).toString(16).toUpperCase();
-  });
-}
-function encodeValue(operator, value, key) {
-  value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
-  if (key) {
-    return encodeUnreserved(key) + "=" + value;
-  } else {
-    return value;
-  }
-}
-function isDefined(value) {
-  return value !== void 0 && value !== null;
-}
-function isKeyOperator(operator) {
-  return operator === ";" || operator === "&" || operator === "?";
-}
-function getValues(context, operator, key, modifier) {
-  var value = context[key], result = [];
-  if (isDefined(value) && value !== "") {
-    if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
-      value = value.toString();
-      if (modifier && modifier !== "*") {
-        value = value.substring(0, parseInt(modifier, 10));
-      }
-      result.push(
-        encodeValue(operator, value, isKeyOperator(operator) ? key : "")
-      );
-    } else {
-      if (modifier === "*") {
-        if (Array.isArray(value)) {
-          value.filter(isDefined).forEach(function(value2) {
-            result.push(
-              encodeValue(operator, value2, isKeyOperator(operator) ? key : "")
-            );
-          });
-        } else {
-          Object.keys(value).forEach(function(k) {
-            if (isDefined(value[k])) {
-              result.push(encodeValue(operator, value[k], k));
-            }
-          });
-        }
-      } else {
-        const tmp = [];
-        if (Array.isArray(value)) {
-          value.filter(isDefined).forEach(function(value2) {
-            tmp.push(encodeValue(operator, value2));
-          });
-        } else {
-          Object.keys(value).forEach(function(k) {
-            if (isDefined(value[k])) {
-              tmp.push(encodeUnreserved(k));
-              tmp.push(encodeValue(operator, value[k].toString()));
-            }
-          });
-        }
-        if (isKeyOperator(operator)) {
-          result.push(encodeUnreserved(key) + "=" + tmp.join(","));
-        } else if (tmp.length !== 0) {
-          result.push(tmp.join(","));
-        }
-      }
-    }
-  } else {
-    if (operator === ";") {
-      if (isDefined(value)) {
-        result.push(encodeUnreserved(key));
-      }
-    } else if (value === "" && (operator === "&" || operator === "?")) {
-      result.push(encodeUnreserved(key) + "=");
-    } else if (value === "") {
-      result.push("");
-    }
-  }
-  return result;
-}
-function parseUrl(template) {
-  return {
-    expand: expand.bind(null, template)
-  };
-}
-function expand(template, context) {
-  var operators = ["+", "#", ".", "/", ";", "?", "&"];
-  template = template.replace(
-    /\{([^\{\}]+)\}|([^\{\}]+)/g,
-    function(_, expression, literal) {
-      if (expression) {
-        let operator = "";
-        const values = [];
-        if (operators.indexOf(expression.charAt(0)) !== -1) {
-          operator = expression.charAt(0);
-          expression = expression.substr(1);
-        }
-        expression.split(/,/g).forEach(function(variable) {
-          var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
-          values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
-        });
-        if (operator && operator !== "+") {
-          var separator = ",";
-          if (operator === "?") {
-            separator = "&";
-          } else if (operator !== "#") {
-            separator = operator;
-          }
-          return (values.length !== 0 ? operator : "") + values.join(separator);
-        } else {
-          return values.join(",");
-        }
-      } else {
-        return encodeReserved(literal);
-      }
-    }
-  );
-  if (template === "/") {
-    return template;
-  } else {
-    return template.replace(/\/$/, "");
-  }
-}
-
-// pkg/dist-src/parse.js
-function parse(options) {
-  let method = options.method.toUpperCase();
-  let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
-  let headers = Object.assign({}, options.headers);
-  let body;
-  let parameters = omit(options, [
-    "method",
-    "baseUrl",
-    "url",
-    "headers",
-    "request",
-    "mediaType"
-  ]);
-  const urlVariableNames = extractUrlVariableNames(url);
-  url = parseUrl(url).expand(parameters);
-  if (!/^http/.test(url)) {
-    url = options.baseUrl + url;
-  }
-  const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl");
-  const remainingParameters = omit(parameters, omittedParameters);
-  const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
-  if (!isBinaryRequest) {
-    if (options.mediaType.format) {
-      headers.accept = headers.accept.split(/,/).map(
-        (format) => format.replace(
-          /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,
-          `application/vnd$1$2.${options.mediaType.format}`
-        )
-      ).join(",");
-    }
-    if (url.endsWith("/graphql")) {
-      if (options.mediaType.previews?.length) {
-        const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
-        headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {
-          const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
-          return `application/vnd.github.${preview}-preview${format}`;
-        }).join(",");
-      }
-    }
-  }
-  if (["GET", "HEAD"].includes(method)) {
-    url = addQueryParameters(url, remainingParameters);
-  } else {
-    if ("data" in remainingParameters) {
-      body = remainingParameters.data;
-    } else {
-      if (Object.keys(remainingParameters).length) {
-        body = remainingParameters;
-      }
-    }
-  }
-  if (!headers["content-type"] && typeof body !== "undefined") {
-    headers["content-type"] = "application/json; charset=utf-8";
-  }
-  if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
-    body = "";
-  }
-  return Object.assign(
-    { method, url, headers },
-    typeof body !== "undefined" ? { body } : null,
-    options.request ? { request: options.request } : null
-  );
-}
-
-// pkg/dist-src/endpoint-with-defaults.js
-function endpointWithDefaults(defaults, route, options) {
-  return parse(merge(defaults, route, options));
-}
-
-// pkg/dist-src/with-defaults.js
-function withDefaults(oldDefaults, newDefaults) {
-  const DEFAULTS2 = merge(oldDefaults, newDefaults);
-  const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);
-  return Object.assign(endpoint2, {
-    DEFAULTS: DEFAULTS2,
-    defaults: withDefaults.bind(null, DEFAULTS2),
-    merge: merge.bind(null, DEFAULTS2),
-    parse
-  });
-}
-
-// pkg/dist-src/index.js
-var endpoint = withDefaults(null, DEFAULTS);
-export {
-  endpoint
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-web/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-web/index.js.map
deleted file mode 100644
index 95eb255..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/dist-web/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/defaults.js", "../dist-src/version.js", "../dist-src/util/lowercase-keys.js", "../dist-src/util/is-plain-object.js", "../dist-src/util/merge-deep.js", "../dist-src/util/remove-undefined-properties.js", "../dist-src/merge.js", "../dist-src/util/add-query-parameters.js", "../dist-src/util/extract-url-variable-names.js", "../dist-src/util/omit.js", "../dist-src/util/url-template.js", "../dist-src/parse.js", "../dist-src/endpoint-with-defaults.js", "../dist-src/with-defaults.js", "../dist-src/index.js"],
-  "sourcesContent": ["import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nconst userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\nconst DEFAULTS = {\n  method: \"GET\",\n  baseUrl: \"https://api.github.com\",\n  headers: {\n    accept: \"application/vnd.github.v3+json\",\n    \"user-agent\": userAgent\n  },\n  mediaType: {\n    format: \"\"\n  }\n};\nexport {\n  DEFAULTS\n};\n", "const VERSION = \"9.0.4\";\nexport {\n  VERSION\n};\n", "function lowercaseKeys(object) {\n  if (!object) {\n    return {};\n  }\n  return Object.keys(object).reduce((newObj, key) => {\n    newObj[key.toLowerCase()] = object[key];\n    return newObj;\n  }, {});\n}\nexport {\n  lowercaseKeys\n};\n", "function isPlainObject(value) {\n  if (typeof value !== \"object\" || value === null)\n    return false;\n  if (Object.prototype.toString.call(value) !== \"[object Object]\")\n    return false;\n  const proto = Object.getPrototypeOf(value);\n  if (proto === null)\n    return true;\n  const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n  return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\nexport {\n  isPlainObject\n};\n", "import { isPlainObject } from \"./is-plain-object\";\nfunction mergeDeep(defaults, options) {\n  const result = Object.assign({}, defaults);\n  Object.keys(options).forEach((key) => {\n    if (isPlainObject(options[key])) {\n      if (!(key in defaults))\n        Object.assign(result, { [key]: options[key] });\n      else\n        result[key] = mergeDeep(defaults[key], options[key]);\n    } else {\n      Object.assign(result, { [key]: options[key] });\n    }\n  });\n  return result;\n}\nexport {\n  mergeDeep\n};\n", "function removeUndefinedProperties(obj) {\n  for (const key in obj) {\n    if (obj[key] === void 0) {\n      delete obj[key];\n    }\n  }\n  return obj;\n}\nexport {\n  removeUndefinedProperties\n};\n", "import { lowercaseKeys } from \"./util/lowercase-keys\";\nimport { mergeDeep } from \"./util/merge-deep\";\nimport { removeUndefinedProperties } from \"./util/remove-undefined-properties\";\nfunction merge(defaults, route, options) {\n  if (typeof route === \"string\") {\n    let [method, url] = route.split(\" \");\n    options = Object.assign(url ? { method, url } : { url: method }, options);\n  } else {\n    options = Object.assign({}, route);\n  }\n  options.headers = lowercaseKeys(options.headers);\n  removeUndefinedProperties(options);\n  removeUndefinedProperties(options.headers);\n  const mergedOptions = mergeDeep(defaults || {}, options);\n  if (options.url === \"/graphql\") {\n    if (defaults && defaults.mediaType.previews?.length) {\n      mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n        (preview) => !mergedOptions.mediaType.previews.includes(preview)\n      ).concat(mergedOptions.mediaType.previews);\n    }\n    mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n  }\n  return mergedOptions;\n}\nexport {\n  merge\n};\n", "function addQueryParameters(url, parameters) {\n  const separator = /\\?/.test(url) ? \"&\" : \"?\";\n  const names = Object.keys(parameters);\n  if (names.length === 0) {\n    return url;\n  }\n  return url + separator + names.map((name) => {\n    if (name === \"q\") {\n      return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n    }\n    return `${name}=${encodeURIComponent(parameters[name])}`;\n  }).join(\"&\");\n}\nexport {\n  addQueryParameters\n};\n", "const urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n  return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nfunction extractUrlVariableNames(url) {\n  const matches = url.match(urlVariableRegex);\n  if (!matches) {\n    return [];\n  }\n  return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\nexport {\n  extractUrlVariableNames\n};\n", "function omit(object, keysToOmit) {\n  const result = { __proto__: null };\n  for (const key of Object.keys(object)) {\n    if (keysToOmit.indexOf(key) === -1) {\n      result[key] = object[key];\n    }\n  }\n  return result;\n}\nexport {\n  omit\n};\n", "function encodeReserved(str) {\n  return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n    if (!/%[0-9A-Fa-f]/.test(part)) {\n      part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n    }\n    return part;\n  }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n  return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n    return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n  });\n}\nfunction encodeValue(operator, value, key) {\n  value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n  if (key) {\n    return encodeUnreserved(key) + \"=\" + value;\n  } else {\n    return value;\n  }\n}\nfunction isDefined(value) {\n  return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n  return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n  var value = context[key], result = [];\n  if (isDefined(value) && value !== \"\") {\n    if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n      value = value.toString();\n      if (modifier && modifier !== \"*\") {\n        value = value.substring(0, parseInt(modifier, 10));\n      }\n      result.push(\n        encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n      );\n    } else {\n      if (modifier === \"*\") {\n        if (Array.isArray(value)) {\n          value.filter(isDefined).forEach(function(value2) {\n            result.push(\n              encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n            );\n          });\n        } else {\n          Object.keys(value).forEach(function(k) {\n            if (isDefined(value[k])) {\n              result.push(encodeValue(operator, value[k], k));\n            }\n          });\n        }\n      } else {\n        const tmp = [];\n        if (Array.isArray(value)) {\n          value.filter(isDefined).forEach(function(value2) {\n            tmp.push(encodeValue(operator, value2));\n          });\n        } else {\n          Object.keys(value).forEach(function(k) {\n            if (isDefined(value[k])) {\n              tmp.push(encodeUnreserved(k));\n              tmp.push(encodeValue(operator, value[k].toString()));\n            }\n          });\n        }\n        if (isKeyOperator(operator)) {\n          result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n        } else if (tmp.length !== 0) {\n          result.push(tmp.join(\",\"));\n        }\n      }\n    }\n  } else {\n    if (operator === \";\") {\n      if (isDefined(value)) {\n        result.push(encodeUnreserved(key));\n      }\n    } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n      result.push(encodeUnreserved(key) + \"=\");\n    } else if (value === \"\") {\n      result.push(\"\");\n    }\n  }\n  return result;\n}\nfunction parseUrl(template) {\n  return {\n    expand: expand.bind(null, template)\n  };\n}\nfunction expand(template, context) {\n  var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n  template = template.replace(\n    /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n    function(_, expression, literal) {\n      if (expression) {\n        let operator = \"\";\n        const values = [];\n        if (operators.indexOf(expression.charAt(0)) !== -1) {\n          operator = expression.charAt(0);\n          expression = expression.substr(1);\n        }\n        expression.split(/,/g).forEach(function(variable) {\n          var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n          values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n        });\n        if (operator && operator !== \"+\") {\n          var separator = \",\";\n          if (operator === \"?\") {\n            separator = \"&\";\n          } else if (operator !== \"#\") {\n            separator = operator;\n          }\n          return (values.length !== 0 ? operator : \"\") + values.join(separator);\n        } else {\n          return values.join(\",\");\n        }\n      } else {\n        return encodeReserved(literal);\n      }\n    }\n  );\n  if (template === \"/\") {\n    return template;\n  } else {\n    return template.replace(/\\/$/, \"\");\n  }\n}\nexport {\n  parseUrl\n};\n", "import { addQueryParameters } from \"./util/add-query-parameters\";\nimport { extractUrlVariableNames } from \"./util/extract-url-variable-names\";\nimport { omit } from \"./util/omit\";\nimport { parseUrl } from \"./util/url-template\";\nfunction parse(options) {\n  let method = options.method.toUpperCase();\n  let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n  let headers = Object.assign({}, options.headers);\n  let body;\n  let parameters = omit(options, [\n    \"method\",\n    \"baseUrl\",\n    \"url\",\n    \"headers\",\n    \"request\",\n    \"mediaType\"\n  ]);\n  const urlVariableNames = extractUrlVariableNames(url);\n  url = parseUrl(url).expand(parameters);\n  if (!/^http/.test(url)) {\n    url = options.baseUrl + url;\n  }\n  const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n  const remainingParameters = omit(parameters, omittedParameters);\n  const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n  if (!isBinaryRequest) {\n    if (options.mediaType.format) {\n      headers.accept = headers.accept.split(/,/).map(\n        (format) => format.replace(\n          /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n          `application/vnd$1$2.${options.mediaType.format}`\n        )\n      ).join(\",\");\n    }\n    if (url.endsWith(\"/graphql\")) {\n      if (options.mediaType.previews?.length) {\n        const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n        headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {\n          const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n          return `application/vnd.github.${preview}-preview${format}`;\n        }).join(\",\");\n      }\n    }\n  }\n  if ([\"GET\", \"HEAD\"].includes(method)) {\n    url = addQueryParameters(url, remainingParameters);\n  } else {\n    if (\"data\" in remainingParameters) {\n      body = remainingParameters.data;\n    } else {\n      if (Object.keys(remainingParameters).length) {\n        body = remainingParameters;\n      }\n    }\n  }\n  if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n    headers[\"content-type\"] = \"application/json; charset=utf-8\";\n  }\n  if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n    body = \"\";\n  }\n  return Object.assign(\n    { method, url, headers },\n    typeof body !== \"undefined\" ? { body } : null,\n    options.request ? { request: options.request } : null\n  );\n}\nexport {\n  parse\n};\n", "import { DEFAULTS } from \"./defaults\";\nimport { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nfunction endpointWithDefaults(defaults, route, options) {\n  return parse(merge(defaults, route, options));\n}\nexport {\n  endpointWithDefaults\n};\n", "import { endpointWithDefaults } from \"./endpoint-with-defaults\";\nimport { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nfunction withDefaults(oldDefaults, newDefaults) {\n  const DEFAULTS = merge(oldDefaults, newDefaults);\n  const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n  return Object.assign(endpoint, {\n    DEFAULTS,\n    defaults: withDefaults.bind(null, DEFAULTS),\n    merge: merge.bind(null, DEFAULTS),\n    parse\n  });\n}\nexport {\n  withDefaults\n};\n", "import { withDefaults } from \"./with-defaults\";\nimport { DEFAULTS } from \"./defaults\";\nconst endpoint = withDefaults(null, DEFAULTS);\nexport {\n  endpoint\n};\n"],
-  "mappings": ";AAAA,SAAS,oBAAoB;;;ACA7B,IAAM,UAAU;;;ADEhB,IAAM,YAAY,uBAAuB,OAAO,IAAI,aAAa,CAAC;AAClE,IAAM,WAAW;AAAA,EACf,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACT,QAAQ;AAAA,EACV;AACF;;;AEbA,SAAS,cAAc,QAAQ;AAC7B,MAAI,CAAC,QAAQ;AACX,WAAO,CAAC;AAAA,EACV;AACA,SAAO,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,QAAQ,QAAQ;AACjD,WAAO,IAAI,YAAY,CAAC,IAAI,OAAO,GAAG;AACtC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP;;;ACRA,SAAS,cAAc,OAAO;AAC5B,MAAI,OAAO,UAAU,YAAY,UAAU;AACzC,WAAO;AACT,MAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAC5C,WAAO;AACT,QAAM,QAAQ,OAAO,eAAe,KAAK;AACzC,MAAI,UAAU;AACZ,WAAO;AACT,QAAM,OAAO,OAAO,UAAU,eAAe,KAAK,OAAO,aAAa,KAAK,MAAM;AACjF,SAAO,OAAO,SAAS,cAAc,gBAAgB,QAAQ,SAAS,UAAU,KAAK,IAAI,MAAM,SAAS,UAAU,KAAK,KAAK;AAC9H;;;ACTA,SAAS,UAAU,UAAU,SAAS;AACpC,QAAM,SAAS,OAAO,OAAO,CAAC,GAAG,QAAQ;AACzC,SAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAQ;AACpC,QAAI,cAAc,QAAQ,GAAG,CAAC,GAAG;AAC/B,UAAI,EAAE,OAAO;AACX,eAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC;AAAA;AAE7C,eAAO,GAAG,IAAI,UAAU,SAAS,GAAG,GAAG,QAAQ,GAAG,CAAC;AAAA,IACvD,OAAO;AACL,aAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC;AAAA,IAC/C;AAAA,EACF,CAAC;AACD,SAAO;AACT;;;ACdA,SAAS,0BAA0B,KAAK;AACtC,aAAW,OAAO,KAAK;AACrB,QAAI,IAAI,GAAG,MAAM,QAAQ;AACvB,aAAO,IAAI,GAAG;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;;;ACJA,SAAS,MAAM,UAAU,OAAO,SAAS;AACvC,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,MAAM,GAAG;AACnC,cAAU,OAAO,OAAO,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,KAAK,OAAO,GAAG,OAAO;AAAA,EAC1E,OAAO;AACL,cAAU,OAAO,OAAO,CAAC,GAAG,KAAK;AAAA,EACnC;AACA,UAAQ,UAAU,cAAc,QAAQ,OAAO;AAC/C,4BAA0B,OAAO;AACjC,4BAA0B,QAAQ,OAAO;AACzC,QAAM,gBAAgB,UAAU,YAAY,CAAC,GAAG,OAAO;AACvD,MAAI,QAAQ,QAAQ,YAAY;AAC9B,QAAI,YAAY,SAAS,UAAU,UAAU,QAAQ;AACnD,oBAAc,UAAU,WAAW,SAAS,UAAU,SAAS;AAAA,QAC7D,CAAC,YAAY,CAAC,cAAc,UAAU,SAAS,SAAS,OAAO;AAAA,MACjE,EAAE,OAAO,cAAc,UAAU,QAAQ;AAAA,IAC3C;AACA,kBAAc,UAAU,YAAY,cAAc,UAAU,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,QAAQ,QAAQ,YAAY,EAAE,CAAC;AAAA,EAC9H;AACA,SAAO;AACT;;;ACvBA,SAAS,mBAAmB,KAAK,YAAY;AAC3C,QAAM,YAAY,KAAK,KAAK,GAAG,IAAI,MAAM;AACzC,QAAM,QAAQ,OAAO,KAAK,UAAU;AACpC,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AACA,SAAO,MAAM,YAAY,MAAM,IAAI,CAAC,SAAS;AAC3C,QAAI,SAAS,KAAK;AAChB,aAAO,OAAO,WAAW,EAAE,MAAM,GAAG,EAAE,IAAI,kBAAkB,EAAE,KAAK,GAAG;AAAA,IACxE;AACA,WAAO,GAAG,IAAI,IAAI,mBAAmB,WAAW,IAAI,CAAC,CAAC;AAAA,EACxD,CAAC,EAAE,KAAK,GAAG;AACb;;;ACZA,IAAM,mBAAmB;AACzB,SAAS,eAAe,cAAc;AACpC,SAAO,aAAa,QAAQ,cAAc,EAAE,EAAE,MAAM,GAAG;AACzD;AACA,SAAS,wBAAwB,KAAK;AACpC,QAAM,UAAU,IAAI,MAAM,gBAAgB;AAC1C,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC;AAAA,EACV;AACA,SAAO,QAAQ,IAAI,cAAc,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACrE;;;ACVA,SAAS,KAAK,QAAQ,YAAY;AAChC,QAAM,SAAS,EAAE,WAAW,KAAK;AACjC,aAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACrC,QAAI,WAAW,QAAQ,GAAG,MAAM,IAAI;AAClC,aAAO,GAAG,IAAI,OAAO,GAAG;AAAA,IAC1B;AAAA,EACF;AACA,SAAO;AACT;;;ACRA,SAAS,eAAe,KAAK;AAC3B,SAAO,IAAI,MAAM,oBAAoB,EAAE,IAAI,SAAS,MAAM;AACxD,QAAI,CAAC,eAAe,KAAK,IAAI,GAAG;AAC9B,aAAO,UAAU,IAAI,EAAE,QAAQ,QAAQ,GAAG,EAAE,QAAQ,QAAQ,GAAG;AAAA,IACjE;AACA,WAAO;AAAA,EACT,CAAC,EAAE,KAAK,EAAE;AACZ;AACA,SAAS,iBAAiB,KAAK;AAC7B,SAAO,mBAAmB,GAAG,EAAE,QAAQ,YAAY,SAAS,GAAG;AAC7D,WAAO,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY;AAAA,EACxD,CAAC;AACH;AACA,SAAS,YAAY,UAAU,OAAO,KAAK;AACzC,UAAQ,aAAa,OAAO,aAAa,MAAM,eAAe,KAAK,IAAI,iBAAiB,KAAK;AAC7F,MAAI,KAAK;AACP,WAAO,iBAAiB,GAAG,IAAI,MAAM;AAAA,EACvC,OAAO;AACL,WAAO;AAAA,EACT;AACF;AACA,SAAS,UAAU,OAAO;AACxB,SAAO,UAAU,UAAU,UAAU;AACvC;AACA,SAAS,cAAc,UAAU;AAC/B,SAAO,aAAa,OAAO,aAAa,OAAO,aAAa;AAC9D;AACA,SAAS,UAAU,SAAS,UAAU,KAAK,UAAU;AACnD,MAAI,QAAQ,QAAQ,GAAG,GAAG,SAAS,CAAC;AACpC,MAAI,UAAU,KAAK,KAAK,UAAU,IAAI;AACpC,QAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AACxF,cAAQ,MAAM,SAAS;AACvB,UAAI,YAAY,aAAa,KAAK;AAChC,gBAAQ,MAAM,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC;AAAA,MACnD;AACA,aAAO;AAAA,QACL,YAAY,UAAU,OAAO,cAAc,QAAQ,IAAI,MAAM,EAAE;AAAA,MACjE;AAAA,IACF,OAAO;AACL,UAAI,aAAa,KAAK;AACpB,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAM,OAAO,SAAS,EAAE,QAAQ,SAAS,QAAQ;AAC/C,mBAAO;AAAA,cACL,YAAY,UAAU,QAAQ,cAAc,QAAQ,IAAI,MAAM,EAAE;AAAA,YAClE;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,KAAK,KAAK,EAAE,QAAQ,SAAS,GAAG;AACrC,gBAAI,UAAU,MAAM,CAAC,CAAC,GAAG;AACvB,qBAAO,KAAK,YAAY,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC;AAAA,YAChD;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,cAAM,MAAM,CAAC;AACb,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAM,OAAO,SAAS,EAAE,QAAQ,SAAS,QAAQ;AAC/C,gBAAI,KAAK,YAAY,UAAU,MAAM,CAAC;AAAA,UACxC,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,KAAK,KAAK,EAAE,QAAQ,SAAS,GAAG;AACrC,gBAAI,UAAU,MAAM,CAAC,CAAC,GAAG;AACvB,kBAAI,KAAK,iBAAiB,CAAC,CAAC;AAC5B,kBAAI,KAAK,YAAY,UAAU,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AAAA,YACrD;AAAA,UACF,CAAC;AAAA,QACH;AACA,YAAI,cAAc,QAAQ,GAAG;AAC3B,iBAAO,KAAK,iBAAiB,GAAG,IAAI,MAAM,IAAI,KAAK,GAAG,CAAC;AAAA,QACzD,WAAW,IAAI,WAAW,GAAG;AAC3B,iBAAO,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,EACF,OAAO;AACL,QAAI,aAAa,KAAK;AACpB,UAAI,UAAU,KAAK,GAAG;AACpB,eAAO,KAAK,iBAAiB,GAAG,CAAC;AAAA,MACnC;AAAA,IACF,WAAW,UAAU,OAAO,aAAa,OAAO,aAAa,MAAM;AACjE,aAAO,KAAK,iBAAiB,GAAG,IAAI,GAAG;AAAA,IACzC,WAAW,UAAU,IAAI;AACvB,aAAO,KAAK,EAAE;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,SAAS,UAAU;AAC1B,SAAO;AAAA,IACL,QAAQ,OAAO,KAAK,MAAM,QAAQ;AAAA,EACpC;AACF;AACA,SAAS,OAAO,UAAU,SAAS;AACjC,MAAI,YAAY,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAClD,aAAW,SAAS;AAAA,IAClB;AAAA,IACA,SAAS,GAAG,YAAY,SAAS;AAC/B,UAAI,YAAY;AACd,YAAI,WAAW;AACf,cAAM,SAAS,CAAC;AAChB,YAAI,UAAU,QAAQ,WAAW,OAAO,CAAC,CAAC,MAAM,IAAI;AAClD,qBAAW,WAAW,OAAO,CAAC;AAC9B,uBAAa,WAAW,OAAO,CAAC;AAAA,QAClC;AACA,mBAAW,MAAM,IAAI,EAAE,QAAQ,SAAS,UAAU;AAChD,cAAI,MAAM,4BAA4B,KAAK,QAAQ;AACnD,iBAAO,KAAK,UAAU,SAAS,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AAAA,QACpE,CAAC;AACD,YAAI,YAAY,aAAa,KAAK;AAChC,cAAI,YAAY;AAChB,cAAI,aAAa,KAAK;AACpB,wBAAY;AAAA,UACd,WAAW,aAAa,KAAK;AAC3B,wBAAY;AAAA,UACd;AACA,kBAAQ,OAAO,WAAW,IAAI,WAAW,MAAM,OAAO,KAAK,SAAS;AAAA,QACtE,OAAO;AACL,iBAAO,OAAO,KAAK,GAAG;AAAA,QACxB;AAAA,MACF,OAAO;AACL,eAAO,eAAe,OAAO;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AACA,MAAI,aAAa,KAAK;AACpB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,SAAS,QAAQ,OAAO,EAAE;AAAA,EACnC;AACF;;;AC7HA,SAAS,MAAM,SAAS;AACtB,MAAI,SAAS,QAAQ,OAAO,YAAY;AACxC,MAAI,OAAO,QAAQ,OAAO,KAAK,QAAQ,gBAAgB,MAAM;AAC7D,MAAI,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO;AAC/C,MAAI;AACJ,MAAI,aAAa,KAAK,SAAS;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,mBAAmB,wBAAwB,GAAG;AACpD,QAAM,SAAS,GAAG,EAAE,OAAO,UAAU;AACrC,MAAI,CAAC,QAAQ,KAAK,GAAG,GAAG;AACtB,UAAM,QAAQ,UAAU;AAAA,EAC1B;AACA,QAAM,oBAAoB,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,WAAW,iBAAiB,SAAS,MAAM,CAAC,EAAE,OAAO,SAAS;AACrH,QAAM,sBAAsB,KAAK,YAAY,iBAAiB;AAC9D,QAAM,kBAAkB,6BAA6B,KAAK,QAAQ,MAAM;AACxE,MAAI,CAAC,iBAAiB;AACpB,QAAI,QAAQ,UAAU,QAAQ;AAC5B,cAAQ,SAAS,QAAQ,OAAO,MAAM,GAAG,EAAE;AAAA,QACzC,CAAC,WAAW,OAAO;AAAA,UACjB;AAAA,UACA,uBAAuB,QAAQ,UAAU,MAAM;AAAA,QACjD;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AACA,QAAI,IAAI,SAAS,UAAU,GAAG;AAC5B,UAAI,QAAQ,UAAU,UAAU,QAAQ;AACtC,cAAM,2BAA2B,QAAQ,OAAO,MAAM,qBAAqB,KAAK,CAAC;AACjF,gBAAQ,SAAS,yBAAyB,OAAO,QAAQ,UAAU,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC5F,gBAAM,SAAS,QAAQ,UAAU,SAAS,IAAI,QAAQ,UAAU,MAAM,KAAK;AAC3E,iBAAO,0BAA0B,OAAO,WAAW,MAAM;AAAA,QAC3D,CAAC,EAAE,KAAK,GAAG;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,OAAO,MAAM,EAAE,SAAS,MAAM,GAAG;AACpC,UAAM,mBAAmB,KAAK,mBAAmB;AAAA,EACnD,OAAO;AACL,QAAI,UAAU,qBAAqB;AACjC,aAAO,oBAAoB;AAAA,IAC7B,OAAO;AACL,UAAI,OAAO,KAAK,mBAAmB,EAAE,QAAQ;AAC3C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,QAAQ,cAAc,KAAK,OAAO,SAAS,aAAa;AAC3D,YAAQ,cAAc,IAAI;AAAA,EAC5B;AACA,MAAI,CAAC,SAAS,KAAK,EAAE,SAAS,MAAM,KAAK,OAAO,SAAS,aAAa;AACpE,WAAO;AAAA,EACT;AACA,SAAO,OAAO;AAAA,IACZ,EAAE,QAAQ,KAAK,QAAQ;AAAA,IACvB,OAAO,SAAS,cAAc,EAAE,KAAK,IAAI;AAAA,IACzC,QAAQ,UAAU,EAAE,SAAS,QAAQ,QAAQ,IAAI;AAAA,EACnD;AACF;;;AC/DA,SAAS,qBAAqB,UAAU,OAAO,SAAS;AACtD,SAAO,MAAM,MAAM,UAAU,OAAO,OAAO,CAAC;AAC9C;;;ACFA,SAAS,aAAa,aAAa,aAAa;AAC9C,QAAMA,YAAW,MAAM,aAAa,WAAW;AAC/C,QAAMC,YAAW,qBAAqB,KAAK,MAAMD,SAAQ;AACzD,SAAO,OAAO,OAAOC,WAAU;AAAA,IAC7B,UAAAD;AAAA,IACA,UAAU,aAAa,KAAK,MAAMA,SAAQ;AAAA,IAC1C,OAAO,MAAM,KAAK,MAAMA,SAAQ;AAAA,IAChC;AAAA,EACF,CAAC;AACH;;;ACVA,IAAM,WAAW,aAAa,MAAM,QAAQ;",
-  "names": ["DEFAULTS", "endpoint"]
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/package.json b/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/package.json
deleted file mode 100644
index eb192e3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/endpoint/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-  "name": "@octokit/endpoint",
-  "version": "9.0.4",
-  "publishConfig": {
-    "access": "public"
-  },
-  "description": "Turns REST API endpoints into generic request options",
-  "repository": "github:octokit/endpoint.js",
-  "keywords": [
-    "octokit",
-    "github",
-    "api",
-    "rest"
-  ],
-  "author": "Gregor Martynus (https://github.com/gr2m)",
-  "license": "MIT",
-  "devDependencies": {
-    "@octokit/tsconfig": "^2.0.0",
-    "@types/jest": "^29.0.0",
-    "esbuild": "^0.19.0",
-    "glob": "^10.2.7",
-    "jest": "^29.0.0",
-    "prettier": "3.1.0",
-    "semantic-release": "^22.0.0",
-    "semantic-release-plugin-update-version-in-files": "^1.0.0",
-    "ts-jest": "^29.0.0",
-    "typescript": "^5.0.0"
-  },
-  "dependencies": {
-    "@octokit/types": "^12.0.0",
-    "universal-user-agent": "^6.0.0"
-  },
-  "engines": {
-    "node": ">= 18"
-  },
-  "files": [
-    "dist-*/**",
-    "bin/**"
-  ],
-  "main": "dist-node/index.js",
-  "browser": "dist-web/index.js",
-  "types": "dist-types/index.d.ts",
-  "module": "dist-src/index.js",
-  "sideEffects": false
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/LICENSE
deleted file mode 100644
index af5366d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright (c) 2018 Octokit contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/README.md b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/README.md
deleted file mode 100644
index 58b3b10..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/README.md
+++ /dev/null
@@ -1,409 +0,0 @@
-# graphql.js
-
-> GitHub GraphQL API client for browsers and Node
-
-[![@latest](https://img.shields.io/npm/v/@octokit/graphql.svg)](https://www.npmjs.com/package/@octokit/graphql)
-[![Build Status](https://github.com/octokit/graphql.js/workflows/Test/badge.svg)](https://github.com/octokit/graphql.js/actions?query=workflow%3ATest+branch%3Amain)
-
-<!-- toc -->
-
-- [Usage](#usage)
-  - [Send a simple query](#send-a-simple-query)
-  - [Authentication](#authentication)
-  - [Variables](#variables)
-  - [Pass query together with headers and variables](#pass-query-together-with-headers-and-variables)
-  - [Use with GitHub Enterprise](#use-with-github-enterprise)
-  - [Use custom `@octokit/request` instance](#use-custom-octokitrequest-instance)
-- [TypeScript](#typescript)
-  - [Additional Types](#additional-types)
-- [Errors](#errors)
-- [Partial responses](#partial-responses)
-- [Writing tests](#writing-tests)
-- [License](#license)
-
-<!-- tocstop -->
-
-## Usage
-
-<table>
-<tbody valign=top align=left>
-<tr><th>
-Browsers
-</th><td width=100%>
-
-Load `@octokit/graphql` directly from [esm.sh](https://esm.sh)
-
-```html
-<script type="module">
-  import { graphql } from "https://esm.sh/@octokit/graphql";
-</script>
-```
-
-</td></tr>
-<tr><th>
-Node
-</th><td>
-
-Install with <code>npm install @octokit/graphql</code>
-
-```js
-const { graphql } = require("@octokit/graphql");
-// or: import { graphql } from "@octokit/graphql";
-```
-
-</td></tr>
-</tbody>
-</table>
-
-### Send a simple query
-
-```js
-const { repository } = await graphql(
-  `
-    {
-      repository(owner: "octokit", name: "graphql.js") {
-        issues(last: 3) {
-          edges {
-            node {
-              title
-            }
-          }
-        }
-      }
-    }
-  `,
-  {
-    headers: {
-      authorization: `token secret123`,
-    },
-  },
-);
-```
-
-### Authentication
-
-The simplest way to authenticate a request is to set the `Authorization` header, e.g. to a [personal access token](https://github.com/settings/tokens/).
-
-```js
-const graphqlWithAuth = graphql.defaults({
-  headers: {
-    authorization: `token secret123`,
-  },
-});
-const { repository } = await graphqlWithAuth(`
-  {
-    repository(owner: "octokit", name: "graphql.js") {
-      issues(last: 3) {
-        edges {
-          node {
-            title
-          }
-        }
-      }
-    }
-  }
-`);
-```
-
-For more complex authentication strategies such as GitHub Apps or Basic, we recommend the according authentication library exported by [`@octokit/auth`](https://github.com/octokit/auth.js).
-
-```js
-const { createAppAuth } = require("@octokit/auth-app");
-const auth = createAppAuth({
-  appId: process.env.APP_ID,
-  privateKey: process.env.PRIVATE_KEY,
-  installationId: 123,
-});
-const graphqlWithAuth = graphql.defaults({
-  request: {
-    hook: auth.hook,
-  },
-});
-
-const { repository } = await graphqlWithAuth(
-  `{
-    repository(owner: "octokit", name: "graphql.js") {
-      issues(last: 3) {
-        edges {
-          node {
-            title
-          }
-        }
-      }
-    }
-  }`,
-);
-```
-
-### Variables
-
-⚠️ Do not use [template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) in the query strings as they make your code vulnerable to query injection attacks (see [#2](https://github.com/octokit/graphql.js/issues/2)). Use variables instead:
-
-```js
-const { lastIssues } = await graphql(
-  `
-    query lastIssues($owner: String!, $repo: String!, $num: Int = 3) {
-      repository(owner: $owner, name: $repo) {
-        issues(last: $num) {
-          edges {
-            node {
-              title
-            }
-          }
-        }
-      }
-    }
-  `,
-  {
-    owner: "octokit",
-    repo: "graphql.js",
-    headers: {
-      authorization: `token secret123`,
-    },
-  },
-);
-```
-
-### Pass query together with headers and variables
-
-```js
-const { graphql } = require("@octokit/graphql");
-const { lastIssues } = await graphql({
-  query: `query lastIssues($owner: String!, $repo: String!, $num: Int = 3) {
-    repository(owner:$owner, name:$repo) {
-      issues(last:$num) {
-        edges {
-          node {
-            title
-          }
-        }
-      }
-    }
-  }`,
-  owner: "octokit",
-  repo: "graphql.js",
-  headers: {
-    authorization: `token secret123`,
-  },
-});
-```
-
-### Use with GitHub Enterprise
-
-```js
-let { graphql } = require("@octokit/graphql");
-graphql = graphql.defaults({
-  baseUrl: "https://github-enterprise.acme-inc.com/api",
-  headers: {
-    authorization: `token secret123`,
-  },
-});
-const { repository } = await graphql(`
-  {
-    repository(owner: "acme-project", name: "acme-repo") {
-      issues(last: 3) {
-        edges {
-          node {
-            title
-          }
-        }
-      }
-    }
-  }
-`);
-```
-
-### Use custom `@octokit/request` instance
-
-```js
-const { request } = require("@octokit/request");
-const { withCustomRequest } = require("@octokit/graphql");
-
-let requestCounter = 0;
-const myRequest = request.defaults({
-  headers: {
-    authorization: "bearer secret123",
-  },
-  request: {
-    hook(request, options) {
-      requestCounter++;
-      return request(options);
-    },
-  },
-});
-const myGraphql = withCustomRequest(myRequest);
-await request("/");
-await myGraphql(`
-  {
-    repository(owner: "acme-project", name: "acme-repo") {
-      issues(last: 3) {
-        edges {
-          node {
-            title
-          }
-        }
-      }
-    }
-  }
-`);
-// requestCounter is now 2
-```
-
-## TypeScript
-
-`@octokit/graphql` is exposing proper types for its usage with TypeScript projects.
-
-### Additional Types
-
-Additionally, `GraphQlQueryResponseData` has been exposed to users:
-
-```ts
-import type { GraphQlQueryResponseData } from "@octokit/graphql";
-```
-
-## Errors
-
-In case of a GraphQL error, `error.message` is set to a combined message describing all errors returned by the endpoint.
-All errors can be accessed at `error.errors`. `error.request` has the request options such as query, variables and headers set for easier debugging.
-
-```js
-let { graphql, GraphqlResponseError } = require("@octokit/graphql");
-graphql = graphql.defaults({
-  headers: {
-    authorization: `token secret123`,
-  },
-});
-const query = `{
-  viewer {
-    bioHtml
-  }
-}`;
-
-try {
-  const result = await graphql(query);
-} catch (error) {
-  if (error instanceof GraphqlResponseError) {
-    // do something with the error, allowing you to detect a graphql response error,
-    // compared to accidentally catching unrelated errors.
-
-    // server responds with an object like the following (as an example)
-    // class GraphqlResponseError {
-    //  "headers": {
-    //    "status": "403",
-    //  },
-    //  "data": null,
-    //  "errors": [{
-    //   "message": "Field 'bioHtml' doesn't exist on type 'User'",
-    //   "locations": [{
-    //    "line": 3,
-    //    "column": 5
-    //   }]
-    //  }]
-    // }
-
-    console.log("Request failed:", error.request); // { query, variables: {}, headers: { authorization: 'token secret123' } }
-    console.log(error.message); // Field 'bioHtml' doesn't exist on type 'User'
-  } else {
-    // handle non-GraphQL error
-  }
-}
-```
-
-## Partial responses
-
-A GraphQL query may respond with partial data accompanied by errors. In this case we will throw an error but the partial data will still be accessible through `error.data`
-
-```js
-let { graphql } = require("@octokit/graphql");
-graphql = graphql.defaults({
-  headers: {
-    authorization: `token secret123`,
-  },
-});
-const query = `{
-  repository(name: "probot", owner: "probot") {
-    name
-    ref(qualifiedName: "master") {
-      target {
-        ... on Commit {
-          history(first: 25, after: "invalid cursor") {
-            nodes {
-              message
-            }
-          }
-        }
-      }
-    }
-  }
-}`;
-
-try {
-  const result = await graphql(query);
-} catch (error) {
-  // server responds with
-  // {
-  //   "data": {
-  //     "repository": {
-  //       "name": "probot",
-  //       "ref": null
-  //     }
-  //   },
-  //   "errors": [
-  //     {
-  //       "type": "INVALID_CURSOR_ARGUMENTS",
-  //       "path": [
-  //         "repository",
-  //         "ref",
-  //         "target",
-  //         "history"
-  //       ],
-  //       "locations": [
-  //         {
-  //           "line": 7,
-  //           "column": 11
-  //         }
-  //       ],
-  //       "message": "`invalid cursor` does not appear to be a valid cursor."
-  //     }
-  //   ]
-  // }
-
-  console.log("Request failed:", error.request); // { query, variables: {}, headers: { authorization: 'token secret123' } }
-  console.log(error.message); // `invalid cursor` does not appear to be a valid cursor.
-  console.log(error.data); // { repository: { name: 'probot', ref: null } }
-}
-```
-
-## Writing tests
-
-You can pass a replacement for [the built-in fetch implementation](https://github.com/bitinn/node-fetch) as `request.fetch` option. For example, using [fetch-mock](http://www.wheresrhys.co.uk/fetch-mock/) works great to write tests
-
-```js
-const assert = require("assert");
-const fetchMock = require("fetch-mock/es5/server");
-
-const { graphql } = require("@octokit/graphql");
-
-graphql("{ viewer { login } }", {
-  headers: {
-    authorization: "token secret123",
-  },
-  request: {
-    fetch: fetchMock
-      .sandbox()
-      .post("https://api.github.com/graphql", (url, options) => {
-        assert.strictEqual(options.headers.authorization, "token secret123");
-        assert.strictEqual(
-          options.body,
-          '{"query":"{ viewer { login } }"}',
-          "Sends correct query",
-        );
-        return { data: {} };
-      }),
-  },
-});
-```
-
-## License
-
-[MIT](LICENSE)
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-node/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-node/index.js
deleted file mode 100644
index e5b0a4e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-node/index.js
+++ /dev/null
@@ -1,154 +0,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
-  if (from && typeof from === "object" || typeof from === "function") {
-    for (let key of __getOwnPropNames(from))
-      if (!__hasOwnProp.call(to, key) && key !== except)
-        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
-  }
-  return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
-  GraphqlResponseError: () => GraphqlResponseError,
-  graphql: () => graphql2,
-  withCustomRequest: () => withCustomRequest
-});
-module.exports = __toCommonJS(dist_src_exports);
-var import_request3 = require("@octokit/request");
-var import_universal_user_agent = require("universal-user-agent");
-
-// pkg/dist-src/version.js
-var VERSION = "7.0.2";
-
-// pkg/dist-src/with-defaults.js
-var import_request2 = require("@octokit/request");
-
-// pkg/dist-src/graphql.js
-var import_request = require("@octokit/request");
-
-// pkg/dist-src/error.js
-function _buildMessageForResponseErrors(data) {
-  return `Request failed due to following response errors:
-` + data.errors.map((e) => ` - ${e.message}`).join("\n");
-}
-var GraphqlResponseError = class extends Error {
-  constructor(request2, headers, response) {
-    super(_buildMessageForResponseErrors(response));
-    this.request = request2;
-    this.headers = headers;
-    this.response = response;
-    this.name = "GraphqlResponseError";
-    this.errors = response.errors;
-    this.data = response.data;
-    if (Error.captureStackTrace) {
-      Error.captureStackTrace(this, this.constructor);
-    }
-  }
-};
-
-// pkg/dist-src/graphql.js
-var NON_VARIABLE_OPTIONS = [
-  "method",
-  "baseUrl",
-  "url",
-  "headers",
-  "request",
-  "query",
-  "mediaType"
-];
-var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
-var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
-function graphql(request2, query, options) {
-  if (options) {
-    if (typeof query === "string" && "query" in options) {
-      return Promise.reject(
-        new Error(`[@octokit/graphql] "query" cannot be used as variable name`)
-      );
-    }
-    for (const key in options) {
-      if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))
-        continue;
-      return Promise.reject(
-        new Error(
-          `[@octokit/graphql] "${key}" cannot be used as variable name`
-        )
-      );
-    }
-  }
-  const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query;
-  const requestOptions = Object.keys(
-    parsedOptions
-  ).reduce((result, key) => {
-    if (NON_VARIABLE_OPTIONS.includes(key)) {
-      result[key] = parsedOptions[key];
-      return result;
-    }
-    if (!result.variables) {
-      result.variables = {};
-    }
-    result.variables[key] = parsedOptions[key];
-    return result;
-  }, {});
-  const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;
-  if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
-    requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
-  }
-  return request2(requestOptions).then((response) => {
-    if (response.data.errors) {
-      const headers = {};
-      for (const key of Object.keys(response.headers)) {
-        headers[key] = response.headers[key];
-      }
-      throw new GraphqlResponseError(
-        requestOptions,
-        headers,
-        response.data
-      );
-    }
-    return response.data.data;
-  });
-}
-
-// pkg/dist-src/with-defaults.js
-function withDefaults(request2, newDefaults) {
-  const newRequest = request2.defaults(newDefaults);
-  const newApi = (query, options) => {
-    return graphql(newRequest, query, options);
-  };
-  return Object.assign(newApi, {
-    defaults: withDefaults.bind(null, newRequest),
-    endpoint: newRequest.endpoint
-  });
-}
-
-// pkg/dist-src/index.js
-var graphql2 = withDefaults(import_request3.request, {
-  headers: {
-    "user-agent": `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
-  },
-  method: "POST",
-  url: "/graphql"
-});
-function withCustomRequest(customRequest) {
-  return withDefaults(customRequest, {
-    method: "POST",
-    url: "/graphql"
-  });
-}
-// Annotate the CommonJS export names for ESM import in node:
-0 && (module.exports = {
-  GraphqlResponseError,
-  graphql,
-  withCustomRequest
-});
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-node/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-node/index.js.map
deleted file mode 100644
index a9d0f75..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-node/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/index.js", "../dist-src/version.js", "../dist-src/with-defaults.js", "../dist-src/graphql.js", "../dist-src/error.js"],
-  "sourcesContent": ["import { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport { withDefaults } from \"./with-defaults\";\nconst graphql = withDefaults(request, {\n  headers: {\n    \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`\n  },\n  method: \"POST\",\n  url: \"/graphql\"\n});\nimport { GraphqlResponseError } from \"./error\";\nfunction withCustomRequest(customRequest) {\n  return withDefaults(customRequest, {\n    method: \"POST\",\n    url: \"/graphql\"\n  });\n}\nexport {\n  GraphqlResponseError,\n  graphql,\n  withCustomRequest\n};\n", "const VERSION = \"7.0.2\";\nexport {\n  VERSION\n};\n", "import { request as Request } from \"@octokit/request\";\nimport { graphql } from \"./graphql\";\nfunction withDefaults(request, newDefaults) {\n  const newRequest = request.defaults(newDefaults);\n  const newApi = (query, options) => {\n    return graphql(newRequest, query, options);\n  };\n  return Object.assign(newApi, {\n    defaults: withDefaults.bind(null, newRequest),\n    endpoint: newRequest.endpoint\n  });\n}\nexport {\n  withDefaults\n};\n", "import { request as Request } from \"@octokit/request\";\nimport { GraphqlResponseError } from \"./error\";\nconst NON_VARIABLE_OPTIONS = [\n  \"method\",\n  \"baseUrl\",\n  \"url\",\n  \"headers\",\n  \"request\",\n  \"query\",\n  \"mediaType\"\n];\nconst FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request, query, options) {\n  if (options) {\n    if (typeof query === \"string\" && \"query\" in options) {\n      return Promise.reject(\n        new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n      );\n    }\n    for (const key in options) {\n      if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))\n        continue;\n      return Promise.reject(\n        new Error(\n          `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n        )\n      );\n    }\n  }\n  const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n  const requestOptions = Object.keys(\n    parsedOptions\n  ).reduce((result, key) => {\n    if (NON_VARIABLE_OPTIONS.includes(key)) {\n      result[key] = parsedOptions[key];\n      return result;\n    }\n    if (!result.variables) {\n      result.variables = {};\n    }\n    result.variables[key] = parsedOptions[key];\n    return result;\n  }, {});\n  const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\n  if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n    requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n  }\n  return request(requestOptions).then((response) => {\n    if (response.data.errors) {\n      const headers = {};\n      for (const key of Object.keys(response.headers)) {\n        headers[key] = response.headers[key];\n      }\n      throw new GraphqlResponseError(\n        requestOptions,\n        headers,\n        response.data\n      );\n    }\n    return response.data.data;\n  });\n}\nexport {\n  graphql\n};\n", "function _buildMessageForResponseErrors(data) {\n  return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nclass GraphqlResponseError extends Error {\n  constructor(request, headers, response) {\n    super(_buildMessageForResponseErrors(response));\n    this.request = request;\n    this.headers = headers;\n    this.response = response;\n    this.name = \"GraphqlResponseError\";\n    this.errors = response.errors;\n    this.data = response.data;\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor);\n    }\n  }\n}\nexport {\n  GraphqlResponseError\n};\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,iBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA,IAAAC,kBAAwB;AACxB,kCAA6B;;;ACD7B,IAAM,UAAU;;;ACAhB,IAAAC,kBAAmC;;;ACAnC,qBAAmC;;;ACAnC,SAAS,+BAA+B,MAAM;AAC5C,SAAO;AAAA,IACL,KAAK,OAAO,IAAI,CAAC,MAAM,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,IAAI;AACvD;AACA,IAAM,uBAAN,cAAmC,MAAM;AAAA,EACvC,YAAYC,UAAS,SAAS,UAAU;AACtC,UAAM,+BAA+B,QAAQ,CAAC;AAC9C,SAAK,UAAUA;AACf,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,OAAO;AACZ,SAAK,SAAS,SAAS;AACvB,SAAK,OAAO,SAAS;AACrB,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,IAChD;AAAA,EACF;AACF;;;ADfA,IAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,6BAA6B,CAAC,SAAS,UAAU,KAAK;AAC5D,IAAM,uBAAuB;AAC7B,SAAS,QAAQC,UAAS,OAAO,SAAS;AACxC,MAAI,SAAS;AACX,QAAI,OAAO,UAAU,YAAY,WAAW,SAAS;AACnD,aAAO,QAAQ;AAAA,QACb,IAAI,MAAM,4DAA4D;AAAA,MACxE;AAAA,IACF;AACA,eAAW,OAAO,SAAS;AACzB,UAAI,CAAC,2BAA2B,SAAS,GAAG;AAC1C;AACF,aAAO,QAAQ;AAAA,QACb,IAAI;AAAA,UACF,uBAAuB,GAAG;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,gBAAgB,OAAO,UAAU,WAAW,OAAO,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI;AACtF,QAAM,iBAAiB,OAAO;AAAA,IAC5B;AAAA,EACF,EAAE,OAAO,CAAC,QAAQ,QAAQ;AACxB,QAAI,qBAAqB,SAAS,GAAG,GAAG;AACtC,aAAO,GAAG,IAAI,cAAc,GAAG;AAC/B,aAAO;AAAA,IACT;AACA,QAAI,CAAC,OAAO,WAAW;AACrB,aAAO,YAAY,CAAC;AAAA,IACtB;AACA,WAAO,UAAU,GAAG,IAAI,cAAc,GAAG;AACzC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,QAAM,UAAU,cAAc,WAAWA,SAAQ,SAAS,SAAS;AACnE,MAAI,qBAAqB,KAAK,OAAO,GAAG;AACtC,mBAAe,MAAM,QAAQ,QAAQ,sBAAsB,cAAc;AAAA,EAC3E;AACA,SAAOA,SAAQ,cAAc,EAAE,KAAK,CAAC,aAAa;AAChD,QAAI,SAAS,KAAK,QAAQ;AACxB,YAAM,UAAU,CAAC;AACjB,iBAAW,OAAO,OAAO,KAAK,SAAS,OAAO,GAAG;AAC/C,gBAAQ,GAAG,IAAI,SAAS,QAAQ,GAAG;AAAA,MACrC;AACA,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS,KAAK;AAAA,EACvB,CAAC;AACH;;;AD5DA,SAAS,aAAaC,UAAS,aAAa;AAC1C,QAAM,aAAaA,SAAQ,SAAS,WAAW;AAC/C,QAAM,SAAS,CAAC,OAAO,YAAY;AACjC,WAAO,QAAQ,YAAY,OAAO,OAAO;AAAA,EAC3C;AACA,SAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B,UAAU,aAAa,KAAK,MAAM,UAAU;AAAA,IAC5C,UAAU,WAAW;AAAA,EACvB,CAAC;AACH;;;AFPA,IAAMC,WAAU,aAAa,yBAAS;AAAA,EACpC,SAAS;AAAA,IACP,cAAc,sBAAsB,OAAO,QAAI,0CAAa,CAAC;AAAA,EAC/D;AAAA,EACA,QAAQ;AAAA,EACR,KAAK;AACP,CAAC;AAED,SAAS,kBAAkB,eAAe;AACxC,SAAO,aAAa,eAAe;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACP,CAAC;AACH;",
-  "names": ["graphql", "import_request", "import_request", "request", "request", "request", "graphql"]
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/error.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/error.js
deleted file mode 100644
index dd0f4e6..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/error.js
+++ /dev/null
@@ -1,21 +0,0 @@
-function _buildMessageForResponseErrors(data) {
-  return `Request failed due to following response errors:
-` + data.errors.map((e) => ` - ${e.message}`).join("\n");
-}
-class GraphqlResponseError extends Error {
-  constructor(request, headers, response) {
-    super(_buildMessageForResponseErrors(response));
-    this.request = request;
-    this.headers = headers;
-    this.response = response;
-    this.name = "GraphqlResponseError";
-    this.errors = response.errors;
-    this.data = response.data;
-    if (Error.captureStackTrace) {
-      Error.captureStackTrace(this, this.constructor);
-    }
-  }
-}
-export {
-  GraphqlResponseError
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/graphql.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/graphql.js
deleted file mode 100644
index fda0c5f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/graphql.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import { request as Request } from "@octokit/request";
-import { GraphqlResponseError } from "./error";
-const NON_VARIABLE_OPTIONS = [
-  "method",
-  "baseUrl",
-  "url",
-  "headers",
-  "request",
-  "query",
-  "mediaType"
-];
-const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
-const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
-function graphql(request, query, options) {
-  if (options) {
-    if (typeof query === "string" && "query" in options) {
-      return Promise.reject(
-        new Error(`[@octokit/graphql] "query" cannot be used as variable name`)
-      );
-    }
-    for (const key in options) {
-      if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))
-        continue;
-      return Promise.reject(
-        new Error(
-          `[@octokit/graphql] "${key}" cannot be used as variable name`
-        )
-      );
-    }
-  }
-  const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query;
-  const requestOptions = Object.keys(
-    parsedOptions
-  ).reduce((result, key) => {
-    if (NON_VARIABLE_OPTIONS.includes(key)) {
-      result[key] = parsedOptions[key];
-      return result;
-    }
-    if (!result.variables) {
-      result.variables = {};
-    }
-    result.variables[key] = parsedOptions[key];
-    return result;
-  }, {});
-  const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;
-  if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
-    requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
-  }
-  return request(requestOptions).then((response) => {
-    if (response.data.errors) {
-      const headers = {};
-      for (const key of Object.keys(response.headers)) {
-        headers[key] = response.headers[key];
-      }
-      throw new GraphqlResponseError(
-        requestOptions,
-        headers,
-        response.data
-      );
-    }
-    return response.data.data;
-  });
-}
-export {
-  graphql
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/index.js
deleted file mode 100644
index 4e7deb5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/index.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import { request } from "@octokit/request";
-import { getUserAgent } from "universal-user-agent";
-import { VERSION } from "./version";
-import { withDefaults } from "./with-defaults";
-const graphql = withDefaults(request, {
-  headers: {
-    "user-agent": `octokit-graphql.js/${VERSION} ${getUserAgent()}`
-  },
-  method: "POST",
-  url: "/graphql"
-});
-import { GraphqlResponseError } from "./error";
-function withCustomRequest(customRequest) {
-  return withDefaults(customRequest, {
-    method: "POST",
-    url: "/graphql"
-  });
-}
-export {
-  GraphqlResponseError,
-  graphql,
-  withCustomRequest
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/version.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/version.js
deleted file mode 100644
index ad9f40d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/version.js
+++ /dev/null
@@ -1,4 +0,0 @@
-const VERSION = "7.0.2";
-export {
-  VERSION
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/with-defaults.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/with-defaults.js
deleted file mode 100644
index 853ce88..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-src/with-defaults.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import { request as Request } from "@octokit/request";
-import { graphql } from "./graphql";
-function withDefaults(request, newDefaults) {
-  const newRequest = request.defaults(newDefaults);
-  const newApi = (query, options) => {
-    return graphql(newRequest, query, options);
-  };
-  return Object.assign(newApi, {
-    defaults: withDefaults.bind(null, newRequest),
-    endpoint: newRequest.endpoint
-  });
-}
-export {
-  withDefaults
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/error.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/error.d.ts
deleted file mode 100644
index e921bfa..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/error.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import type { ResponseHeaders } from "@octokit/types";
-import type { GraphQlEndpointOptions, GraphQlQueryResponse } from "./types";
-type ServerResponseData<T> = Required<GraphQlQueryResponse<T>>;
-export declare class GraphqlResponseError<ResponseData> extends Error {
-    readonly request: GraphQlEndpointOptions;
-    readonly headers: ResponseHeaders;
-    readonly response: ServerResponseData<ResponseData>;
-    name: string;
-    readonly errors: GraphQlQueryResponse<never>["errors"];
-    readonly data: ResponseData;
-    constructor(request: GraphQlEndpointOptions, headers: ResponseHeaders, response: ServerResponseData<ResponseData>);
-}
-export {};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/graphql.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/graphql.d.ts
deleted file mode 100644
index 376e5df..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/graphql.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { request as Request } from "@octokit/request";
-import type { RequestParameters, GraphQlQueryResponseData } from "./types";
-export declare function graphql<ResponseData = GraphQlQueryResponseData>(request: typeof Request, query: string | RequestParameters, options?: RequestParameters): Promise<ResponseData>;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/index.d.ts
deleted file mode 100644
index c9b22c9..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/index.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { request } from "@octokit/request";
-export declare const graphql: import("./types").graphql;
-export type { GraphQlQueryResponseData } from "./types";
-export { GraphqlResponseError } from "./error";
-export declare function withCustomRequest(customRequest: typeof request): import("./types").graphql;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/types.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/types.d.ts
deleted file mode 100644
index ceba025..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/types.d.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import type { EndpointOptions, RequestParameters as RequestParametersType, EndpointInterface } from "@octokit/types";
-export type GraphQlEndpointOptions = EndpointOptions & {
-    variables?: {
-        [key: string]: unknown;
-    };
-};
-export type RequestParameters = RequestParametersType;
-export type Query = string;
-export interface graphql {
-    /**
-     * Sends a GraphQL query request based on endpoint options
-     * The GraphQL query must be specified in `options`.
-     *
-     * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
-     */
-    <ResponseData>(options: RequestParameters): GraphQlResponse<ResponseData>;
-    /**
-     * Sends a GraphQL query request based on endpoint options
-     *
-     * @param {string} query GraphQL query. Example: `'query { viewer { login } }'`.
-     * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
-     */
-    <ResponseData>(query: Query, parameters?: RequestParameters): GraphQlResponse<ResponseData>;
-    /**
-     * Returns a new `endpoint` with updated route and parameters
-     */
-    defaults: (newDefaults: RequestParameters) => graphql;
-    /**
-     * Octokit endpoint API, see {@link https://github.com/octokit/endpoint.js|@octokit/endpoint}
-     */
-    endpoint: EndpointInterface;
-}
-export type GraphQlResponse<ResponseData> = Promise<ResponseData>;
-export type GraphQlQueryResponseData = {
-    [key: string]: any;
-};
-export type GraphQlQueryResponse<ResponseData> = {
-    data: ResponseData;
-    errors?: [
-        {
-            type: string;
-            message: string;
-            path: [string];
-            extensions: {
-                [key: string]: any;
-            };
-            locations: [
-                {
-                    line: number;
-                    column: number;
-                }
-            ];
-        }
-    ];
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/version.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/version.d.ts
deleted file mode 100644
index d5b16a1..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/version.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare const VERSION = "7.0.2";
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts
deleted file mode 100644
index 28f22dc..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { request as Request } from "@octokit/request";
-import type { graphql as ApiInterface, RequestParameters } from "./types";
-export declare function withDefaults(request: typeof Request, newDefaults: RequestParameters): ApiInterface;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-web/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-web/index.js
deleted file mode 100644
index 9a07f45..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-web/index.js
+++ /dev/null
@@ -1,127 +0,0 @@
-// pkg/dist-src/index.js
-import { request } from "@octokit/request";
-import { getUserAgent } from "universal-user-agent";
-
-// pkg/dist-src/version.js
-var VERSION = "7.0.2";
-
-// pkg/dist-src/with-defaults.js
-import { request as Request2 } from "@octokit/request";
-
-// pkg/dist-src/graphql.js
-import { request as Request } from "@octokit/request";
-
-// pkg/dist-src/error.js
-function _buildMessageForResponseErrors(data) {
-  return `Request failed due to following response errors:
-` + data.errors.map((e) => ` - ${e.message}`).join("\n");
-}
-var GraphqlResponseError = class extends Error {
-  constructor(request2, headers, response) {
-    super(_buildMessageForResponseErrors(response));
-    this.request = request2;
-    this.headers = headers;
-    this.response = response;
-    this.name = "GraphqlResponseError";
-    this.errors = response.errors;
-    this.data = response.data;
-    if (Error.captureStackTrace) {
-      Error.captureStackTrace(this, this.constructor);
-    }
-  }
-};
-
-// pkg/dist-src/graphql.js
-var NON_VARIABLE_OPTIONS = [
-  "method",
-  "baseUrl",
-  "url",
-  "headers",
-  "request",
-  "query",
-  "mediaType"
-];
-var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
-var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
-function graphql(request2, query, options) {
-  if (options) {
-    if (typeof query === "string" && "query" in options) {
-      return Promise.reject(
-        new Error(`[@octokit/graphql] "query" cannot be used as variable name`)
-      );
-    }
-    for (const key in options) {
-      if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))
-        continue;
-      return Promise.reject(
-        new Error(
-          `[@octokit/graphql] "${key}" cannot be used as variable name`
-        )
-      );
-    }
-  }
-  const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query;
-  const requestOptions = Object.keys(
-    parsedOptions
-  ).reduce((result, key) => {
-    if (NON_VARIABLE_OPTIONS.includes(key)) {
-      result[key] = parsedOptions[key];
-      return result;
-    }
-    if (!result.variables) {
-      result.variables = {};
-    }
-    result.variables[key] = parsedOptions[key];
-    return result;
-  }, {});
-  const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;
-  if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
-    requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
-  }
-  return request2(requestOptions).then((response) => {
-    if (response.data.errors) {
-      const headers = {};
-      for (const key of Object.keys(response.headers)) {
-        headers[key] = response.headers[key];
-      }
-      throw new GraphqlResponseError(
-        requestOptions,
-        headers,
-        response.data
-      );
-    }
-    return response.data.data;
-  });
-}
-
-// pkg/dist-src/with-defaults.js
-function withDefaults(request2, newDefaults) {
-  const newRequest = request2.defaults(newDefaults);
-  const newApi = (query, options) => {
-    return graphql(newRequest, query, options);
-  };
-  return Object.assign(newApi, {
-    defaults: withDefaults.bind(null, newRequest),
-    endpoint: newRequest.endpoint
-  });
-}
-
-// pkg/dist-src/index.js
-var graphql2 = withDefaults(request, {
-  headers: {
-    "user-agent": `octokit-graphql.js/${VERSION} ${getUserAgent()}`
-  },
-  method: "POST",
-  url: "/graphql"
-});
-function withCustomRequest(customRequest) {
-  return withDefaults(customRequest, {
-    method: "POST",
-    url: "/graphql"
-  });
-}
-export {
-  GraphqlResponseError,
-  graphql2 as graphql,
-  withCustomRequest
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-web/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-web/index.js.map
deleted file mode 100644
index dda71d3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/dist-web/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/index.js", "../dist-src/version.js", "../dist-src/with-defaults.js", "../dist-src/graphql.js", "../dist-src/error.js"],
-  "sourcesContent": ["import { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport { withDefaults } from \"./with-defaults\";\nconst graphql = withDefaults(request, {\n  headers: {\n    \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`\n  },\n  method: \"POST\",\n  url: \"/graphql\"\n});\nimport { GraphqlResponseError } from \"./error\";\nfunction withCustomRequest(customRequest) {\n  return withDefaults(customRequest, {\n    method: \"POST\",\n    url: \"/graphql\"\n  });\n}\nexport {\n  GraphqlResponseError,\n  graphql,\n  withCustomRequest\n};\n", "const VERSION = \"7.0.2\";\nexport {\n  VERSION\n};\n", "import { request as Request } from \"@octokit/request\";\nimport { graphql } from \"./graphql\";\nfunction withDefaults(request, newDefaults) {\n  const newRequest = request.defaults(newDefaults);\n  const newApi = (query, options) => {\n    return graphql(newRequest, query, options);\n  };\n  return Object.assign(newApi, {\n    defaults: withDefaults.bind(null, newRequest),\n    endpoint: newRequest.endpoint\n  });\n}\nexport {\n  withDefaults\n};\n", "import { request as Request } from \"@octokit/request\";\nimport { GraphqlResponseError } from \"./error\";\nconst NON_VARIABLE_OPTIONS = [\n  \"method\",\n  \"baseUrl\",\n  \"url\",\n  \"headers\",\n  \"request\",\n  \"query\",\n  \"mediaType\"\n];\nconst FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request, query, options) {\n  if (options) {\n    if (typeof query === \"string\" && \"query\" in options) {\n      return Promise.reject(\n        new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n      );\n    }\n    for (const key in options) {\n      if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))\n        continue;\n      return Promise.reject(\n        new Error(\n          `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n        )\n      );\n    }\n  }\n  const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n  const requestOptions = Object.keys(\n    parsedOptions\n  ).reduce((result, key) => {\n    if (NON_VARIABLE_OPTIONS.includes(key)) {\n      result[key] = parsedOptions[key];\n      return result;\n    }\n    if (!result.variables) {\n      result.variables = {};\n    }\n    result.variables[key] = parsedOptions[key];\n    return result;\n  }, {});\n  const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\n  if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n    requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n  }\n  return request(requestOptions).then((response) => {\n    if (response.data.errors) {\n      const headers = {};\n      for (const key of Object.keys(response.headers)) {\n        headers[key] = response.headers[key];\n      }\n      throw new GraphqlResponseError(\n        requestOptions,\n        headers,\n        response.data\n      );\n    }\n    return response.data.data;\n  });\n}\nexport {\n  graphql\n};\n", "function _buildMessageForResponseErrors(data) {\n  return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nclass GraphqlResponseError extends Error {\n  constructor(request, headers, response) {\n    super(_buildMessageForResponseErrors(response));\n    this.request = request;\n    this.headers = headers;\n    this.response = response;\n    this.name = \"GraphqlResponseError\";\n    this.errors = response.errors;\n    this.data = response.data;\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor);\n    }\n  }\n}\nexport {\n  GraphqlResponseError\n};\n"],
-  "mappings": ";AAAA,SAAS,eAAe;AACxB,SAAS,oBAAoB;;;ACD7B,IAAM,UAAU;;;ACAhB,SAAS,WAAWA,gBAAe;;;ACAnC,SAAS,WAAW,eAAe;;;ACAnC,SAAS,+BAA+B,MAAM;AAC5C,SAAO;AAAA,IACL,KAAK,OAAO,IAAI,CAAC,MAAM,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,IAAI;AACvD;AACA,IAAM,uBAAN,cAAmC,MAAM;AAAA,EACvC,YAAYC,UAAS,SAAS,UAAU;AACtC,UAAM,+BAA+B,QAAQ,CAAC;AAC9C,SAAK,UAAUA;AACf,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,OAAO;AACZ,SAAK,SAAS,SAAS;AACvB,SAAK,OAAO,SAAS;AACrB,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,IAChD;AAAA,EACF;AACF;;;ADfA,IAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,6BAA6B,CAAC,SAAS,UAAU,KAAK;AAC5D,IAAM,uBAAuB;AAC7B,SAAS,QAAQC,UAAS,OAAO,SAAS;AACxC,MAAI,SAAS;AACX,QAAI,OAAO,UAAU,YAAY,WAAW,SAAS;AACnD,aAAO,QAAQ;AAAA,QACb,IAAI,MAAM,4DAA4D;AAAA,MACxE;AAAA,IACF;AACA,eAAW,OAAO,SAAS;AACzB,UAAI,CAAC,2BAA2B,SAAS,GAAG;AAC1C;AACF,aAAO,QAAQ;AAAA,QACb,IAAI;AAAA,UACF,uBAAuB,GAAG;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,gBAAgB,OAAO,UAAU,WAAW,OAAO,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI;AACtF,QAAM,iBAAiB,OAAO;AAAA,IAC5B;AAAA,EACF,EAAE,OAAO,CAAC,QAAQ,QAAQ;AACxB,QAAI,qBAAqB,SAAS,GAAG,GAAG;AACtC,aAAO,GAAG,IAAI,cAAc,GAAG;AAC/B,aAAO;AAAA,IACT;AACA,QAAI,CAAC,OAAO,WAAW;AACrB,aAAO,YAAY,CAAC;AAAA,IACtB;AACA,WAAO,UAAU,GAAG,IAAI,cAAc,GAAG;AACzC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,QAAM,UAAU,cAAc,WAAWA,SAAQ,SAAS,SAAS;AACnE,MAAI,qBAAqB,KAAK,OAAO,GAAG;AACtC,mBAAe,MAAM,QAAQ,QAAQ,sBAAsB,cAAc;AAAA,EAC3E;AACA,SAAOA,SAAQ,cAAc,EAAE,KAAK,CAAC,aAAa;AAChD,QAAI,SAAS,KAAK,QAAQ;AACxB,YAAM,UAAU,CAAC;AACjB,iBAAW,OAAO,OAAO,KAAK,SAAS,OAAO,GAAG;AAC/C,gBAAQ,GAAG,IAAI,SAAS,QAAQ,GAAG;AAAA,MACrC;AACA,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS,KAAK;AAAA,EACvB,CAAC;AACH;;;AD5DA,SAAS,aAAaC,UAAS,aAAa;AAC1C,QAAM,aAAaA,SAAQ,SAAS,WAAW;AAC/C,QAAM,SAAS,CAAC,OAAO,YAAY;AACjC,WAAO,QAAQ,YAAY,OAAO,OAAO;AAAA,EAC3C;AACA,SAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B,UAAU,aAAa,KAAK,MAAM,UAAU;AAAA,IAC5C,UAAU,WAAW;AAAA,EACvB,CAAC;AACH;;;AFPA,IAAMC,WAAU,aAAa,SAAS;AAAA,EACpC,SAAS;AAAA,IACP,cAAc,sBAAsB,OAAO,IAAI,aAAa,CAAC;AAAA,EAC/D;AAAA,EACA,QAAQ;AAAA,EACR,KAAK;AACP,CAAC;AAED,SAAS,kBAAkB,eAAe;AACxC,SAAO,aAAa,eAAe;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACP,CAAC;AACH;",
-  "names": ["Request", "request", "request", "request", "graphql"]
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/package.json b/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/package.json
deleted file mode 100644
index 342c1bc..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/graphql/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "name": "@octokit/graphql",
-  "version": "7.0.2",
-  "publishConfig": {
-    "access": "public"
-  },
-  "description": "GitHub GraphQL API client for browsers and Node",
-  "repository": "github:octokit/graphql.js",
-  "keywords": [
-    "octokit",
-    "github",
-    "api",
-    "graphql"
-  ],
-  "author": "Gregor Martynus (https://github.com/gr2m)",
-  "license": "MIT",
-  "dependencies": {
-    "@octokit/request": "^8.0.1",
-    "@octokit/types": "^12.0.0",
-    "universal-user-agent": "^6.0.0"
-  },
-  "devDependencies": {
-    "@octokit/tsconfig": "^2.0.0",
-    "@types/fetch-mock": "^7.2.5",
-    "@types/jest": "^29.0.0",
-    "@types/node": "^18.0.0",
-    "esbuild": "^0.19.0",
-    "fetch-mock": "npm:@gr2m/fetch-mock@9.11.0-pull-request-644.1",
-    "glob": "^10.2.6",
-    "jest": "^29.0.0",
-    "prettier": "3.0.3",
-    "semantic-release-plugin-update-version-in-files": "^1.0.0",
-    "ts-jest": "^29.0.0",
-    "typescript": "^5.0.0"
-  },
-  "engines": {
-    "node": ">= 18"
-  },
-  "files": [
-    "dist-*/**",
-    "bin/**"
-  ],
-  "main": "dist-node/index.js",
-  "module": "dist-web/index.js",
-  "types": "dist-types/index.d.ts",
-  "source": "dist-src/index.js",
-  "sideEffects": false
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/openapi-types/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@octokit/openapi-types/LICENSE
deleted file mode 100644
index c61fbbe..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/openapi-types/LICENSE
+++ /dev/null
@@ -1,7 +0,0 @@
-Copyright 2020 Gregor Martynus
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/openapi-types/README.md b/actions/bcr-pr-review-notifier/node_modules/@octokit/openapi-types/README.md
deleted file mode 100644
index 9da833c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/openapi-types/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# @octokit/openapi-types
-
-> Generated TypeScript definitions based on GitHub's OpenAPI spec
-
-This package is continously updated based on [GitHub's OpenAPI specification](https://github.com/github/rest-api-description/)
-
-## Usage
-
-```ts
-import { components } from "@octokit/openapi-types";
-
-type Repository = components["schemas"]["full-repository"];
-```
-
-## License
-
-[MIT](LICENSE)
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/openapi-types/package.json b/actions/bcr-pr-review-notifier/node_modules/@octokit/openapi-types/package.json
deleted file mode 100644
index f8ba943..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/openapi-types/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "name": "@octokit/openapi-types",
-  "description": "Generated TypeScript definitions based on GitHub's OpenAPI spec for api.github.com",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/octokit/openapi-types.ts.git",
-    "directory": "packages/openapi-types"
-  },
-  "publishConfig": {
-    "access": "public"
-  },
-  "version": "19.1.0",
-  "main": "",
-  "types": "types.d.ts",
-  "author": "Gregor Martynus (https://twitter.com/gr2m)",
-  "license": "MIT",
-  "octokit": {
-    "openapi-version": "13.3.0"
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/openapi-types/types.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/openapi-types/types.d.ts
deleted file mode 100644
index 10ff9d6..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/openapi-types/types.d.ts
+++ /dev/null
@@ -1,116659 +0,0 @@
-/**
- * This file was auto-generated by openapi-typescript.
- * Do not make direct changes to the file.
- */
-
-/** OneOf type helpers */
-type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };
-type XOR<T, U> = T | U extends object
-  ? (Without<T, U> & U) | (Without<U, T> & T)
-  : T | U;
-type OneOf<T extends any[]> = T extends [infer Only]
-  ? Only
-  : T extends [infer A, infer B, ...infer Rest]
-    ? OneOf<[XOR<A, B>, ...Rest]>
-    : never;
-
-export interface paths {
-  "/": {
-    /**
-     * GitHub API Root
-     * @description Get Hypermedia links to resources accessible in GitHub's REST API
-     */
-    get: operations["meta/root"];
-  };
-  "/advisories": {
-    /**
-     * List global security advisories
-     * @description Lists all global security advisories that match the specified parameters. If no other parameters are defined, the request will return only GitHub-reviewed advisories that are not malware.
-     *
-     * By default, all responses will exclude advisories for malware, because malware are not standard vulnerabilities. To list advisories for malware, you must include the `type` parameter in your request, with the value `malware`. For more information about the different types of security advisories, see "[About the GitHub Advisory database](https://docs.github.com/code-security/security-advisories/global-security-advisories/about-the-github-advisory-database#about-types-of-security-advisories)."
-     */
-    get: operations["security-advisories/list-global-advisories"];
-  };
-  "/advisories/{ghsa_id}": {
-    /**
-     * Get a global security advisory
-     * @description Gets a global security advisory using its GitHub Security Advisory (GHSA) identifier.
-     */
-    get: operations["security-advisories/get-global-advisory"];
-  };
-  "/app": {
-    /**
-     * Get the authenticated app
-     * @description Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/apps/apps#list-installations-for-the-authenticated-app)" endpoint.
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    get: operations["apps/get-authenticated"];
-  };
-  "/app-manifests/{code}/conversions": {
-    /**
-     * Create a GitHub App from a manifest
-     * @description Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`.
-     */
-    post: operations["apps/create-from-manifest"];
-  };
-  "/app/hook/config": {
-    /**
-     * Get a webhook configuration for an app
-     * @description Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)."
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    get: operations["apps/get-webhook-config-for-app"];
-    /**
-     * Update a webhook configuration for an app
-     * @description Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)."
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    patch: operations["apps/update-webhook-config-for-app"];
-  };
-  "/app/hook/deliveries": {
-    /**
-     * List deliveries for an app webhook
-     * @description Returns a list of webhook deliveries for the webhook configured for a GitHub App.
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    get: operations["apps/list-webhook-deliveries"];
-  };
-  "/app/hook/deliveries/{delivery_id}": {
-    /**
-     * Get a delivery for an app webhook
-     * @description Returns a delivery for the webhook configured for a GitHub App.
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    get: operations["apps/get-webhook-delivery"];
-  };
-  "/app/hook/deliveries/{delivery_id}/attempts": {
-    /**
-     * Redeliver a delivery for an app webhook
-     * @description Redeliver a delivery for the webhook configured for a GitHub App.
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    post: operations["apps/redeliver-webhook-delivery"];
-  };
-  "/app/installation-requests": {
-    /**
-     * List installation requests for the authenticated app
-     * @description Lists all the pending installation requests for the authenticated GitHub App.
-     */
-    get: operations["apps/list-installation-requests-for-authenticated-app"];
-  };
-  "/app/installations": {
-    /**
-     * List installations for the authenticated app
-     * @description You must use a [JWT](https://docs.github.com/enterprise-server@3.9/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     *
-     * The permissions the installation has are included under the `permissions` key.
-     */
-    get: operations["apps/list-installations"];
-  };
-  "/app/installations/{installation_id}": {
-    /**
-     * Get an installation for the authenticated app
-     * @description Enables an authenticated GitHub App to find an installation's information using the installation id.
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    get: operations["apps/get-installation"];
-    /**
-     * Delete an installation for the authenticated app
-     * @description Uninstalls a GitHub App on a user, organization, or business account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/rest/apps/apps#suspend-an-app-installation)" endpoint.
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    delete: operations["apps/delete-installation"];
-  };
-  "/app/installations/{installation_id}/access_tokens": {
-    /**
-     * Create an installation access token for an app
-     * @description Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access. To restrict the access to specific repositories, you can provide the `repository_ids` when creating the token. When you omit `repository_ids`, the response does not contain the `repositories` key.
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    post: operations["apps/create-installation-access-token"];
-  };
-  "/app/installations/{installation_id}/suspended": {
-    /**
-     * Suspend an app installation
-     * @description Suspends a GitHub App on a user, organization, or business account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account.
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    put: operations["apps/suspend-installation"];
-    /**
-     * Unsuspend an app installation
-     * @description Removes a GitHub App installation suspension.
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    delete: operations["apps/unsuspend-installation"];
-  };
-  "/applications/{client_id}/grant": {
-    /**
-     * Delete an app authorization
-     * @description OAuth and GitHub application owners can revoke a grant for their application and a specific user. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted.
-     * Deleting an application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized).
-     */
-    delete: operations["apps/delete-authorization"];
-  };
-  "/applications/{client_id}/token": {
-    /**
-     * Check a token
-     * @description OAuth applications and GitHub applications with OAuth authorizations can use this API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to use this endpoint, where the username is the application `client_id` and the password is its `client_secret`. Invalid tokens will return `404 NOT FOUND`.
-     */
-    post: operations["apps/check-token"];
-    /**
-     * Delete an app token
-     * @description OAuth  or GitHub application owners can revoke a single token for an OAuth application or a GitHub application with an OAuth authorization. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the application's `client_id` and `client_secret` as the username and password.
-     */
-    delete: operations["apps/delete-token"];
-    /**
-     * Reset a token
-     * @description OAuth applications and GitHub applications with OAuth authorizations can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
-     */
-    patch: operations["apps/reset-token"];
-  };
-  "/applications/{client_id}/token/scoped": {
-    /**
-     * Create a scoped access token
-     * @description Use a non-scoped user access token to create a repository scoped and/or permission scoped user access token. You can specify which repositories the token can access and which permissions are granted to the token. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the `client_id` and `client_secret` of the GitHub App as the username and password. Invalid tokens will return `404 NOT FOUND`.
-     */
-    post: operations["apps/scope-token"];
-  };
-  "/apps/{app_slug}": {
-    /**
-     * Get an app
-     * @description **Note**: The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`).
-     *
-     * If the GitHub App you specify is public, you can access this endpoint without authenticating. If the GitHub App you specify is private, you must authenticate with a [personal access token](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
-     */
-    get: operations["apps/get-by-slug"];
-  };
-  "/assignments/{assignment_id}": {
-    /**
-     * Get an assignment
-     * @description Gets a GitHub Classroom assignment. Assignment will only be returned if the current user is an administrator of the GitHub Classroom for the assignment.
-     */
-    get: operations["classroom/get-an-assignment"];
-  };
-  "/assignments/{assignment_id}/accepted_assignments": {
-    /**
-     * List accepted assignments for an assignment
-     * @description Lists any assignment repositories that have been created by students accepting a GitHub Classroom assignment. Accepted assignments will only be returned if the current user is an administrator of the GitHub Classroom for the assignment.
-     */
-    get: operations["classroom/list-accepted-assigments-for-an-assignment"];
-  };
-  "/assignments/{assignment_id}/grades": {
-    /**
-     * Get assignment grades
-     * @description Gets grades for a GitHub Classroom assignment. Grades will only be returned if the current user is an administrator of the GitHub Classroom for the assignment.
-     */
-    get: operations["classroom/get-assignment-grades"];
-  };
-  "/classrooms": {
-    /**
-     * List classrooms
-     * @description Lists GitHub Classroom classrooms for the current user. Classrooms will only be returned if the current user is an administrator of one or more GitHub Classrooms.
-     */
-    get: operations["classroom/list-classrooms"];
-  };
-  "/classrooms/{classroom_id}": {
-    /**
-     * Get a classroom
-     * @description Gets a GitHub Classroom classroom for the current user. Classroom will only be returned if the current user is an administrator of the GitHub Classroom.
-     */
-    get: operations["classroom/get-a-classroom"];
-  };
-  "/classrooms/{classroom_id}/assignments": {
-    /**
-     * List assignments for a classroom
-     * @description Lists GitHub Classroom assignments for a classroom. Assignments will only be returned if the current user is an administrator of the GitHub Classroom.
-     */
-    get: operations["classroom/list-assignments-for-a-classroom"];
-  };
-  "/codes_of_conduct": {
-    /**
-     * Get all codes of conduct
-     * @description Returns array of all GitHub's codes of conduct.
-     */
-    get: operations["codes-of-conduct/get-all-codes-of-conduct"];
-  };
-  "/codes_of_conduct/{key}": {
-    /**
-     * Get a code of conduct
-     * @description Returns information about the specified GitHub code of conduct.
-     */
-    get: operations["codes-of-conduct/get-conduct-code"];
-  };
-  "/emojis": {
-    /**
-     * Get emojis
-     * @description Lists all the emojis available to use on GitHub.
-     */
-    get: operations["emojis/get"];
-  };
-  "/enterprises/{enterprise}/dependabot/alerts": {
-    /**
-     * List Dependabot alerts for an enterprise
-     * @description Lists Dependabot alerts for repositories that are owned by the specified enterprise.
-     * To use this endpoint, you must be a member of the enterprise, and you must use an
-     * access token with the `repo` scope or `security_events` scope.
-     * Alerts are only returned for organizations in the enterprise for which you are an organization owner or a security manager. For more information about security managers, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-     */
-    get: operations["dependabot/list-alerts-for-enterprise"];
-  };
-  "/enterprises/{enterprise}/secret-scanning/alerts": {
-    /**
-     * List secret scanning alerts for an enterprise
-     * @description Lists secret scanning alerts for eligible repositories in an enterprise, from newest to oldest.
-     * To use this endpoint, you must be a member of the enterprise, and you must use an access token with the `repo` scope or `security_events` scope. Alerts are only returned for organizations in the enterprise for which you are an organization owner or a [security manager](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization).
-     */
-    get: operations["secret-scanning/list-alerts-for-enterprise"];
-  };
-  "/events": {
-    /**
-     * List public events
-     * @description We delay the public events feed by five minutes, which means the most recent event returned by the public events API actually occurred at least five minutes ago.
-     */
-    get: operations["activity/list-public-events"];
-  };
-  "/feeds": {
-    /**
-     * Get feeds
-     * @description GitHub provides several timeline resources in [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) format. The Feeds API lists all the feeds available to the authenticated user:
-     *
-     * *   **Timeline**: The GitHub global public timeline
-     * *   **User**: The public timeline for any user, using [URI template](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia)
-     * *   **Current user public**: The public timeline for the authenticated user
-     * *   **Current user**: The private timeline for the authenticated user
-     * *   **Current user actor**: The private timeline for activity created by the authenticated user
-     * *   **Current user organizations**: The private timeline for the organizations the authenticated user is a member of.
-     * *   **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub.
-     *
-     * **Note**: Private feeds are only returned when [authenticating via Basic Auth](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) since current feed URIs use the older, non revocable auth tokens.
-     */
-    get: operations["activity/get-feeds"];
-  };
-  "/gists": {
-    /**
-     * List gists for the authenticated user
-     * @description Lists the authenticated user's gists or if called anonymously, this endpoint returns all public gists:
-     */
-    get: operations["gists/list"];
-    /**
-     * Create a gist
-     * @description Allows you to add a new gist with one or more files.
-     *
-     * **Note:** Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally.
-     */
-    post: operations["gists/create"];
-  };
-  "/gists/public": {
-    /**
-     * List public gists
-     * @description List public gists sorted by most recently updated to least recently updated.
-     *
-     * Note: With [pagination](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page.
-     */
-    get: operations["gists/list-public"];
-  };
-  "/gists/starred": {
-    /**
-     * List starred gists
-     * @description List the authenticated user's starred gists:
-     */
-    get: operations["gists/list-starred"];
-  };
-  "/gists/{gist_id}": {
-    /** Get a gist */
-    get: operations["gists/get"];
-    /** Delete a gist */
-    delete: operations["gists/delete"];
-    /**
-     * Update a gist
-     * @description Allows you to update a gist's description and to update, delete, or rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged.
-     */
-    patch: operations["gists/update"];
-  };
-  "/gists/{gist_id}/comments": {
-    /** List gist comments */
-    get: operations["gists/list-comments"];
-    /** Create a gist comment */
-    post: operations["gists/create-comment"];
-  };
-  "/gists/{gist_id}/comments/{comment_id}": {
-    /** Get a gist comment */
-    get: operations["gists/get-comment"];
-    /** Delete a gist comment */
-    delete: operations["gists/delete-comment"];
-    /** Update a gist comment */
-    patch: operations["gists/update-comment"];
-  };
-  "/gists/{gist_id}/commits": {
-    /** List gist commits */
-    get: operations["gists/list-commits"];
-  };
-  "/gists/{gist_id}/forks": {
-    /** List gist forks */
-    get: operations["gists/list-forks"];
-    /** Fork a gist */
-    post: operations["gists/fork"];
-  };
-  "/gists/{gist_id}/star": {
-    /** Check if a gist is starred */
-    get: operations["gists/check-is-starred"];
-    /**
-     * Star a gist
-     * @description Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-     */
-    put: operations["gists/star"];
-    /** Unstar a gist */
-    delete: operations["gists/unstar"];
-  };
-  "/gists/{gist_id}/{sha}": {
-    /** Get a gist revision */
-    get: operations["gists/get-revision"];
-  };
-  "/gitignore/templates": {
-    /**
-     * Get all gitignore templates
-     * @description List all templates available to pass as an option when [creating a repository](https://docs.github.com/rest/repos/repos#create-a-repository-for-the-authenticated-user).
-     */
-    get: operations["gitignore/get-all-templates"];
-  };
-  "/gitignore/templates/{name}": {
-    /**
-     * Get a gitignore template
-     * @description The API also allows fetching the source of a single template.
-     * Use the raw [media type](https://docs.github.com/rest/overview/media-types/) to get the raw contents.
-     */
-    get: operations["gitignore/get-template"];
-  };
-  "/installation/repositories": {
-    /**
-     * List repositories accessible to the app installation
-     * @description List repositories that an app installation can access.
-     *
-     * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
-     */
-    get: operations["apps/list-repos-accessible-to-installation"];
-  };
-  "/installation/token": {
-    /**
-     * Revoke an installation access token
-     * @description Revokes the installation token you're using to authenticate as an installation and access this endpoint.
-     *
-     * Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the "[Create an installation access token for an app](https://docs.github.com/rest/apps/apps#create-an-installation-access-token-for-an-app)" endpoint.
-     *
-     * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
-     */
-    delete: operations["apps/revoke-installation-access-token"];
-  };
-  "/issues": {
-    /**
-     * List issues assigned to the authenticated user
-     * @description List issues assigned to the authenticated user across all visible repositories including owned repositories, member
-     * repositories, and organization repositories. You can use the `filter` query parameter to fetch issues that are not
-     * necessarily assigned to you.
-     *
-     *
-     * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-     * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-     * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-     * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-     */
-    get: operations["issues/list"];
-  };
-  "/licenses": {
-    /**
-     * Get all commonly used licenses
-     * @description Lists the most commonly used licenses on GitHub. For more information, see "[Licensing a repository ](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)."
-     */
-    get: operations["licenses/get-all-commonly-used"];
-  };
-  "/licenses/{license}": {
-    /**
-     * Get a license
-     * @description Gets information about a specific license. For more information, see "[Licensing a repository ](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)."
-     */
-    get: operations["licenses/get"];
-  };
-  "/markdown": {
-    /** Render a Markdown document */
-    post: operations["markdown/render"];
-  };
-  "/markdown/raw": {
-    /**
-     * Render a Markdown document in raw mode
-     * @description You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less.
-     */
-    post: operations["markdown/render-raw"];
-  };
-  "/marketplace_listing/accounts/{account_id}": {
-    /**
-     * Get a subscription plan for an account
-     * @description Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
-     *
-     * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-     */
-    get: operations["apps/get-subscription-plan-for-account"];
-  };
-  "/marketplace_listing/plans": {
-    /**
-     * List plans
-     * @description Lists all plans that are part of your GitHub Marketplace listing.
-     *
-     * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-     */
-    get: operations["apps/list-plans"];
-  };
-  "/marketplace_listing/plans/{plan_id}/accounts": {
-    /**
-     * List accounts for a plan
-     * @description Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
-     *
-     * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-     */
-    get: operations["apps/list-accounts-for-plan"];
-  };
-  "/marketplace_listing/stubbed/accounts/{account_id}": {
-    /**
-     * Get a subscription plan for an account (stubbed)
-     * @description Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
-     *
-     * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-     */
-    get: operations["apps/get-subscription-plan-for-account-stubbed"];
-  };
-  "/marketplace_listing/stubbed/plans": {
-    /**
-     * List plans (stubbed)
-     * @description Lists all plans that are part of your GitHub Marketplace listing.
-     *
-     * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-     */
-    get: operations["apps/list-plans-stubbed"];
-  };
-  "/marketplace_listing/stubbed/plans/{plan_id}/accounts": {
-    /**
-     * List accounts for a plan (stubbed)
-     * @description Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
-     *
-     * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-     */
-    get: operations["apps/list-accounts-for-plan-stubbed"];
-  };
-  "/meta": {
-    /**
-     * Get GitHub meta information
-     * @description Returns meta information about GitHub, including a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://docs.github.com/articles/about-github-s-ip-addresses/)."
-     *
-     * The API's response also includes a list of GitHub's domain names.
-     *
-     * The values shown in the documentation's response are example values. You must always query the API directly to get the latest values.
-     *
-     * **Note:** This endpoint returns both IPv4 and IPv6 addresses. However, not all features support IPv6. You should refer to the specific documentation for each feature to determine if IPv6 is supported.
-     */
-    get: operations["meta/get"];
-  };
-  "/networks/{owner}/{repo}/events": {
-    /** List public events for a network of repositories */
-    get: operations["activity/list-public-events-for-repo-network"];
-  };
-  "/notifications": {
-    /**
-     * List notifications for the authenticated user
-     * @description List all notifications for the current user, sorted by most recently updated.
-     */
-    get: operations["activity/list-notifications-for-authenticated-user"];
-    /**
-     * Mark notifications as read
-     * @description Marks all notifications as "read" for the current user. If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List notifications for the authenticated user](https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`.
-     */
-    put: operations["activity/mark-notifications-as-read"];
-  };
-  "/notifications/threads/{thread_id}": {
-    /**
-     * Get a thread
-     * @description Gets information about a notification thread.
-     */
-    get: operations["activity/get-thread"];
-    /**
-     * Mark a thread as read
-     * @description Marks a thread as "read." Marking a thread as "read" is equivalent to clicking a notification in your notification inbox on GitHub: https://github.com/notifications.
-     */
-    patch: operations["activity/mark-thread-as-read"];
-  };
-  "/notifications/threads/{thread_id}/subscription": {
-    /**
-     * Get a thread subscription for the authenticated user
-     * @description This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/rest/activity/watching#get-a-repository-subscription).
-     *
-     * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread.
-     */
-    get: operations["activity/get-thread-subscription-for-authenticated-user"];
-    /**
-     * Set a thread subscription
-     * @description If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**.
-     *
-     * You can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored.
-     *
-     * Unsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/rest/activity/notifications#delete-a-thread-subscription) endpoint.
-     */
-    put: operations["activity/set-thread-subscription"];
-    /**
-     * Delete a thread subscription
-     * @description Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/rest/activity/notifications#set-a-thread-subscription) endpoint and set `ignore` to `true`.
-     */
-    delete: operations["activity/delete-thread-subscription"];
-  };
-  "/octocat": {
-    /**
-     * Get Octocat
-     * @description Get the octocat as ASCII art
-     */
-    get: operations["meta/get-octocat"];
-  };
-  "/organizations": {
-    /**
-     * List organizations
-     * @description Lists all organizations, in the order that they were created on GitHub.
-     *
-     * **Note:** Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of organizations.
-     */
-    get: operations["orgs/list"];
-  };
-  "/orgs/{org}": {
-    /**
-     * Get an organization
-     * @description To see many of the organization response values, you need to be an authenticated organization owner with the `admin:org` scope. When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, and outside collaborators to enable [two-factor authentication](https://docs.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/).
-     *
-     * GitHub Apps with the `Organization plan` permission can use this endpoint to retrieve information about an organization's GitHub plan. See "[Authenticating with GitHub Apps](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/)" for details. For an example response, see 'Response with GitHub plan information' below."
-     */
-    get: operations["orgs/get"];
-    /**
-     * Delete an organization
-     * @description Deletes an organization and all its repositories.
-     *
-     * The organization login will be unavailable for 90 days after deletion.
-     *
-     * Please review the Terms of Service regarding account deletion before using this endpoint:
-     *
-     * https://docs.github.com/site-policy/github-terms/github-terms-of-service
-     */
-    delete: operations["orgs/delete"];
-    /**
-     * Update an organization
-     * @description **Parameter Deprecation Notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. The new input parameters are `members_can_create_public_repositories`, `members_can_create_private_repositories` for all organizations and `members_can_create_internal_repositories` for organizations associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes).
-     *
-     * Enables an authenticated organization owner with the `admin:org` scope or the `repo` scope to update the organization's profile and member privileges.
-     */
-    patch: operations["orgs/update"];
-  };
-  "/orgs/{org}/actions/cache/usage": {
-    /**
-     * Get GitHub Actions cache usage for an organization
-     * @description Gets the total GitHub Actions cache usage for an organization.
-     * The 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.
-     * You must authenticate using an access token with the `read:org` scope to use this endpoint. GitHub Apps must have the `organization_admistration:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-actions-cache-usage-for-org"];
-  };
-  "/orgs/{org}/actions/cache/usage-by-repository": {
-    /**
-     * List repositories with GitHub Actions cache usage for an organization
-     * @description Lists repositories and their GitHub Actions cache usage for an organization.
-     * The 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.
-     * You must authenticate using an access token with the `read:org` scope to use this endpoint. GitHub Apps must have the `organization_admistration:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-actions-cache-usage-by-repo-for-org"];
-  };
-  "/orgs/{org}/actions/oidc/customization/sub": {
-    /**
-     * Get the customization template for an OIDC subject claim for an organization
-     * @description Gets the customization template for an OpenID Connect (OIDC) subject claim.
-     * You must authenticate using an access token with the `read:org` scope to use this endpoint.
-     * GitHub Apps must have the `organization_administration:write` permission to use this endpoint.
-     */
-    get: operations["oidc/get-oidc-custom-sub-template-for-org"];
-    /**
-     * Set the customization template for an OIDC subject claim for an organization
-     * @description Creates or updates the customization template for an OpenID Connect (OIDC) subject claim.
-     * You must authenticate using an access token with the `write:org` scope to use this endpoint.
-     * GitHub Apps must have the `admin:org` permission to use this endpoint.
-     */
-    put: operations["oidc/update-oidc-custom-sub-template-for-org"];
-  };
-  "/orgs/{org}/actions/permissions": {
-    /**
-     * Get GitHub Actions permissions for an organization
-     * @description Gets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-     */
-    get: operations["actions/get-github-actions-permissions-organization"];
-    /**
-     * Set GitHub Actions permissions for an organization
-     * @description Sets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-     */
-    put: operations["actions/set-github-actions-permissions-organization"];
-  };
-  "/orgs/{org}/actions/permissions/repositories": {
-    /**
-     * List selected repositories enabled for GitHub Actions in an organization
-     * @description Lists the 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](#set-github-actions-permissions-for-an-organization)."
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-     */
-    get: operations["actions/list-selected-repositories-enabled-github-actions-organization"];
-    /**
-     * Set selected repositories enabled for GitHub Actions in an organization
-     * @description Replaces 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](#set-github-actions-permissions-for-an-organization)."
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-     */
-    put: operations["actions/set-selected-repositories-enabled-github-actions-organization"];
-  };
-  "/orgs/{org}/actions/permissions/repositories/{repository_id}": {
-    /**
-     * Enable a selected repository for GitHub Actions in an organization
-     * @description 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](#set-github-actions-permissions-for-an-organization)."
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-     */
-    put: operations["actions/enable-selected-repository-github-actions-organization"];
-    /**
-     * Disable a selected repository for GitHub Actions in an organization
-     * @description 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](#set-github-actions-permissions-for-an-organization)."
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-     */
-    delete: operations["actions/disable-selected-repository-github-actions-organization"];
-  };
-  "/orgs/{org}/actions/permissions/selected-actions": {
-    /**
-     * Get allowed actions and reusable workflows for an organization
-     * @description Gets the selected actions and reusable workflows 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](#set-github-actions-permissions-for-an-organization).""
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-     */
-    get: operations["actions/get-allowed-actions-organization"];
-    /**
-     * Set allowed actions and reusable workflows for an organization
-     * @description Sets the actions and reusable workflows 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](#set-github-actions-permissions-for-an-organization)."
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-     */
-    put: operations["actions/set-allowed-actions-organization"];
-  };
-  "/orgs/{org}/actions/permissions/workflow": {
-    /**
-     * Get default workflow permissions for an organization
-     * @description Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization,
-     * as well as whether GitHub Actions can submit approving pull request reviews. For more information, see
-     * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)."
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-     */
-    get: operations["actions/get-github-actions-default-workflow-permissions-organization"];
-    /**
-     * Set default workflow permissions for an organization
-     * @description Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, and sets if GitHub Actions
-     * can submit approving pull request reviews. For more information, see
-     * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)."
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-     */
-    put: operations["actions/set-github-actions-default-workflow-permissions-organization"];
-  };
-  "/orgs/{org}/actions/runners": {
-    /**
-     * List self-hosted runners for an organization
-     * @description Lists all self-hosted runners configured in an organization.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    get: operations["actions/list-self-hosted-runners-for-org"];
-  };
-  "/orgs/{org}/actions/runners/downloads": {
-    /**
-     * List runner applications for an organization
-     * @description Lists binaries for the runner application that you can download and run.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    get: operations["actions/list-runner-applications-for-org"];
-  };
-  "/orgs/{org}/actions/runners/generate-jitconfig": {
-    /**
-     * Create configuration for a just-in-time runner for an organization
-     * @description Generates a configuration that can be passed to the runner application at startup.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    post: operations["actions/generate-runner-jitconfig-for-org"];
-  };
-  "/orgs/{org}/actions/runners/registration-token": {
-    /**
-     * Create a registration token for an organization
-     * @description Returns a token that you can pass to the `config` script. The token expires after one hour.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     *
-     * Example using registration token:
-     *
-     * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint.
-     *
-     * ```
-     * ./config.sh --url https://github.com/octo-org --token TOKEN
-     * ```
-     */
-    post: operations["actions/create-registration-token-for-org"];
-  };
-  "/orgs/{org}/actions/runners/remove-token": {
-    /**
-     * Create a remove token for an organization
-     * @description 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.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     *
-     * Example using remove token:
-     *
-     * To remove your self-hosted runner from an organization, replace `TOKEN` with the remove token provided by this
-     * endpoint.
-     *
-     * ```
-     * ./config.sh remove --token TOKEN
-     * ```
-     */
-    post: operations["actions/create-remove-token-for-org"];
-  };
-  "/orgs/{org}/actions/runners/{runner_id}": {
-    /**
-     * Get a self-hosted runner for an organization
-     * @description Gets a specific self-hosted runner configured in an organization.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    get: operations["actions/get-self-hosted-runner-for-org"];
-    /**
-     * Delete a self-hosted runner from an organization
-     * @description Forces the removal of a self-hosted runner from an organization. You can use this endpoint to completely remove the runner when the machine you were using no longer exists.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    delete: operations["actions/delete-self-hosted-runner-from-org"];
-  };
-  "/orgs/{org}/actions/runners/{runner_id}/labels": {
-    /**
-     * List labels for a self-hosted runner for an organization
-     * @description Lists all labels for a self-hosted runner configured in an organization.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    get: operations["actions/list-labels-for-self-hosted-runner-for-org"];
-    /**
-     * Set custom labels for a self-hosted runner for an organization
-     * @description Remove all previous custom labels and set the new custom labels for a specific
-     * self-hosted runner configured in an organization.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    put: operations["actions/set-custom-labels-for-self-hosted-runner-for-org"];
-    /**
-     * Add custom labels to a self-hosted runner for an organization
-     * @description Add custom labels to a self-hosted runner configured in an organization.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    post: operations["actions/add-custom-labels-to-self-hosted-runner-for-org"];
-    /**
-     * Remove all custom labels from a self-hosted runner for an organization
-     * @description Remove all custom labels from a self-hosted runner configured in an
-     * organization. Returns the remaining read-only labels from the runner.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    delete: operations["actions/remove-all-custom-labels-from-self-hosted-runner-for-org"];
-  };
-  "/orgs/{org}/actions/runners/{runner_id}/labels/{name}": {
-    /**
-     * Remove a custom label from a self-hosted runner for an organization
-     * @description Remove a custom label from a self-hosted runner configured
-     * in an organization. Returns the remaining labels from the runner.
-     *
-     * This endpoint returns a `404 Not Found` status if the custom label is not
-     * present on the runner.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    delete: operations["actions/remove-custom-label-from-self-hosted-runner-for-org"];
-  };
-  "/orgs/{org}/actions/secrets": {
-    /**
-     * List organization secrets
-     * @description Lists all secrets available in an organization without revealing their
-     * encrypted values.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    get: operations["actions/list-org-secrets"];
-  };
-  "/orgs/{org}/actions/secrets/public-key": {
-    /**
-     * Get an organization public key
-     * @description Gets your public key, which you need to encrypt secrets. You need to
-     * encrypt a secret before you can create or update secrets.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    get: operations["actions/get-org-public-key"];
-  };
-  "/orgs/{org}/actions/secrets/{secret_name}": {
-    /**
-     * Get an organization secret
-     * @description Gets a single organization secret without revealing its encrypted value.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    get: operations["actions/get-org-secret"];
-    /**
-     * Create or update an organization secret
-     * @description Creates or updates an organization secret with an encrypted value. Encrypt your secret using
-     * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access
-     * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to
-     * use this endpoint.
-     *
-     * #### Example encrypting a secret using Node.js
-     *
-     * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library.
-     *
-     * ```
-     * const sodium = require('tweetsodium');
-     *
-     * const key = "base64-encoded-public-key";
-     * const value = "plain-text-secret";
-     *
-     * // Convert the message and key to Uint8Array's (Buffer implements that interface)
-     * const messageBytes = Buffer.from(value);
-     * const keyBytes = Buffer.from(key, 'base64');
-     *
-     * // Encrypt using LibSodium.
-     * const encryptedBytes = sodium.seal(messageBytes, keyBytes);
-     *
-     * // Base64 the encrypted secret
-     * const encrypted = Buffer.from(encryptedBytes).toString('base64');
-     *
-     * console.log(encrypted);
-     * ```
-     *
-     *
-     * #### Example encrypting a secret using Python
-     *
-     * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3.
-     *
-     * ```
-     * from base64 import b64encode
-     * from nacl import encoding, public
-     *
-     * def encrypt(public_key: str, secret_value: str) -> str:
-     *   """Encrypt a Unicode string using the public key."""
-     *   public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder())
-     *   sealed_box = public.SealedBox(public_key)
-     *   encrypted = sealed_box.encrypt(secret_value.encode("utf-8"))
-     *   return b64encode(encrypted).decode("utf-8")
-     * ```
-     *
-     * #### Example encrypting a secret using C#
-     *
-     * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package.
-     *
-     * ```
-     * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret");
-     * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU=");
-     *
-     * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);
-     *
-     * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));
-     * ```
-     *
-     * #### Example encrypting a secret using Ruby
-     *
-     * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem.
-     *
-     * ```ruby
-     * require "rbnacl"
-     * require "base64"
-     *
-     * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=")
-     * public_key = RbNaCl::PublicKey.new(key)
-     *
-     * box = RbNaCl::Boxes::Sealed.from_public_key(public_key)
-     * encrypted_secret = box.encrypt("my_secret")
-     *
-     * # Print the base64 encoded secret
-     * puts Base64.strict_encode64(encrypted_secret)
-     * ```
-     */
-    put: operations["actions/create-or-update-org-secret"];
-    /**
-     * Delete an organization secret
-     * @description Deletes a secret in an organization using the secret name.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    delete: operations["actions/delete-org-secret"];
-  };
-  "/orgs/{org}/actions/secrets/{secret_name}/repositories": {
-    /**
-     * List selected repositories for an organization secret
-     * @description Lists all repositories that have been selected when the `visibility`
-     * for repository access to a secret is set to `selected`.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    get: operations["actions/list-selected-repos-for-org-secret"];
-    /**
-     * Set selected repositories for an organization secret
-     * @description Replaces all repositories for an organization secret when the `visibility`
-     * for repository access is set to `selected`. The visibility is set when you [Create
-     * or update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret).
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    put: operations["actions/set-selected-repos-for-org-secret"];
-  };
-  "/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": {
-    /**
-     * Add selected repository to an organization secret
-     * @description Adds a repository to an organization secret when the `visibility` for
-     * repository access is set to `selected`. The visibility is set when you [Create or
-     * update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret).
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    put: operations["actions/add-selected-repo-to-org-secret"];
-    /**
-     * Remove selected repository from an organization secret
-     * @description Removes a repository from an organization secret when the `visibility`
-     * for repository access is set to `selected`. The visibility is set when you [Create
-     * or update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret).
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    delete: operations["actions/remove-selected-repo-from-org-secret"];
-  };
-  "/orgs/{org}/actions/variables": {
-    /**
-     * List organization variables
-     * @description Lists all organization variables.
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `organization_actions_variables:read` organization permission to use this endpoint. Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    get: operations["actions/list-org-variables"];
-    /**
-     * Create an organization variable
-     * @description Creates an organization variable that you can reference in a GitHub Actions workflow.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    post: operations["actions/create-org-variable"];
-  };
-  "/orgs/{org}/actions/variables/{name}": {
-    /**
-     * Get an organization variable
-     * @description Gets a specific variable in an organization.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `organization_actions_variables:read` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    get: operations["actions/get-org-variable"];
-    /**
-     * Delete an organization variable
-     * @description Deletes an organization variable using the variable name.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    delete: operations["actions/delete-org-variable"];
-    /**
-     * Update an organization variable
-     * @description Updates an organization variable that you can reference in a GitHub Actions workflow.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    patch: operations["actions/update-org-variable"];
-  };
-  "/orgs/{org}/actions/variables/{name}/repositories": {
-    /**
-     * List selected repositories for an organization variable
-     * @description Lists all repositories that can access an organization variable
-     * that is available to selected repositories.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `organization_actions_variables:read` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    get: operations["actions/list-selected-repos-for-org-variable"];
-    /**
-     * Set selected repositories for an organization variable
-     * @description Replaces all repositories for an organization variable that is available
-     * to selected repositories. Organization variables that are available to selected
-     * repositories have their `visibility` field set to `selected`.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this
-     * endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    put: operations["actions/set-selected-repos-for-org-variable"];
-  };
-  "/orgs/{org}/actions/variables/{name}/repositories/{repository_id}": {
-    /**
-     * Add selected repository to an organization variable
-     * @description Adds a repository to an organization variable that is available to selected repositories.
-     * Organization variables that are available to selected repositories have their `visibility` field set to `selected`.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    put: operations["actions/add-selected-repo-to-org-variable"];
-    /**
-     * Remove selected repository from an organization variable
-     * @description Removes a repository from an organization variable that is
-     * available to selected repositories. Organization variables that are available to
-     * selected repositories have their `visibility` field set to `selected`.
-     *
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    delete: operations["actions/remove-selected-repo-from-org-variable"];
-  };
-  "/orgs/{org}/blocks": {
-    /**
-     * List users blocked by an organization
-     * @description List the users blocked by an organization.
-     */
-    get: operations["orgs/list-blocked-users"];
-  };
-  "/orgs/{org}/blocks/{username}": {
-    /**
-     * Check if a user is blocked by an organization
-     * @description Returns a 204 if the given user is blocked by the given organization. Returns a 404 if the organization is not blocking the user, or if the user account has been identified as spam by GitHub.
-     */
-    get: operations["orgs/check-blocked-user"];
-    /**
-     * Block a user from an organization
-     * @description Blocks the given user on behalf of the specified organization and returns a 204. If the organization cannot block the given user a 422 is returned.
-     */
-    put: operations["orgs/block-user"];
-    /**
-     * Unblock a user from an organization
-     * @description Unblocks the given user on behalf of the specified organization.
-     */
-    delete: operations["orgs/unblock-user"];
-  };
-  "/orgs/{org}/code-scanning/alerts": {
-    /**
-     * List code scanning alerts for an organization
-     * @description Lists code scanning alerts for the default branch for all eligible repositories in an organization. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-     *
-     * To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.
-     *
-     * For public repositories, you may instead use the `public_repo` scope.
-     *
-     * GitHub Apps must have the `security_events` read permission to use this endpoint.
-     */
-    get: operations["code-scanning/list-alerts-for-org"];
-  };
-  "/orgs/{org}/codespaces": {
-    /**
-     * List codespaces for the organization
-     * @description Lists the codespaces associated to a specified organization.
-     *
-     * You must authenticate using an access token with the `admin:org` scope or the `Organization codespaces` read permission to use this endpoint.
-     */
-    get: operations["codespaces/list-in-organization"];
-  };
-  "/orgs/{org}/codespaces/access": {
-    /**
-     * Manage access control for organization codespaces
-     * @deprecated
-     * @description Sets which users can access codespaces in an organization. This is synonymous with granting or revoking codespaces access permissions for users according to the visibility.
-     * You must authenticate using an access token with the `admin:org` scope or the `Organization codespaces settings` write permission to use this endpoint.
-     */
-    put: operations["codespaces/set-codespaces-access"];
-  };
-  "/orgs/{org}/codespaces/access/selected_users": {
-    /**
-     * Add users to Codespaces access for an organization
-     * @deprecated
-     * @description Codespaces for the specified users will be billed to the organization.
-     *
-     * To use this endpoint, the access settings for the organization must be set to `selected_members`.
-     * For information on how to change this setting, see "[Manage access control for organization codespaces](https://docs.github.com/rest/codespaces/organizations#manage-access-control-for-organization-codespaces)."
-     *
-     * You must authenticate using an access token with the `admin:org` scope or the `Organization codespaces settings` write permission to use this endpoint.
-     */
-    post: operations["codespaces/set-codespaces-access-users"];
-    /**
-     * Remove users from Codespaces access for an organization
-     * @deprecated
-     * @description Codespaces for the specified users will no longer be billed to the organization.
-     *
-     * To use this endpoint, the access settings for the organization must be set to `selected_members`.
-     * For information on how to change this setting, see "[Manage access control for organization codespaces](https://docs.github.com/rest/codespaces/organizations#manage-access-control-for-organization-codespaces)."
-     *
-     * You must authenticate using an access token with the `admin:org` scope or the `Organization codespaces settings` write permission to use this endpoint.
-     */
-    delete: operations["codespaces/delete-codespaces-access-users"];
-  };
-  "/orgs/{org}/codespaces/secrets": {
-    /**
-     * List organization secrets
-     * @description Lists all Codespaces secrets available at the organization-level without revealing their encrypted values.
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     */
-    get: operations["codespaces/list-org-secrets"];
-  };
-  "/orgs/{org}/codespaces/secrets/public-key": {
-    /**
-     * Get an organization public key
-     * @description Gets a public key for an organization, which is required in order to encrypt secrets. You need to encrypt the value of a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     */
-    get: operations["codespaces/get-org-public-key"];
-  };
-  "/orgs/{org}/codespaces/secrets/{secret_name}": {
-    /**
-     * Get an organization secret
-     * @description Gets an organization secret without revealing its encrypted value.
-     * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     */
-    get: operations["codespaces/get-org-secret"];
-    /**
-     * Create or update an organization secret
-     * @description Creates or updates an organization secret with an encrypted value. Encrypt your secret using
-     * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-     *
-     * You must authenticate using an access
-     * token with the `admin:org` scope to use this endpoint.
-     */
-    put: operations["codespaces/create-or-update-org-secret"];
-    /**
-     * Delete an organization secret
-     * @description Deletes an organization secret using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     */
-    delete: operations["codespaces/delete-org-secret"];
-  };
-  "/orgs/{org}/codespaces/secrets/{secret_name}/repositories": {
-    /**
-     * List selected repositories for an organization secret
-     * @description Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     */
-    get: operations["codespaces/list-selected-repos-for-org-secret"];
-    /**
-     * Set selected repositories for an organization secret
-     * @description Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     */
-    put: operations["codespaces/set-selected-repos-for-org-secret"];
-  };
-  "/orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}": {
-    /**
-     * Add selected repository to an organization secret
-     * @description Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     */
-    put: operations["codespaces/add-selected-repo-to-org-secret"];
-    /**
-     * Remove selected repository from an organization secret
-     * @description Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-     */
-    delete: operations["codespaces/remove-selected-repo-from-org-secret"];
-  };
-  "/orgs/{org}/copilot/billing": {
-    /**
-     * Get Copilot for Business seat information and settings for an organization
-     * @description **Note**: This endpoint is in beta and is subject to change.
-     *
-     * Gets information about an organization's Copilot for Business subscription, including seat breakdown
-     * and code matching policies. To configure these settings, go to your organization's settings on GitHub.com.
-     * For more information, see "[Configuring GitHub Copilot settings in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization)".
-     *
-     * Only organization owners and members with admin permissions can configure and view details about the organization's Copilot for Business subscription. You must
-     * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-     */
-    get: operations["copilot/get-copilot-organization-details"];
-  };
-  "/orgs/{org}/copilot/billing/seats": {
-    /**
-     * List all Copilot for Business seat assignments for an organization
-     * @description **Note**: This endpoint is in beta and is subject to change.
-     *
-     * Lists all Copilot for Business seat assignments for an organization that are currently being billed (either active or pending cancellation at the start of the next billing cycle).
-     *
-     * Only organization owners and members with admin permissions can configure and view details about the organization's Copilot for Business subscription. You must
-     * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-     */
-    get: operations["copilot/list-copilot-seats"];
-  };
-  "/orgs/{org}/copilot/billing/selected_teams": {
-    /**
-     * Add teams to the Copilot for Business subscription for an organization
-     * @description **Note**: This endpoint is in beta and is subject to change.
-     *
-     *  Purchases a GitHub Copilot for Business seat for all users within each specified team.
-     *  The organization will be billed accordingly. For more information about Copilot for Business pricing, see "[About billing for GitHub Copilot for Business](https://docs.github.com/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#pricing-for-github-copilot-for-business)".
-     *
-     *  Only organization owners and members with admin permissions can configure GitHub Copilot in their organization. You must
-     *  authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-     *
-     *  In order for an admin to use this endpoint, the organization must have a Copilot for Business subscription and a configured suggestion matching policy.
-     *  For more information about setting up a Copilot for Business subscription, see "[Setting up a Copilot for Business subscription for your organization](https://docs.github.com/billing/managing-billing-for-github-copilot/managing-your-github-copilot-subscription-for-your-organization-or-enterprise#setting-up-a-copilot-for-business-subscription-for-your-organization)".
-     *  For more information about setting a suggestion matching policy, see "[Configuring suggestion matching policies for GitHub Copilot in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization#configuring-suggestion-matching-policies-for-github-copilot-in-your-organization)".
-     */
-    post: operations["copilot/add-copilot-for-business-seats-for-teams"];
-    /**
-     * Remove teams from the Copilot for Business subscription for an organization
-     * @description **Note**: This endpoint is in beta and is subject to change.
-     *
-     * Cancels the Copilot for Business seat assignment for all members of each team specified.
-     * This will cause the members of the specified team(s) to lose access to GitHub Copilot at the end of the current billing cycle, and the organization will not be billed further for those users.
-     *
-     * For more information about Copilot for Business pricing, see "[About billing for GitHub Copilot for Business](https://docs.github.com/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#pricing-for-github-copilot-for-business)".
-     *
-     * For more information about disabling access to Copilot for Business, see "[Disabling access to GitHub Copilot for specific users in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization#disabling-access-to-github-copilot-for-specific-users-in-your-organization)".
-     *
-     * Only organization owners and members with admin permissions can configure GitHub Copilot in their organization. You must
-     * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-     */
-    delete: operations["copilot/cancel-copilot-seat-assignment-for-teams"];
-  };
-  "/orgs/{org}/copilot/billing/selected_users": {
-    /**
-     * Add users to the Copilot for Business subscription for an organization
-     * @description **Note**: This endpoint is in beta and is subject to change.
-     *
-     * Purchases a GitHub Copilot for Business seat for each user specified.
-     * The organization will be billed accordingly. For more information about Copilot for Business pricing, see "[About billing for GitHub Copilot for Business](https://docs.github.com/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#pricing-for-github-copilot-for-business)".
-     *
-     * Only organization owners and members with admin permissions can configure GitHub Copilot in their organization. You must
-     * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-     *
-     * In order for an admin to use this endpoint, the organization must have a Copilot for Business subscription and a configured suggestion matching policy.
-     * For more information about setting up a Copilot for Business subscription, see "[Setting up a Copilot for Business subscription for your organization](https://docs.github.com/billing/managing-billing-for-github-copilot/managing-your-github-copilot-subscription-for-your-organization-or-enterprise#setting-up-a-copilot-for-business-subscription-for-your-organization)".
-     * For more information about setting a suggestion matching policy, see "[Configuring suggestion matching policies for GitHub Copilot in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization#configuring-suggestion-matching-policies-for-github-copilot-in-your-organization)".
-     */
-    post: operations["copilot/add-copilot-for-business-seats-for-users"];
-    /**
-     * Remove users from the Copilot for Business subscription for an organization
-     * @description **Note**: This endpoint is in beta and is subject to change.
-     *
-     * Cancels the Copilot for Business seat assignment for each user specified.
-     * This will cause the specified users to lose access to GitHub Copilot at the end of the current billing cycle, and the organization will not be billed further for those users.
-     *
-     * For more information about Copilot for Business pricing, see "[About billing for GitHub Copilot for Business](https://docs.github.com/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#pricing-for-github-copilot-for-business)"
-     *
-     * For more information about disabling access to Copilot for Business, see "[Disabling access to GitHub Copilot for specific users in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization#disabling-access-to-github-copilot-for-specific-users-in-your-organization)".
-     *
-     * Only organization owners and members with admin permissions can configure GitHub Copilot in their organization. You must
-     * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-     */
-    delete: operations["copilot/cancel-copilot-seat-assignment-for-users"];
-  };
-  "/orgs/{org}/dependabot/alerts": {
-    /**
-     * List Dependabot alerts for an organization
-     * @description Lists Dependabot alerts for an organization.
-     *
-     * To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.
-     *
-     * For public repositories, you may instead use the `public_repo` scope.
-     *
-     * GitHub Apps must have **Dependabot alerts** read permission to use this endpoint.
-     */
-    get: operations["dependabot/list-alerts-for-org"];
-  };
-  "/orgs/{org}/dependabot/secrets": {
-    /**
-     * List organization secrets
-     * @description Lists all secrets available in an organization without revealing their encrypted values. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-     */
-    get: operations["dependabot/list-org-secrets"];
-  };
-  "/orgs/{org}/dependabot/secrets/public-key": {
-    /**
-     * Get an organization public key
-     * @description Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-     */
-    get: operations["dependabot/get-org-public-key"];
-  };
-  "/orgs/{org}/dependabot/secrets/{secret_name}": {
-    /**
-     * Get an organization secret
-     * @description Gets a single organization secret without revealing its encrypted value. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-     */
-    get: operations["dependabot/get-org-secret"];
-    /**
-     * Create or update an organization secret
-     * @description Creates or updates an organization secret with an encrypted value. Encrypt your secret using
-     * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access
-     * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization
-     * permission to use this endpoint.
-     *
-     * #### Example encrypting a secret using Node.js
-     *
-     * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library.
-     *
-     * ```
-     * const sodium = require('tweetsodium');
-     *
-     * const key = "base64-encoded-public-key";
-     * const value = "plain-text-secret";
-     *
-     * // Convert the message and key to Uint8Array's (Buffer implements that interface)
-     * const messageBytes = Buffer.from(value);
-     * const keyBytes = Buffer.from(key, 'base64');
-     *
-     * // Encrypt using LibSodium.
-     * const encryptedBytes = sodium.seal(messageBytes, keyBytes);
-     *
-     * // Base64 the encrypted secret
-     * const encrypted = Buffer.from(encryptedBytes).toString('base64');
-     *
-     * console.log(encrypted);
-     * ```
-     *
-     *
-     * #### Example encrypting a secret using Python
-     *
-     * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3.
-     *
-     * ```
-     * from base64 import b64encode
-     * from nacl import encoding, public
-     *
-     * def encrypt(public_key: str, secret_value: str) -> str:
-     *   """Encrypt a Unicode string using the public key."""
-     *   public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder())
-     *   sealed_box = public.SealedBox(public_key)
-     *   encrypted = sealed_box.encrypt(secret_value.encode("utf-8"))
-     *   return b64encode(encrypted).decode("utf-8")
-     * ```
-     *
-     * #### Example encrypting a secret using C#
-     *
-     * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package.
-     *
-     * ```
-     * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret");
-     * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU=");
-     *
-     * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);
-     *
-     * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));
-     * ```
-     *
-     * #### Example encrypting a secret using Ruby
-     *
-     * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem.
-     *
-     * ```ruby
-     * require "rbnacl"
-     * require "base64"
-     *
-     * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=")
-     * public_key = RbNaCl::PublicKey.new(key)
-     *
-     * box = RbNaCl::Boxes::Sealed.from_public_key(public_key)
-     * encrypted_secret = box.encrypt("my_secret")
-     *
-     * # Print the base64 encoded secret
-     * puts Base64.strict_encode64(encrypted_secret)
-     * ```
-     */
-    put: operations["dependabot/create-or-update-org-secret"];
-    /**
-     * Delete an organization secret
-     * @description Deletes a secret in an organization using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-     */
-    delete: operations["dependabot/delete-org-secret"];
-  };
-  "/orgs/{org}/dependabot/secrets/{secret_name}/repositories": {
-    /**
-     * List selected repositories for an organization secret
-     * @description Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-     */
-    get: operations["dependabot/list-selected-repos-for-org-secret"];
-    /**
-     * Set selected repositories for an organization secret
-     * @description Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-     */
-    put: operations["dependabot/set-selected-repos-for-org-secret"];
-  };
-  "/orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}": {
-    /**
-     * Add selected repository to an organization secret
-     * @description Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-     */
-    put: operations["dependabot/add-selected-repo-to-org-secret"];
-    /**
-     * Remove selected repository from an organization secret
-     * @description Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-     */
-    delete: operations["dependabot/remove-selected-repo-from-org-secret"];
-  };
-  "/orgs/{org}/docker/conflicts": {
-    /**
-     * Get list of conflicting packages during Docker migration for organization
-     * @description Lists all packages that are in a specific organization, are readable by the requesting user, and that encountered a conflict during a Docker migration.
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` scope.
-     */
-    get: operations["packages/list-docker-migration-conflicting-packages-for-organization"];
-  };
-  "/orgs/{org}/events": {
-    /** List public organization events */
-    get: operations["activity/list-public-org-events"];
-  };
-  "/orgs/{org}/failed_invitations": {
-    /**
-     * List failed organization invitations
-     * @description The return hash contains `failed_at` and `failed_reason` fields which represent the time at which the invitation failed and the reason for the failure.
-     */
-    get: operations["orgs/list-failed-invitations"];
-  };
-  "/orgs/{org}/hooks": {
-    /** List organization webhooks */
-    get: operations["orgs/list-webhooks"];
-    /**
-     * Create an organization webhook
-     * @description Here's how you can create a hook that posts payloads in JSON format:
-     */
-    post: operations["orgs/create-webhook"];
-  };
-  "/orgs/{org}/hooks/{hook_id}": {
-    /**
-     * Get an organization webhook
-     * @description Returns a webhook configured in an organization. To get only the webhook `config` properties, see "[Get a webhook configuration for an organization](/rest/orgs/webhooks#get-a-webhook-configuration-for-an-organization)."
-     */
-    get: operations["orgs/get-webhook"];
-    /** Delete an organization webhook */
-    delete: operations["orgs/delete-webhook"];
-    /**
-     * Update an organization webhook
-     * @description Updates a webhook configured in an organization. When you update a webhook, the `secret` will be overwritten. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for an organization](/rest/orgs/webhooks#update-a-webhook-configuration-for-an-organization)."
-     */
-    patch: operations["orgs/update-webhook"];
-  };
-  "/orgs/{org}/hooks/{hook_id}/config": {
-    /**
-     * Get a webhook configuration for an organization
-     * @description Returns the webhook configuration for an organization. To get more information about the webhook, including the `active` state and `events`, use "[Get an organization webhook ](/rest/orgs/webhooks#get-an-organization-webhook)."
-     *
-     * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:read` permission.
-     */
-    get: operations["orgs/get-webhook-config-for-org"];
-    /**
-     * Update a webhook configuration for an organization
-     * @description 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 ](/rest/orgs/webhooks#update-an-organization-webhook)."
-     *
-     * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:write` permission.
-     */
-    patch: operations["orgs/update-webhook-config-for-org"];
-  };
-  "/orgs/{org}/hooks/{hook_id}/deliveries": {
-    /**
-     * List deliveries for an organization webhook
-     * @description Returns a list of webhook deliveries for a webhook configured in an organization.
-     */
-    get: operations["orgs/list-webhook-deliveries"];
-  };
-  "/orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}": {
-    /**
-     * Get a webhook delivery for an organization webhook
-     * @description Returns a delivery for a webhook configured in an organization.
-     */
-    get: operations["orgs/get-webhook-delivery"];
-  };
-  "/orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts": {
-    /**
-     * Redeliver a delivery for an organization webhook
-     * @description Redeliver a delivery for a webhook configured in an organization.
-     */
-    post: operations["orgs/redeliver-webhook-delivery"];
-  };
-  "/orgs/{org}/hooks/{hook_id}/pings": {
-    /**
-     * Ping an organization webhook
-     * @description This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook.
-     */
-    post: operations["orgs/ping-webhook"];
-  };
-  "/orgs/{org}/installation": {
-    /**
-     * Get an organization installation for the authenticated app
-     * @description Enables an authenticated GitHub App to find the organization's installation information.
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    get: operations["apps/get-org-installation"];
-  };
-  "/orgs/{org}/installations": {
-    /**
-     * List app installations for an organization
-     * @description Lists all GitHub Apps in an organization. The installation count includes all GitHub Apps installed on repositories in the organization. You must be an organization owner with `admin:read` scope to use this endpoint.
-     */
-    get: operations["orgs/list-app-installations"];
-  };
-  "/orgs/{org}/interaction-limits": {
-    /**
-     * Get interaction restrictions for an organization
-     * @description Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response.
-     */
-    get: operations["interactions/get-restrictions-for-org"];
-    /**
-     * Set interaction restrictions for an organization
-     * @description Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization.
-     */
-    put: operations["interactions/set-restrictions-for-org"];
-    /**
-     * Remove interaction restrictions for an organization
-     * @description Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions.
-     */
-    delete: operations["interactions/remove-restrictions-for-org"];
-  };
-  "/orgs/{org}/invitations": {
-    /**
-     * List pending organization invitations
-     * @description The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, or `hiring_manager`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.
-     */
-    get: operations["orgs/list-pending-invitations"];
-    /**
-     * Create an organization invitation
-     * @description Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner.
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     */
-    post: operations["orgs/create-invitation"];
-  };
-  "/orgs/{org}/invitations/{invitation_id}": {
-    /**
-     * Cancel an organization invitation
-     * @description Cancel an organization invitation. In order to cancel an organization invitation, the authenticated user must be an organization owner.
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications).
-     */
-    delete: operations["orgs/cancel-invitation"];
-  };
-  "/orgs/{org}/invitations/{invitation_id}/teams": {
-    /**
-     * List organization invitation teams
-     * @description List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner.
-     */
-    get: operations["orgs/list-invitation-teams"];
-  };
-  "/orgs/{org}/issues": {
-    /**
-     * List organization issues assigned to the authenticated user
-     * @description List issues in an organization assigned to the authenticated user.
-     *
-     * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-     * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-     * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-     * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-     */
-    get: operations["issues/list-for-org"];
-  };
-  "/orgs/{org}/members": {
-    /**
-     * List organization members
-     * @description List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned.
-     */
-    get: operations["orgs/list-members"];
-  };
-  "/orgs/{org}/members/{username}": {
-    /**
-     * Check organization membership for a user
-     * @description Check if a user is, publicly or privately, a member of the organization.
-     */
-    get: operations["orgs/check-membership-for-user"];
-    /**
-     * Remove an organization member
-     * @description Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories.
-     */
-    delete: operations["orgs/remove-member"];
-  };
-  "/orgs/{org}/members/{username}/codespaces": {
-    /**
-     * List codespaces for a user in organization
-     * @description Lists the codespaces that a member of an organization has for repositories in that organization.
-     *
-     * You must authenticate using an access token with the `admin:org` scope or the `Organization codespaces` read permission to use this endpoint.
-     */
-    get: operations["codespaces/get-codespaces-for-user-in-org"];
-  };
-  "/orgs/{org}/members/{username}/codespaces/{codespace_name}": {
-    /**
-     * Delete a codespace from the organization
-     * @description Deletes a user's codespace.
-     *
-     * To use this endpoint you must authenticate using one of the following methods:
-     *
-     * - An access token with the `admin:org` scope
-     * - An access token with write permissions for `Codespaces` on the specific repository and write permissions for `Organization codespaces`
-     */
-    delete: operations["codespaces/delete-from-organization"];
-  };
-  "/orgs/{org}/members/{username}/codespaces/{codespace_name}/stop": {
-    /**
-     * Stop a codespace for an organization user
-     * @description Stops a user's codespace.
-     *
-     * To use this endpoint you must authenticate using one of the following methods:
-     *
-     * - An access token with the `admin:org` scope
-     * - An access token with write permissions for `Codespaces lifecycle admin` on the specific repository and write permissions for `Organization codespaces`
-     */
-    post: operations["codespaces/stop-in-organization"];
-  };
-  "/orgs/{org}/members/{username}/copilot": {
-    /**
-     * Get Copilot for Business seat assignment details for a user
-     * @description **Note**: This endpoint is in beta and is subject to change.
-     *
-     * Gets the GitHub Copilot for Business seat assignment details for a member of an organization who currently has access to GitHub Copilot.
-     *
-     * Organization owners and members with admin permissions can view GitHub Copilot seat assignment details for members in their organization. You must authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-     */
-    get: operations["copilot/get-copilot-seat-details-for-user"];
-  };
-  "/orgs/{org}/memberships/{username}": {
-    /**
-     * Get organization membership for a user
-     * @description In order to get a user's membership with an organization, the authenticated user must be an organization member. The `state` parameter in the response can be used to identify the user's membership status.
-     */
-    get: operations["orgs/get-membership-for-user"];
-    /**
-     * Set organization membership for a user
-     * @description Only authenticated organization owners can add a member to the organization or update the member's role.
-     *
-     * *   If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/orgs/members#get-organization-membership-for-a-user) will be `pending` until they accept the invitation.
-     *
-     * *   Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent.
-     *
-     * **Rate limits**
-     *
-     * To prevent abuse, the authenticated user is limited to 50 organization invitations per 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period.
-     */
-    put: operations["orgs/set-membership-for-user"];
-    /**
-     * Remove organization membership for a user
-     * @description In order to remove a user's membership with an organization, the authenticated user must be an organization owner.
-     *
-     * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases.
-     */
-    delete: operations["orgs/remove-membership-for-user"];
-  };
-  "/orgs/{org}/migrations": {
-    /**
-     * List organization migrations
-     * @description Lists the most recent migrations, including both exports (which can be started through the REST API) and imports (which cannot be started using the REST API).
-     *
-     * A list of `repositories` is only returned for export migrations.
-     */
-    get: operations["migrations/list-for-org"];
-    /**
-     * Start an organization migration
-     * @description Initiates the generation of a migration archive.
-     */
-    post: operations["migrations/start-for-org"];
-  };
-  "/orgs/{org}/migrations/{migration_id}": {
-    /**
-     * Get an organization migration status
-     * @description Fetches the status of a migration.
-     *
-     * The `state` of a migration can be one of the following values:
-     *
-     * *   `pending`, which means the migration hasn't started yet.
-     * *   `exporting`, which means the migration is in progress.
-     * *   `exported`, which means the migration finished successfully.
-     * *   `failed`, which means the migration failed.
-     */
-    get: operations["migrations/get-status-for-org"];
-  };
-  "/orgs/{org}/migrations/{migration_id}/archive": {
-    /**
-     * Download an organization migration archive
-     * @description Fetches the URL to a migration archive.
-     */
-    get: operations["migrations/download-archive-for-org"];
-    /**
-     * Delete an organization migration archive
-     * @description Deletes a previous migration archive. Migration archives are automatically deleted after seven days.
-     */
-    delete: operations["migrations/delete-archive-for-org"];
-  };
-  "/orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock": {
-    /**
-     * Unlock an organization repository
-     * @description Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://docs.github.com/rest/repos/repos#delete-a-repository) when the migration is complete and you no longer need the source data.
-     */
-    delete: operations["migrations/unlock-repo-for-org"];
-  };
-  "/orgs/{org}/migrations/{migration_id}/repositories": {
-    /**
-     * List repositories in an organization migration
-     * @description List all the repositories for this organization migration.
-     */
-    get: operations["migrations/list-repos-for-org"];
-  };
-  "/orgs/{org}/outside_collaborators": {
-    /**
-     * List outside collaborators for an organization
-     * @description List all users who are outside collaborators of an organization.
-     */
-    get: operations["orgs/list-outside-collaborators"];
-  };
-  "/orgs/{org}/outside_collaborators/{username}": {
-    /**
-     * Convert an organization member to outside collaborator
-     * @description When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://docs.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)". Converting an organization member to an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)."
-     */
-    put: operations["orgs/convert-member-to-outside-collaborator"];
-    /**
-     * Remove outside collaborator from an organization
-     * @description Removing a user from this list will remove them from all the organization's repositories.
-     */
-    delete: operations["orgs/remove-outside-collaborator"];
-  };
-  "/orgs/{org}/packages": {
-    /**
-     * List packages for an organization
-     * @description Lists packages in an organization readable by the user.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    get: operations["packages/list-packages-for-organization"];
-  };
-  "/orgs/{org}/packages/{package_type}/{package_name}": {
-    /**
-     * Get a package for an organization
-     * @description Gets a specific package in an organization.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    get: operations["packages/get-package-for-organization"];
-    /**
-     * Delete a package for an organization
-     * @description Deletes an entire package in an organization. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance.
-     *
-     * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `delete:packages` scopes. In addition:
-     * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package you want to delete. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-     */
-    delete: operations["packages/delete-package-for-org"];
-  };
-  "/orgs/{org}/packages/{package_type}/{package_name}/restore": {
-    /**
-     * Restore a package for an organization
-     * @description Restores an entire package in an organization.
-     *
-     * You can restore a deleted package under the following conditions:
-     *   - The package was deleted within the last 30 days.
-     *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-     *
-     * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `write:packages` scopes. In addition:
-     * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package you want to restore. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-     */
-    post: operations["packages/restore-package-for-org"];
-  };
-  "/orgs/{org}/packages/{package_type}/{package_name}/versions": {
-    /**
-     * List package versions for a package owned by an organization
-     * @description Lists package versions for a package owned by an organization.
-     *
-     * If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    get: operations["packages/get-all-package-versions-for-package-owned-by-org"];
-  };
-  "/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}": {
-    /**
-     * Get a package version for an organization
-     * @description Gets a specific package version in an organization.
-     *
-     * You must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    get: operations["packages/get-package-version-for-organization"];
-    /**
-     * Delete package version for an organization
-     * @description Deletes a specific package version in an organization. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance.
-     *
-     * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `delete:packages` scopes. In addition:
-     * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package whose version you want to delete. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-     */
-    delete: operations["packages/delete-package-version-for-org"];
-  };
-  "/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": {
-    /**
-     * Restore package version for an organization
-     * @description Restores a specific package version in an organization.
-     *
-     * You can restore a deleted package under the following conditions:
-     *   - The package was deleted within the last 30 days.
-     *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-     *
-     * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `write:packages` scopes. In addition:
-     * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package whose version you want to restore. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-     */
-    post: operations["packages/restore-package-version-for-org"];
-  };
-  "/orgs/{org}/personal-access-token-requests": {
-    /**
-     * List requests to access organization resources with fine-grained personal access tokens
-     * @description Lists requests from organization members to access organization resources with a fine-grained personal access token. Only GitHub Apps can call this API,
-     * using the `organization_personal_access_token_requests: read` permission.
-     *
-     * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-     */
-    get: operations["orgs/list-pat-grant-requests"];
-    /**
-     * Review requests to access organization resources with fine-grained personal access tokens
-     * @description Approves or denies multiple pending requests to access organization resources via a fine-grained personal access token. Only GitHub Apps can call this API,
-     * using the `organization_personal_access_token_requests: write` permission.
-     *
-     * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-     */
-    post: operations["orgs/review-pat-grant-requests-in-bulk"];
-  };
-  "/orgs/{org}/personal-access-token-requests/{pat_request_id}": {
-    /**
-     * Review a request to access organization resources with a fine-grained personal access token
-     * @description Approves or denies a pending request to access organization resources via a fine-grained personal access token. Only GitHub Apps can call this API,
-     * using the `organization_personal_access_token_requests: write` permission.
-     *
-     * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-     */
-    post: operations["orgs/review-pat-grant-request"];
-  };
-  "/orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories": {
-    /**
-     * List repositories requested to be accessed by a fine-grained personal access token
-     * @description Lists the repositories a fine-grained personal access token request is requesting access to. Only GitHub Apps can call this API,
-     * using the `organization_personal_access_token_requests: read` permission.
-     *
-     * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-     */
-    get: operations["orgs/list-pat-grant-request-repositories"];
-  };
-  "/orgs/{org}/personal-access-tokens": {
-    /**
-     * List fine-grained personal access tokens with access to organization resources
-     * @description Lists approved fine-grained personal access tokens owned by organization members that can access organization resources. Only GitHub Apps can call this API,
-     * using the `organization_personal_access_tokens: read` permission.
-     *
-     * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-     */
-    get: operations["orgs/list-pat-grants"];
-    /**
-     * Update the access to organization resources via fine-grained personal access tokens
-     * @description Updates the access organization members have to organization resources via fine-grained personal access tokens. Limited to revoking a token's existing access. Only GitHub Apps can call this API,
-     * using the `organization_personal_access_tokens: write` permission.
-     *
-     * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-     */
-    post: operations["orgs/update-pat-accesses"];
-  };
-  "/orgs/{org}/personal-access-tokens/{pat_id}": {
-    /**
-     * Update the access a fine-grained personal access token has to organization resources
-     * @description Updates the access an organization member has to organization resources via a fine-grained personal access token. Limited to revoking the token's existing access. Limited to revoking a token's existing access. Only GitHub Apps can call this API,
-     * using the `organization_personal_access_tokens: write` permission.
-     *
-     * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-     */
-    post: operations["orgs/update-pat-access"];
-  };
-  "/orgs/{org}/personal-access-tokens/{pat_id}/repositories": {
-    /**
-     * List repositories a fine-grained personal access token has access to
-     * @description Lists the repositories a fine-grained personal access token has access to. Only GitHub Apps can call this API,
-     * using the `organization_personal_access_tokens: read` permission.
-     *
-     * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-     */
-    get: operations["orgs/list-pat-grant-repositories"];
-  };
-  "/orgs/{org}/projects": {
-    /**
-     * List organization projects
-     * @description Lists the projects in an organization. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-     */
-    get: operations["projects/list-for-org"];
-    /**
-     * Create an organization project
-     * @description Creates an organization project board. Returns a `410 Gone` status if projects are disabled in the organization or if the organization does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-     */
-    post: operations["projects/create-for-org"];
-  };
-  "/orgs/{org}/properties/schema": {
-    /**
-     * Get all custom properties for an organization
-     * @description Gets all custom properties defined for an organization.
-     * You must be an organization owner to use this endpoint.
-     */
-    get: operations["orgs/get-all-custom-properties"];
-    /**
-     * Create or update custom properties for an organization
-     * @description Creates new or updates existing custom properties defined for an organization in a batch.
-     * Only organization owners (or users with the proper permissions granted by them) can update these properties
-     */
-    patch: operations["orgs/create-or-update-custom-properties"];
-  };
-  "/orgs/{org}/properties/schema/{custom_property_name}": {
-    /**
-     * Get a custom property for an organization
-     * @description Gets a custom property that is defined for an organization.
-     * You must be an organization owner to use this endpoint.
-     */
-    get: operations["orgs/get-custom-property"];
-    /**
-     * Create or update a custom property for an organization
-     * @description Creates a new or updates an existing custom property that is defined for an organization.
-     * You must be an organization owner to use this endpoint.
-     */
-    put: operations["orgs/create-or-update-custom-property"];
-    /**
-     * Remove a custom property for an organization
-     * @description Removes a custom property that is defined for an organization.
-     * You must be an organization owner to use this endpoint.
-     */
-    delete: operations["orgs/remove-custom-property"];
-  };
-  "/orgs/{org}/properties/values": {
-    /**
-     * List custom property values for organization repositories
-     * @description Lists organization repositories with all of their custom property values.
-     * Organization members can read these properties.
-     */
-    get: operations["orgs/list-custom-properties-values-for-repos"];
-    /**
-     * Create or update custom property values for organization repositories
-     * @description Create new or update existing custom property values for repositories in a batch that belong to an organization.
-     * Each target repository will have its custom property values updated to match the values provided in the request.
-     *
-     * A maximum of 30 repositories can be updated in a single request.
-     *
-     * Using a value of `null` for a custom property will remove or 'unset' the property value from the repository.
-     *
-     * Only organization owners (or users with the proper permissions granted by them) can update these properties
-     */
-    patch: operations["orgs/create-or-update-custom-properties-values-for-repos"];
-  };
-  "/orgs/{org}/public_members": {
-    /**
-     * List public organization members
-     * @description Members of an organization can choose to have their membership publicized or not.
-     */
-    get: operations["orgs/list-public-members"];
-  };
-  "/orgs/{org}/public_members/{username}": {
-    /**
-     * Check public organization membership for a user
-     * @description Check if the provided user is a public member of the organization.
-     */
-    get: operations["orgs/check-public-membership-for-user"];
-    /**
-     * Set public organization membership for the authenticated user
-     * @description The user can publicize their own membership. (A user cannot publicize the membership for another user.)
-     *
-     * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-     */
-    put: operations["orgs/set-public-membership-for-authenticated-user"];
-    /**
-     * Remove public organization membership for the authenticated user
-     * @description Removes the public membership for the authenticated user from the specified organization, unless public visibility is enforced by default.
-     */
-    delete: operations["orgs/remove-public-membership-for-authenticated-user"];
-  };
-  "/orgs/{org}/repos": {
-    /**
-     * List organization repositories
-     * @description Lists repositories for the specified organization.
-     *
-     * **Note:** In 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-     */
-    get: operations["repos/list-for-org"];
-    /**
-     * Create an organization repository
-     * @description Creates a new repository in the specified organization. The authenticated user must be a member of the organization.
-     *
-     * **OAuth scope requirements**
-     *
-     * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
-     *
-     * *   `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.
-     * *   `repo` scope to create a private repository
-     */
-    post: operations["repos/create-in-org"];
-  };
-  "/orgs/{org}/rulesets": {
-    /**
-     * Get all organization repository rulesets
-     * @description Get all the repository rulesets for an organization.
-     */
-    get: operations["repos/get-org-rulesets"];
-    /**
-     * Create an organization repository ruleset
-     * @description Create a repository ruleset for an organization.
-     */
-    post: operations["repos/create-org-ruleset"];
-  };
-  "/orgs/{org}/rulesets/rule-suites": {
-    /**
-     * List organization rule suites
-     * @description Lists suites of rule evaluations at the organization level.
-     * For more information, see "[Managing rulesets for repositories in your organization](https://docs.github.com/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#viewing-insights-for-rulesets)."
-     */
-    get: operations["repos/get-org-rule-suites"];
-  };
-  "/orgs/{org}/rulesets/rule-suites/{rule_suite_id}": {
-    /**
-     * Get an organization rule suite
-     * @description Gets information about a suite of rule evaluations from within an organization.
-     * For more information, see "[Managing rulesets for repositories in your organization](https://docs.github.com/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#viewing-insights-for-rulesets)."
-     */
-    get: operations["repos/get-org-rule-suite"];
-  };
-  "/orgs/{org}/rulesets/{ruleset_id}": {
-    /**
-     * Get an organization repository ruleset
-     * @description Get a repository ruleset for an organization.
-     */
-    get: operations["repos/get-org-ruleset"];
-    /**
-     * Update an organization repository ruleset
-     * @description Update a ruleset for an organization.
-     */
-    put: operations["repos/update-org-ruleset"];
-    /**
-     * Delete an organization repository ruleset
-     * @description Delete a ruleset for an organization.
-     */
-    delete: operations["repos/delete-org-ruleset"];
-  };
-  "/orgs/{org}/secret-scanning/alerts": {
-    /**
-     * List secret scanning alerts for an organization
-     * @description Lists secret scanning alerts for eligible repositories in an organization, from newest to oldest.
-     * To use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.
-     * For public repositories, you may instead use the `public_repo` scope.
-     *
-     * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.
-     */
-    get: operations["secret-scanning/list-alerts-for-org"];
-  };
-  "/orgs/{org}/security-advisories": {
-    /**
-     * List repository security advisories for an organization
-     * @description Lists repository security advisories for an organization.
-     *
-     * To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `repository_advisories:write` permission.
-     */
-    get: operations["security-advisories/list-org-repository-advisories"];
-  };
-  "/orgs/{org}/security-managers": {
-    /**
-     * List security manager teams
-     * @description Lists teams that are security managers for an organization. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-     *
-     * To use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the `read:org` scope.
-     *
-     * GitHub Apps must have the `administration` organization read permission to use this endpoint.
-     */
-    get: operations["orgs/list-security-manager-teams"];
-  };
-  "/orgs/{org}/security-managers/teams/{team_slug}": {
-    /**
-     * Add a security manager team
-     * @description Adds a team as a security manager for an organization. For more information, see "[Managing security for an organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization) for an organization."
-     *
-     * To use this endpoint, you must be an administrator for the organization, and you must use an access token with the `write:org` scope.
-     *
-     * GitHub Apps must have the `administration` organization read-write permission to use this endpoint.
-     */
-    put: operations["orgs/add-security-manager-team"];
-    /**
-     * Remove a security manager team
-     * @description Removes the security manager role from a team for an organization. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization) team from an organization."
-     *
-     * To use this endpoint, you must be an administrator for the organization, and you must use an access token with the `admin:org` scope.
-     *
-     * GitHub Apps must have the `administration` organization read-write permission to use this endpoint.
-     */
-    delete: operations["orgs/remove-security-manager-team"];
-  };
-  "/orgs/{org}/settings/billing/actions": {
-    /**
-     * Get GitHub Actions billing for an organization
-     * @description Gets the summary of the free and paid GitHub Actions minutes used.
-     *
-     * 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](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
-     *
-     * Access tokens must have the `repo` or `admin:org` scope.
-     */
-    get: operations["billing/get-github-actions-billing-org"];
-  };
-  "/orgs/{org}/settings/billing/packages": {
-    /**
-     * Get GitHub Packages billing for an organization
-     * @description Gets the free and paid storage used for GitHub Packages in gigabytes.
-     *
-     * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)."
-     *
-     * Access tokens must have the `repo` or `admin:org` scope.
-     */
-    get: operations["billing/get-github-packages-billing-org"];
-  };
-  "/orgs/{org}/settings/billing/shared-storage": {
-    /**
-     * Get shared storage billing for an organization
-     * @description Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages.
-     *
-     * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)."
-     *
-     * Access tokens must have the `repo` or `admin:org` scope.
-     */
-    get: operations["billing/get-shared-storage-billing-org"];
-  };
-  "/orgs/{org}/teams": {
-    /**
-     * List teams
-     * @description Lists all teams in an organization that are visible to the authenticated user.
-     */
-    get: operations["teams/list"];
-    /**
-     * Create a team
-     * @description To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://docs.github.com/articles/setting-team-creation-permissions-in-your-organization)."
-     *
-     * When you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see "[About teams](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/about-teams)".
-     */
-    post: operations["teams/create"];
-  };
-  "/orgs/{org}/teams/{team_slug}": {
-    /**
-     * Get a team by name
-     * @description Gets a team using the team's `slug`. To create the `slug`, GitHub replaces special characters in the `name` string, changes all words to lowercase, and replaces spaces with a `-` separator. For example, `"My TEam Näme"` would become `my-team-name`.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`.
-     */
-    get: operations["teams/get-by-name"];
-    /**
-     * Delete a team
-     * @description To delete a team, the authenticated user must be an organization owner or team maintainer.
-     *
-     * If you are an organization owner, deleting a parent team will delete all of its child teams as well.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`.
-     */
-    delete: operations["teams/delete-in-org"];
-    /**
-     * Update a team
-     * @description To edit a team, the authenticated user must either be an organization owner or a team maintainer.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`.
-     */
-    patch: operations["teams/update-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/discussions": {
-    /**
-     * List discussions
-     * @description List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions`.
-     */
-    get: operations["teams/list-discussions-in-org"];
-    /**
-     * Create a discussion
-     * @description Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions`.
-     */
-    post: operations["teams/create-discussion-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": {
-    /**
-     * Get a discussion
-     * @description Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`.
-     */
-    get: operations["teams/get-discussion-in-org"];
-    /**
-     * Delete a discussion
-     * @description Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`.
-     */
-    delete: operations["teams/delete-discussion-in-org"];
-    /**
-     * Update a discussion
-     * @description Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`.
-     */
-    patch: operations["teams/update-discussion-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": {
-    /**
-     * List discussion comments
-     * @description List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * **Note:** You 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`.
-     */
-    get: operations["teams/list-discussion-comments-in-org"];
-    /**
-     * Create a discussion comment
-     * @description Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     *
-     * **Note:** You 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`.
-     */
-    post: operations["teams/create-discussion-comment-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": {
-    /**
-     * Get a discussion comment
-     * @description Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * **Note:** You 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}`.
-     */
-    get: operations["teams/get-discussion-comment-in-org"];
-    /**
-     * Delete a discussion comment
-     * @description Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * **Note:** You 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}`.
-     */
-    delete: operations["teams/delete-discussion-comment-in-org"];
-    /**
-     * Update a discussion comment
-     * @description Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`.
-     */
-    patch: operations["teams/update-discussion-comment-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": {
-    /**
-     * List reactions for a team discussion comment
-     * @description List the reactions to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * **Note:** You 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`.
-     */
-    get: operations["reactions/list-for-team-discussion-comment-in-org"];
-    /**
-     * Create reaction for a team discussion comment
-     * @description Create a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment.
-     *
-     * **Note:** You 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`.
-     */
-    post: operations["reactions/create-for-team-discussion-comment-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}": {
-    /**
-     * Delete team discussion comment reaction
-     * @description **Note:** You 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`.
-     *
-     * Delete a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    delete: operations["reactions/delete-for-team-discussion-comment"];
-  };
-  "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": {
-    /**
-     * List reactions for a team discussion
-     * @description List the reactions to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * **Note:** You 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`.
-     */
-    get: operations["reactions/list-for-team-discussion-in-org"];
-    /**
-     * Create reaction for a team discussion
-     * @description Create a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`.
-     */
-    post: operations["reactions/create-for-team-discussion-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}": {
-    /**
-     * Delete team discussion reaction
-     * @description **Note:** You 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/reactions/:reaction_id`.
-     *
-     * Delete a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    delete: operations["reactions/delete-for-team-discussion"];
-  };
-  "/orgs/{org}/teams/{team_slug}/invitations": {
-    /**
-     * List pending team invitations
-     * @description The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/invitations`.
-     */
-    get: operations["teams/list-pending-invitations-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/members": {
-    /**
-     * List team members
-     * @description Team members will include the members of child teams.
-     *
-     * To list members in a team, the team must be visible to the authenticated user.
-     */
-    get: operations["teams/list-members-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/memberships/{username}": {
-    /**
-     * Get team membership for a user
-     * @description Team members will include the members of child teams.
-     *
-     * To get a user's membership with a team, the team must be visible to the authenticated user.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/memberships/{username}`.
-     *
-     * **Note:**
-     * The response contains the `state` of the membership and the member's `role`.
-     *
-     * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/teams/teams#create-a-team).
-     */
-    get: operations["teams/get-membership-for-user-in-org"];
-    /**
-     * Add or update team membership for a user
-     * @description Adds an organization member to a team. An authenticated organization owner or team maintainer can add organization members to a team.
-     *
-     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-     *
-     * An organization owner can add someone who is not part of the team's organization to a team. When an organization owner adds someone to a team who is not an organization member, this endpoint will send an invitation to the person via email. This newly-created membership will be in the "pending" state until the person accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team.
-     *
-     * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/memberships/{username}`.
-     */
-    put: operations["teams/add-or-update-membership-for-user-in-org"];
-    /**
-     * Remove team membership for a user
-     * @description To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team.
-     *
-     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/memberships/{username}`.
-     */
-    delete: operations["teams/remove-membership-for-user-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/projects": {
-    /**
-     * List team projects
-     * @description Lists the organization projects for a team.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects`.
-     */
-    get: operations["teams/list-projects-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/projects/{project_id}": {
-    /**
-     * Check team permissions for a project
-     * @description Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects/{project_id}`.
-     */
-    get: operations["teams/check-permissions-for-project-in-org"];
-    /**
-     * Add or update team project permissions
-     * @description Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/projects/{project_id}`.
-     */
-    put: operations["teams/add-or-update-project-permissions-in-org"];
-    /**
-     * Remove a project from a team
-     * @description Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. This endpoint removes the project from the team, but does not delete the project.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/projects/{project_id}`.
-     */
-    delete: operations["teams/remove-project-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/repos": {
-    /**
-     * List team repositories
-     * @description Lists a team's repositories visible to the authenticated user.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`.
-     */
-    get: operations["teams/list-repos-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": {
-    /**
-     * Check team permissions for a repository
-     * @description 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.
-     *
-     * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `application/vnd.github.v3.repository+json` accept header.
-     *
-     * If a team doesn't have permission for the repository, you will receive a `404 Not Found` response status.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.
-     */
-    get: operations["teams/check-permissions-for-repo-in-org"];
-    /**
-     * Add or update team repository permissions
-     * @description 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 verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.
-     *
-     * For more information about the permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)".
-     */
-    put: operations["teams/add-or-update-repo-permissions-in-org"];
-    /**
-     * Remove a repository from a team
-     * @description If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.
-     */
-    delete: operations["teams/remove-repo-in-org"];
-  };
-  "/orgs/{org}/teams/{team_slug}/teams": {
-    /**
-     * List child teams
-     * @description Lists the child teams of the team specified by `{team_slug}`.
-     *
-     * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`.
-     */
-    get: operations["teams/list-child-in-org"];
-  };
-  "/orgs/{org}/{security_product}/{enablement}": {
-    /**
-     * Enable or disable a security feature for an organization
-     * @description Enables or disables the specified security feature for all eligible repositories in an organization.
-     *
-     * To use this endpoint, you must be an organization owner or be member of a team with the security manager role.
-     * A token with the 'write:org' scope is also required.
-     *
-     * GitHub Apps must have the `organization_administration:write` permission to use this endpoint.
-     *
-     * For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-     */
-    post: operations["orgs/enable-or-disable-security-product-on-all-org-repos"];
-  };
-  "/projects/columns/cards/{card_id}": {
-    /**
-     * Get a project card
-     * @description Gets information about a project card.
-     */
-    get: operations["projects/get-card"];
-    /**
-     * Delete a project card
-     * @description Deletes a project card
-     */
-    delete: operations["projects/delete-card"];
-    /** Update an existing project card */
-    patch: operations["projects/update-card"];
-  };
-  "/projects/columns/cards/{card_id}/moves": {
-    /** Move a project card */
-    post: operations["projects/move-card"];
-  };
-  "/projects/columns/{column_id}": {
-    /**
-     * Get a project column
-     * @description Gets information about a project column.
-     */
-    get: operations["projects/get-column"];
-    /**
-     * Delete a project column
-     * @description Deletes a project column.
-     */
-    delete: operations["projects/delete-column"];
-    /** Update an existing project column */
-    patch: operations["projects/update-column"];
-  };
-  "/projects/columns/{column_id}/cards": {
-    /**
-     * List project cards
-     * @description Lists the project cards in a project.
-     */
-    get: operations["projects/list-cards"];
-    /** Create a project card */
-    post: operations["projects/create-card"];
-  };
-  "/projects/columns/{column_id}/moves": {
-    /** Move a project column */
-    post: operations["projects/move-column"];
-  };
-  "/projects/{project_id}": {
-    /**
-     * Get a project
-     * @description Gets a project by its `id`. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-     */
-    get: operations["projects/get"];
-    /**
-     * Delete a project
-     * @description Deletes a project board. Returns a `404 Not Found` status if projects are disabled.
-     */
-    delete: operations["projects/delete"];
-    /**
-     * Update a project
-     * @description Updates a project board's information. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-     */
-    patch: operations["projects/update"];
-  };
-  "/projects/{project_id}/collaborators": {
-    /**
-     * List project collaborators
-     * @description Lists the collaborators for an organization project. For a project, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. You must be an organization owner or a project `admin` to list collaborators.
-     */
-    get: operations["projects/list-collaborators"];
-  };
-  "/projects/{project_id}/collaborators/{username}": {
-    /**
-     * Add project collaborator
-     * @description Adds a collaborator to an organization project and sets their permission level. You must be an organization owner or a project `admin` to add a collaborator.
-     */
-    put: operations["projects/add-collaborator"];
-    /**
-     * Remove user as a collaborator
-     * @description Removes a collaborator from an organization project. You must be an organization owner or a project `admin` to remove a collaborator.
-     */
-    delete: operations["projects/remove-collaborator"];
-  };
-  "/projects/{project_id}/collaborators/{username}/permission": {
-    /**
-     * Get project permission for a user
-     * @description Returns the collaborator's permission level for an organization project. Possible values for the `permission` key: `admin`, `write`, `read`, `none`. You must be an organization owner or a project `admin` to review a user's permission level.
-     */
-    get: operations["projects/get-permission-for-user"];
-  };
-  "/projects/{project_id}/columns": {
-    /**
-     * List project columns
-     * @description Lists the project columns in a project.
-     */
-    get: operations["projects/list-columns"];
-    /**
-     * Create a project column
-     * @description Creates a new project column.
-     */
-    post: operations["projects/create-column"];
-  };
-  "/rate_limit": {
-    /**
-     * Get rate limit status for the authenticated user
-     * @description **Note:** Accessing this endpoint does not count against your REST API rate limit.
-     *
-     * Some categories of endpoints have custom rate limits that are separate from the rate limit governing the other REST API endpoints. For this reason, the API response categorizes your rate limit. Under `resources`, you'll see objects relating to different categories:
-     * * The `core` object provides your rate limit status for all non-search-related resources in the REST API.
-     * * The `search` object provides your rate limit status for the REST API for searching (excluding code searches). For more information, see "[Search](https://docs.github.com/rest/search)."
-     * * The `code_search` object provides your rate limit status for the REST API for searching code. For more information, see "[Search code](https://docs.github.com/rest/search/search#search-code)."
-     * * The `graphql` object provides your rate limit status for the GraphQL API. For more information, see "[Resource limitations](https://docs.github.com/graphql/overview/resource-limitations#rate-limit)."
-     * * The `integration_manifest` object provides your rate limit status for the `POST /app-manifests/{code}/conversions` operation. For more information, see "[Creating a GitHub App from a manifest](https://docs.github.com/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app-from-a-manifest#3-you-exchange-the-temporary-code-to-retrieve-the-app-configuration)."
-     * * The `dependency_snapshots` object provides your rate limit status for submitting snapshots to the dependency graph. For more information, see "[Dependency graph](https://docs.github.com/rest/dependency-graph)."
-     * * The `code_scanning_upload` object provides your rate limit status for uploading SARIF results to code scanning. For more information, see "[Uploading a SARIF file to GitHub](https://docs.github.com/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github)."
-     * * The `actions_runner_registration` object provides your rate limit status for registering self-hosted runners in GitHub Actions. For more information, see "[Self-hosted runners](https://docs.github.com/rest/actions/self-hosted-runners)."
-     * * The `source_import` object is no longer in use for any API endpoints, and it will be removed in the next API version. For more information about API versions, see "[API Versions](https://docs.github.com/rest/overview/api-versions)."
-     *
-     * **Note:** The `rate` object is deprecated. If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object.
-     */
-    get: operations["rate-limit/get"];
-  };
-  "/repos/{owner}/{repo}": {
-    /**
-     * Get a repository
-     * @description The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network.
-     *
-     * **Note:** In 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-     */
-    get: operations["repos/get"];
-    /**
-     * Delete a repository
-     * @description Deleting a repository requires admin access. If OAuth is used, the `delete_repo` scope is required.
-     *
-     * If an organization owner has configured the organization to prevent members from deleting organization-owned
-     * repositories, you will get a `403 Forbidden` response.
-     */
-    delete: operations["repos/delete"];
-    /**
-     * Update a repository
-     * @description **Note**: To edit a repository's topics, use the [Replace all repository topics](https://docs.github.com/rest/repos/repos#replace-all-repository-topics) endpoint.
-     */
-    patch: operations["repos/update"];
-  };
-  "/repos/{owner}/{repo}/actions/artifacts": {
-    /**
-     * List artifacts for a repository
-     * @description Lists all artifacts for a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/list-artifacts-for-repo"];
-  };
-  "/repos/{owner}/{repo}/actions/artifacts/{artifact_id}": {
-    /**
-     * Get an artifact
-     * @description Gets a specific artifact for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-artifact"];
-    /**
-     * Delete an artifact
-     * @description Deletes an artifact for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-     */
-    delete: operations["actions/delete-artifact"];
-  };
-  "/repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}": {
-    /**
-     * Download an artifact
-     * @description Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in
-     * the response header to find the URL for the download. The `:archive_format` must be `zip`.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/download-artifact"];
-  };
-  "/repos/{owner}/{repo}/actions/cache/usage": {
-    /**
-     * Get GitHub Actions cache usage for a repository
-     * @description Gets GitHub Actions cache usage for a repository.
-     * The 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.
-     * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-actions-cache-usage"];
-  };
-  "/repos/{owner}/{repo}/actions/caches": {
-    /**
-     * List GitHub Actions caches for a repository
-     * @description Lists the GitHub Actions caches for a repository.
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-actions-cache-list"];
-    /**
-     * Delete GitHub Actions caches for a repository (using a cache key)
-     * @description Deletes one or more GitHub Actions caches for a repository, using a complete cache key. By default, all caches that match the provided key are deleted, but you can optionally provide a Git ref to restrict deletions to caches that match both the provided key and the Git ref.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     *
-     * GitHub Apps must have the `actions:write` permission to use this endpoint.
-     */
-    delete: operations["actions/delete-actions-cache-by-key"];
-  };
-  "/repos/{owner}/{repo}/actions/caches/{cache_id}": {
-    /**
-     * Delete a GitHub Actions cache for a repository (using a cache ID)
-     * @description Deletes a GitHub Actions cache for a repository, using a cache ID.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     *
-     * GitHub Apps must have the `actions:write` permission to use this endpoint.
-     */
-    delete: operations["actions/delete-actions-cache-by-id"];
-  };
-  "/repos/{owner}/{repo}/actions/jobs/{job_id}": {
-    /**
-     * Get a job for a workflow run
-     * @description Gets a specific job in a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-job-for-workflow-run"];
-  };
-  "/repos/{owner}/{repo}/actions/jobs/{job_id}/logs": {
-    /**
-     * Download job logs for a workflow run
-     * @description Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look
-     * for `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can
-     * use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must
-     * have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/download-job-logs-for-workflow-run"];
-  };
-  "/repos/{owner}/{repo}/actions/jobs/{job_id}/rerun": {
-    /**
-     * Re-run a job from a workflow run
-     * @description Re-run a job and its dependent jobs in a workflow run.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `actions:write` permission to use this endpoint.
-     */
-    post: operations["actions/re-run-job-for-workflow-run"];
-  };
-  "/repos/{owner}/{repo}/actions/oidc/customization/sub": {
-    /**
-     * Get the customization template for an OIDC subject claim for a repository
-     * @description Gets the customization template for an OpenID Connect (OIDC) subject claim.
-     * You must authenticate using an access token with the `repo` scope to use this
-     * endpoint. GitHub Apps must have the `organization_administration:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-custom-oidc-sub-claim-for-repo"];
-    /**
-     * Set the customization template for an OIDC subject claim for a repository
-     * @description Sets the customization template and `opt-in` or `opt-out` flag for an OpenID Connect (OIDC) subject claim for a repository.
-     * You must authenticate using an access token with the `repo` scope to use this
-     * endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-     */
-    put: operations["actions/set-custom-oidc-sub-claim-for-repo"];
-  };
-  "/repos/{owner}/{repo}/actions/organization-secrets": {
-    /**
-     * List repository organization secrets
-     * @description Lists all organization secrets shared with a repository without revealing their encrypted
-     * values.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    get: operations["actions/list-repo-organization-secrets"];
-  };
-  "/repos/{owner}/{repo}/actions/organization-variables": {
-    /**
-     * List repository organization variables
-     * @description Lists all organiation variables shared with a repository.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `actions_variables:read` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    get: operations["actions/list-repo-organization-variables"];
-  };
-  "/repos/{owner}/{repo}/actions/permissions": {
-    /**
-     * Get GitHub Actions permissions for a repository
-     * @description Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions and reusable workflows allowed to run in the repository.
-     *
-     * 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.
-     */
-    get: operations["actions/get-github-actions-permissions-repository"];
-    /**
-     * Set GitHub Actions permissions for a repository
-     * @description Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions and reusable workflows in the repository.
-     *
-     * 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.
-     */
-    put: operations["actions/set-github-actions-permissions-repository"];
-  };
-  "/repos/{owner}/{repo}/actions/permissions/access": {
-    /**
-     * Get the level of access for workflows outside of the repository
-     * @description Gets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository.
-     * This endpoint only applies to private repositories.
-     * For more information, see "[Allowing access to components in a private repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)."
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the
-     * repository `administration` permission to use this endpoint.
-     */
-    get: operations["actions/get-workflow-access-to-repository"];
-    /**
-     * Set the level of access for workflows outside of the repository
-     * @description Sets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository.
-     * This endpoint only applies to private repositories.
-     * For more information, see "[Allowing access to components in a private repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)".
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the
-     * repository `administration` permission to use this endpoint.
-     */
-    put: operations["actions/set-workflow-access-to-repository"];
-  };
-  "/repos/{owner}/{repo}/actions/permissions/selected-actions": {
-    /**
-     * Get allowed actions and reusable workflows for a repository
-     * @description Gets the settings for selected actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)."
-     *
-     * 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.
-     */
-    get: operations["actions/get-allowed-actions-repository"];
-    /**
-     * Set allowed actions and reusable workflows for a repository
-     * @description Sets the actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)."
-     *
-     * 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.
-     */
-    put: operations["actions/set-allowed-actions-repository"];
-  };
-  "/repos/{owner}/{repo}/actions/permissions/workflow": {
-    /**
-     * Get default workflow permissions for a repository
-     * @description Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository,
-     * as well as if GitHub Actions can submit approving pull request reviews.
-     * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/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)."
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the repository `administration` permission to use this API.
-     */
-    get: operations["actions/get-github-actions-default-workflow-permissions-repository"];
-    /**
-     * Set default workflow permissions for a repository
-     * @description Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, and sets if GitHub Actions
-     * can submit approving pull request reviews.
-     * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/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)."
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the repository `administration` permission to use this API.
-     */
-    put: operations["actions/set-github-actions-default-workflow-permissions-repository"];
-  };
-  "/repos/{owner}/{repo}/actions/runners": {
-    /**
-     * List self-hosted runners for a repository
-     * @description Lists all self-hosted runners configured in a repository.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    get: operations["actions/list-self-hosted-runners-for-repo"];
-  };
-  "/repos/{owner}/{repo}/actions/runners/downloads": {
-    /**
-     * List runner applications for a repository
-     * @description Lists binaries for the runner application that you can download and run.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    get: operations["actions/list-runner-applications-for-repo"];
-  };
-  "/repos/{owner}/{repo}/actions/runners/generate-jitconfig": {
-    /**
-     * Create configuration for a just-in-time runner for a repository
-     * @description Generates a configuration that can be passed to the runner application at startup.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    post: operations["actions/generate-runner-jitconfig-for-repo"];
-  };
-  "/repos/{owner}/{repo}/actions/runners/registration-token": {
-    /**
-     * Create a registration token for a repository
-     * @description Returns a token that you can pass to the `config` script. The token
-     * expires after one hour.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     *
-     * Example using registration token:
-     *
-     * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided
-     * by this endpoint.
-     *
-     * ```config.sh --url https://github.com/octo-org/octo-repo-artifacts --token TOKEN```
-     */
-    post: operations["actions/create-registration-token-for-repo"];
-  };
-  "/repos/{owner}/{repo}/actions/runners/remove-token": {
-    /**
-     * Create a remove token for a repository
-     * @description Returns a token that you can pass to remove a self-hosted runner from
-     * a repository. The token expires after one hour.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     *
-     * Example using remove token:
-     *
-     * To remove your self-hosted runner from a repository, replace TOKEN with
-     * the remove token provided by this endpoint.
-     *
-     * ```config.sh remove --token TOKEN```
-     */
-    post: operations["actions/create-remove-token-for-repo"];
-  };
-  "/repos/{owner}/{repo}/actions/runners/{runner_id}": {
-    /**
-     * Get a self-hosted runner for a repository
-     * @description Gets a specific self-hosted runner configured in a repository.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    get: operations["actions/get-self-hosted-runner-for-repo"];
-    /**
-     * Delete a self-hosted runner from a repository
-     * @description Forces the removal of a self-hosted runner from a repository. You can use this endpoint to completely remove the runner when the machine you were using no longer exists.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    delete: operations["actions/delete-self-hosted-runner-from-repo"];
-  };
-  "/repos/{owner}/{repo}/actions/runners/{runner_id}/labels": {
-    /**
-     * List labels for a self-hosted runner for a repository
-     * @description Lists all labels for a self-hosted runner configured in a repository.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    get: operations["actions/list-labels-for-self-hosted-runner-for-repo"];
-    /**
-     * Set custom labels for a self-hosted runner for a repository
-     * @description Remove all previous custom labels and set the new custom labels for a specific
-     * self-hosted runner configured in a repository.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    put: operations["actions/set-custom-labels-for-self-hosted-runner-for-repo"];
-    /**
-     * Add custom labels to a self-hosted runner for a repository
-     * @description Add custom labels to a self-hosted runner configured in a repository.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    post: operations["actions/add-custom-labels-to-self-hosted-runner-for-repo"];
-    /**
-     * Remove all custom labels from a self-hosted runner for a repository
-     * @description Remove all custom labels from a self-hosted runner configured in a
-     * repository. Returns the remaining read-only labels from the runner.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    delete: operations["actions/remove-all-custom-labels-from-self-hosted-runner-for-repo"];
-  };
-  "/repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}": {
-    /**
-     * Remove a custom label from a self-hosted runner for a repository
-     * @description Remove a custom label from a self-hosted runner configured
-     * in a repository. Returns the remaining labels from the runner.
-     *
-     * This endpoint returns a `404 Not Found` status if the custom label is not
-     * present on the runner.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-     * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-     */
-    delete: operations["actions/remove-custom-label-from-self-hosted-runner-for-repo"];
-  };
-  "/repos/{owner}/{repo}/actions/runs": {
-    /**
-     * List workflow runs for a repository
-     * @description 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](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).
-     *
-     * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/list-workflow-runs-for-repo"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}": {
-    /**
-     * Get a workflow run
-     * @description Gets a specific workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-workflow-run"];
-    /**
-     * Delete a workflow run
-     * @description Delete a specific workflow run. Anyone with write access to the repository can use this endpoint. If the repository is
-     * private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:write` permission to use
-     * this endpoint.
-     */
-    delete: operations["actions/delete-workflow-run"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/approvals": {
-    /**
-     * Get the review history for a workflow run
-     * @description Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-reviews-for-run"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/approve": {
-    /**
-     * Approve a workflow run for a fork pull request
-     * @description Approves a workflow run for a pull request from a public fork of a first time contributor. For more information, see ["Approving workflow runs from public forks](https://docs.github.com/actions/managing-workflow-runs/approving-workflow-runs-from-public-forks)."
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-     */
-    post: operations["actions/approve-workflow-run"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": {
-    /**
-     * List workflow run artifacts
-     * @description Lists artifacts for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/list-workflow-run-artifacts"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}": {
-    /**
-     * Get a workflow run attempt
-     * @description Gets a specific workflow run attempt. Anyone with read access to the repository
-     * can use this endpoint. If the repository is private you must use an access token
-     * with the `repo` scope. GitHub Apps must have the `actions:read` permission to
-     * use this endpoint.
-     */
-    get: operations["actions/get-workflow-run-attempt"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs": {
-    /**
-     * List jobs for a workflow run attempt
-     * @description Lists jobs for a specific workflow run attempt. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).
-     */
-    get: operations["actions/list-jobs-for-workflow-run-attempt"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs": {
-    /**
-     * Download workflow run attempt logs
-     * @description Gets a redirect URL to download an archive of log files for a specific workflow run attempt. This link expires after
-     * 1 minute. Look for `Location:` in the response header to find the URL for the download. Anyone with read access to
-     * the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/download-workflow-run-attempt-logs"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/cancel": {
-    /**
-     * Cancel a workflow run
-     * @description Cancels a workflow run using its `id`.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `actions:write` permission to use this endpoint.
-     */
-    post: operations["actions/cancel-workflow-run"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule": {
-    /**
-     * Review custom deployment protection rules for a workflow run
-     * @description Approve or reject custom deployment protection rules provided by a GitHub App for a workflow run. For more information, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
-     *
-     * **Note:** GitHub Apps can only review their own custom deployment protection rules.
-     * To approve or reject pending deployments that are waiting for review from a specific person or team, see [`POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments`](/rest/actions/workflow-runs#review-pending-deployments-for-a-workflow-run).
-     *
-     * If the repository is private, you must use an access token with the `repo` scope.
-     * GitHub Apps must have read and write permission for **Deployments** to use this endpoint.
-     */
-    post: operations["actions/review-custom-gates-for-run"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel": {
-    /**
-     * Force cancel a workflow run
-     * @description Cancels a workflow run and bypasses conditions that would otherwise cause a workflow execution to continue, such as an `always()` condition on a job.
-     * You should only use this endpoint to cancel a workflow run when the workflow run is not responding to [`POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel`](/rest/actions/workflow-runs#cancel-a-workflow-run).
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `actions:write` permission to use this endpoint.
-     */
-    post: operations["actions/force-cancel-workflow-run"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/jobs": {
-    /**
-     * List jobs for a workflow run
-     * @description Lists jobs for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).
-     */
-    get: operations["actions/list-jobs-for-workflow-run"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/logs": {
-    /**
-     * Download workflow run logs
-     * @description Gets a redirect URL to download an archive of log files for a workflow run. This link expires after 1 minute. Look for
-     * `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can use
-     * this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have
-     * the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/download-workflow-run-logs"];
-    /**
-     * Delete workflow run logs
-     * @description Deletes all logs for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-     */
-    delete: operations["actions/delete-workflow-run-logs"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments": {
-    /**
-     * Get pending deployments for a workflow run
-     * @description Get all deployment environments for a workflow run that are waiting for protection rules to pass.
-     *
-     * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-pending-deployments-for-run"];
-    /**
-     * Review pending deployments for a workflow run
-     * @description Approve or reject pending deployments that are waiting on approval by a required reviewer.
-     *
-     * Required reviewers with read access to the repository contents and deployments can use this endpoint. Required reviewers must authenticate using an access token with the `repo` scope to use this endpoint.
-     */
-    post: operations["actions/review-pending-deployments-for-run"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/rerun": {
-    /**
-     * Re-run a workflow
-     * @description Re-runs your workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-     */
-    post: operations["actions/re-run-workflow"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs": {
-    /**
-     * Re-run failed jobs from a workflow run
-     * @description Re-run all of the failed jobs and their dependent jobs in a workflow run using the `id` of the workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint.
-     */
-    post: operations["actions/re-run-workflow-failed-jobs"];
-  };
-  "/repos/{owner}/{repo}/actions/runs/{run_id}/timing": {
-    /**
-     * Get workflow run usage
-     * @description Gets the number of billable minutes and total run time for a specific workflow run. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
-     *
-     * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-workflow-run-usage"];
-  };
-  "/repos/{owner}/{repo}/actions/secrets": {
-    /**
-     * List repository secrets
-     * @description Lists all secrets available in a repository without revealing their encrypted
-     * values.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    get: operations["actions/list-repo-secrets"];
-  };
-  "/repos/{owner}/{repo}/actions/secrets/public-key": {
-    /**
-     * Get a repository public key
-     * @description Gets your public key, which you need to encrypt secrets. You need to
-     * encrypt a secret before you can create or update secrets.
-     *
-     * Anyone with read access to the repository can use this endpoint.
-     * If the repository is private you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    get: operations["actions/get-repo-public-key"];
-  };
-  "/repos/{owner}/{repo}/actions/secrets/{secret_name}": {
-    /**
-     * Get a repository secret
-     * @description Gets a single repository secret without revealing its encrypted value.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    get: operations["actions/get-repo-secret"];
-    /**
-     * Create or update a repository secret
-     * @description Creates or updates a repository secret with an encrypted value. Encrypt your secret using
-     * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    put: operations["actions/create-or-update-repo-secret"];
-    /**
-     * Delete a repository secret
-     * @description Deletes a secret in a repository using the secret name.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    delete: operations["actions/delete-repo-secret"];
-  };
-  "/repos/{owner}/{repo}/actions/variables": {
-    /**
-     * List repository variables
-     * @description Lists all repository variables.
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `actions_variables:read` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    get: operations["actions/list-repo-variables"];
-    /**
-     * Create a repository variable
-     * @description Creates a repository variable that you can reference in a GitHub Actions workflow.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `actions_variables:write` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    post: operations["actions/create-repo-variable"];
-  };
-  "/repos/{owner}/{repo}/actions/variables/{name}": {
-    /**
-     * Get a repository variable
-     * @description Gets a specific variable in a repository.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `actions_variables:read` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    get: operations["actions/get-repo-variable"];
-    /**
-     * Delete a repository variable
-     * @description Deletes a repository variable using the variable name.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `actions_variables:write` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    delete: operations["actions/delete-repo-variable"];
-    /**
-     * Update a repository variable
-     * @description Updates a repository variable that you can reference in a GitHub Actions workflow.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `actions_variables:write` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    patch: operations["actions/update-repo-variable"];
-  };
-  "/repos/{owner}/{repo}/actions/workflows": {
-    /**
-     * List repository workflows
-     * @description Lists the workflows in a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/list-repo-workflows"];
-  };
-  "/repos/{owner}/{repo}/actions/workflows/{workflow_id}": {
-    /**
-     * Get a workflow
-     * @description Gets a specific workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-workflow"];
-  };
-  "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable": {
-    /**
-     * Disable a workflow
-     * @description Disables a workflow and sets the `state` of the workflow to `disabled_manually`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-     */
-    put: operations["actions/disable-workflow"];
-  };
-  "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches": {
-    /**
-     * Create a workflow dispatch event
-     * @description You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`.
-     *
-     * You must configure your GitHub Actions workflow to run when the [`workflow_dispatch` webhook](/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch) event occurs. The `inputs` are configured in the workflow file. For more information about how to configure the `workflow_dispatch` event in the workflow file, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch)."
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. For more information, see "[Creating a personal access token for the command line](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line)."
-     */
-    post: operations["actions/create-workflow-dispatch"];
-  };
-  "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable": {
-    /**
-     * Enable a workflow
-     * @description Enables a workflow and sets the `state` of the workflow to `active`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-     */
-    put: operations["actions/enable-workflow"];
-  };
-  "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": {
-    /**
-     * List workflow runs for a workflow
-     * @description List all workflow runs for a workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).
-     *
-     * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope.
-     */
-    get: operations["actions/list-workflow-runs"];
-  };
-  "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing": {
-    /**
-     * Get workflow usage
-     * @description Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
-     *
-     * You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["actions/get-workflow-usage"];
-  };
-  "/repos/{owner}/{repo}/activity": {
-    /**
-     * List repository activities
-     * @description Lists a detailed history of changes to a repository, such as pushes, merges, force pushes, and branch changes, and associates these changes with commits and users.
-     *
-     * For more information about viewing repository activity,
-     * see "[Viewing activity and data for your repository](https://docs.github.com/repositories/viewing-activity-and-data-for-your-repository)."
-     */
-    get: operations["repos/list-activities"];
-  };
-  "/repos/{owner}/{repo}/assignees": {
-    /**
-     * List assignees
-     * @description Lists the [available assignees](https://docs.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository.
-     */
-    get: operations["issues/list-assignees"];
-  };
-  "/repos/{owner}/{repo}/assignees/{assignee}": {
-    /**
-     * Check if a user can be assigned
-     * @description Checks if a user has permission to be assigned to an issue in this repository.
-     *
-     * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned.
-     *
-     * Otherwise a `404` status code is returned.
-     */
-    get: operations["issues/check-user-can-be-assigned"];
-  };
-  "/repos/{owner}/{repo}/autolinks": {
-    /**
-     * List all autolinks of a repository
-     * @description This returns a list of autolinks configured for the given repository.
-     *
-     * Information about autolinks are only available to repository administrators.
-     */
-    get: operations["repos/list-autolinks"];
-    /**
-     * Create an autolink reference for a repository
-     * @description Users with admin access to the repository can create an autolink.
-     */
-    post: operations["repos/create-autolink"];
-  };
-  "/repos/{owner}/{repo}/autolinks/{autolink_id}": {
-    /**
-     * Get an autolink reference of a repository
-     * @description This returns a single autolink reference by ID that was configured for the given repository.
-     *
-     * Information about autolinks are only available to repository administrators.
-     */
-    get: operations["repos/get-autolink"];
-    /**
-     * Delete an autolink reference from a repository
-     * @description This deletes a single autolink reference by ID that was configured for the given repository.
-     *
-     * Information about autolinks are only available to repository administrators.
-     */
-    delete: operations["repos/delete-autolink"];
-  };
-  "/repos/{owner}/{repo}/automated-security-fixes": {
-    /**
-     * Check if automated security fixes are enabled for a repository
-     * @description Shows whether automated security fixes are enabled, disabled or paused for a repository. The authenticated user must have admin read access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/articles/configuring-automated-security-fixes)".
-     */
-    get: operations["repos/check-automated-security-fixes"];
-    /**
-     * Enable automated security fixes
-     * @description Enables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/articles/configuring-automated-security-fixes)".
-     */
-    put: operations["repos/enable-automated-security-fixes"];
-    /**
-     * Disable automated security fixes
-     * @description Disables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/articles/configuring-automated-security-fixes)".
-     */
-    delete: operations["repos/disable-automated-security-fixes"];
-  };
-  "/repos/{owner}/{repo}/branches": {
-    /** List branches */
-    get: operations["repos/list-branches"];
-  };
-  "/repos/{owner}/{repo}/branches/{branch}": {
-    /** Get a branch */
-    get: operations["repos/get-branch"];
-  };
-  "/repos/{owner}/{repo}/branches/{branch}/protection": {
-    /**
-     * Get branch protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     */
-    get: operations["repos/get-branch-protection"];
-    /**
-     * Update branch protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Protecting a branch requires admin or owner permissions to the repository.
-     *
-     * **Note**: Passing new arrays of `users` and `teams` replaces their previous values.
-     *
-     * **Note**: The list of users, apps, and teams in total is limited to 100 items.
-     */
-    put: operations["repos/update-branch-protection"];
-    /**
-     * Delete branch protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     */
-    delete: operations["repos/delete-branch-protection"];
-  };
-  "/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": {
-    /**
-     * Get admin branch protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     */
-    get: operations["repos/get-admin-branch-protection"];
-    /**
-     * Set admin branch protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
-     */
-    post: operations["repos/set-admin-branch-protection"];
-    /**
-     * Delete admin branch protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
-     */
-    delete: operations["repos/delete-admin-branch-protection"];
-  };
-  "/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": {
-    /**
-     * Get pull request review protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     */
-    get: operations["repos/get-pull-request-review-protection"];
-    /**
-     * Delete pull request review protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     */
-    delete: operations["repos/delete-pull-request-review-protection"];
-    /**
-     * Update pull request review protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
-     *
-     * **Note**: Passing new arrays of `users` and `teams` replaces their previous values.
-     */
-    patch: operations["repos/update-pull-request-review-protection"];
-  };
-  "/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": {
-    /**
-     * Get commit signature protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://docs.github.com/articles/signing-commits-with-gpg) in GitHub Help.
-     *
-     * **Note**: You must enable branch protection to require signed commits.
-     */
-    get: operations["repos/get-commit-signature-protection"];
-    /**
-     * Create commit signature protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits.
-     */
-    post: operations["repos/create-commit-signature-protection"];
-    /**
-     * Delete commit signature protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits.
-     */
-    delete: operations["repos/delete-commit-signature-protection"];
-  };
-  "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": {
-    /**
-     * Get status checks protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     */
-    get: operations["repos/get-status-checks-protection"];
-    /**
-     * Remove status check protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     */
-    delete: operations["repos/remove-status-check-protection"];
-    /**
-     * Update status check protection
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled.
-     */
-    patch: operations["repos/update-status-check-protection"];
-  };
-  "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": {
-    /**
-     * Get all status check contexts
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     */
-    get: operations["repos/get-all-status-check-contexts"];
-    /**
-     * Set status check contexts
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     */
-    put: operations["repos/set-status-check-contexts"];
-    /**
-     * Add status check contexts
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     */
-    post: operations["repos/add-status-check-contexts"];
-    /**
-     * Remove status check contexts
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     */
-    delete: operations["repos/remove-status-check-contexts"];
-  };
-  "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions": {
-    /**
-     * Get access restrictions
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Lists who has access to this protected branch.
-     *
-     * **Note**: Users, apps, and teams `restrictions` are only available for organization-owned repositories.
-     */
-    get: operations["repos/get-access-restrictions"];
-    /**
-     * Delete access restrictions
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Disables the ability to restrict who can push to this branch.
-     */
-    delete: operations["repos/delete-access-restrictions"];
-  };
-  "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": {
-    /**
-     * Get apps with access to the protected branch
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Lists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
-     */
-    get: operations["repos/get-apps-with-access-to-protected-branch"];
-    /**
-     * Set app access restrictions
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
-     */
-    put: operations["repos/set-app-access-restrictions"];
-    /**
-     * Add app access restrictions
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Grants the specified apps push access for this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
-     */
-    post: operations["repos/add-app-access-restrictions"];
-    /**
-     * Remove app access restrictions
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Removes the ability of an app to push to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
-     */
-    delete: operations["repos/remove-app-access-restrictions"];
-  };
-  "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": {
-    /**
-     * Get teams with access to the protected branch
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Lists the teams who have push access to this branch. The list includes child teams.
-     */
-    get: operations["repos/get-teams-with-access-to-protected-branch"];
-    /**
-     * Set team access restrictions
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. Team restrictions include child teams.
-     */
-    put: operations["repos/set-team-access-restrictions"];
-    /**
-     * Add team access restrictions
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Grants the specified teams push access for this branch. You can also give push access to child teams.
-     */
-    post: operations["repos/add-team-access-restrictions"];
-    /**
-     * Remove team access restrictions
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Removes the ability of a team to push to this branch. You can also remove push access for child teams.
-     */
-    delete: operations["repos/remove-team-access-restrictions"];
-  };
-  "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": {
-    /**
-     * Get users with access to the protected branch
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Lists the people who have push access to this branch.
-     */
-    get: operations["repos/get-users-with-access-to-protected-branch"];
-    /**
-     * Set user access restrictions
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people.
-     *
-     * | Type    | Description                                                                                                                   |
-     * | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
-     * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
-     */
-    put: operations["repos/set-user-access-restrictions"];
-    /**
-     * Add user access restrictions
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Grants the specified people push access for this branch.
-     *
-     * | Type    | Description                                                                                                                   |
-     * | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
-     * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
-     */
-    post: operations["repos/add-user-access-restrictions"];
-    /**
-     * Remove user access restrictions
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Removes the ability of a user to push to this branch.
-     *
-     * | Type    | Description                                                                                                                                   |
-     * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
-     * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
-     */
-    delete: operations["repos/remove-user-access-restrictions"];
-  };
-  "/repos/{owner}/{repo}/branches/{branch}/rename": {
-    /**
-     * Rename a branch
-     * @description Renames a branch in a repository.
-     *
-     * **Note:** Although the API responds immediately, the branch rename process might take some extra time to complete in the background. You won't be able to push to the old branch name while the rename process is in progress. For more information, see "[Renaming a branch](https://docs.github.com/github/administering-a-repository/renaming-a-branch)".
-     *
-     * The permissions required to use this endpoint depends on whether you are renaming the default branch.
-     *
-     * To rename a non-default branch:
-     *
-     * * Users must have push access.
-     * * GitHub Apps must have the `contents:write` repository permission.
-     *
-     * To rename the default branch:
-     *
-     * * Users must have admin or owner permissions.
-     * * GitHub Apps must have the `administration:write` repository permission.
-     */
-    post: operations["repos/rename-branch"];
-  };
-  "/repos/{owner}/{repo}/check-runs": {
-    /**
-     * Create a check run
-     * @description **Note:** The 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.
-     *
-     * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs.
-     *
-     * In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs.
-     */
-    post: operations["checks/create"];
-  };
-  "/repos/{owner}/{repo}/check-runs/{check_run_id}": {
-    /**
-     * Get a check run
-     * @description **Note:** The 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.
-     *
-     * Gets a single check run using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth apps and authenticated users must have the `repo` scope to get check runs in a private repository.
-     */
-    get: operations["checks/get"];
-    /**
-     * Update a check run
-     * @description Updates a check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to edit check runs.
-     *
-     * **Note:** The endpoints to manage checks only look 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.
-     */
-    patch: operations["checks/update"];
-  };
-  "/repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": {
-    /**
-     * List check run annotations
-     * @description Lists annotations for a check run using the annotation `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get annotations for a check run. OAuth apps and authenticated users must have the `repo` scope to get annotations for a check run in a private repository.
-     */
-    get: operations["checks/list-annotations"];
-  };
-  "/repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest": {
-    /**
-     * Rerequest a check run
-     * @description Triggers GitHub to rerequest an existing check run, without pushing new code to a repository. This endpoint will trigger the [`check_run` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) event with the action `rerequested`. When a check run is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared.
-     *
-     * To rerequest a check run, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository.
-     *
-     * For more information about how to re-run GitHub Actions jobs, see "[Re-run a job from a workflow run](https://docs.github.com/rest/actions/workflow-runs#re-run-a-job-from-a-workflow-run)".
-     */
-    post: operations["checks/rerequest-run"];
-  };
-  "/repos/{owner}/{repo}/check-suites": {
-    /**
-     * Create a check suite
-     * @description **Note:** The 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`.
-     *
-     * By default, check suites are automatically created when you create a [check run](https://docs.github.com/rest/checks/runs). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Update repository preferences for check suites](https://docs.github.com/rest/checks/suites#update-repository-preferences-for-check-suites)". Your GitHub App must have the `checks:write` permission to create check suites.
-     */
-    post: operations["checks/create-suite"];
-  };
-  "/repos/{owner}/{repo}/check-suites/preferences": {
-    /**
-     * Update repository preferences for check suites
-     * @description Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://docs.github.com/rest/checks/suites#create-a-check-suite). You must have admin permissions in the repository to set preferences for check suites.
-     */
-    patch: operations["checks/set-suites-preferences"];
-  };
-  "/repos/{owner}/{repo}/check-suites/{check_suite_id}": {
-    /**
-     * Get a check suite
-     * @description **Note:** The 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`.
-     *
-     * Gets a single check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check suites. OAuth apps and authenticated users must have the `repo` scope to get check suites in a private repository.
-     */
-    get: operations["checks/get-suite"];
-  };
-  "/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": {
-    /**
-     * List check runs in a check suite
-     * @description Lists check runs for a check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth apps and authenticated users must have the `repo` scope to get check runs in a private repository.
-     *
-     * **Note:** The endpoints to manage checks only look 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.
-     */
-    get: operations["checks/list-for-suite"];
-  };
-  "/repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest": {
-    /**
-     * Rerequest a check suite
-     * @description Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://docs.github.com/webhooks/event-payloads/#check_suite) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared.
-     *
-     * To rerequest a check suite, your GitHub App must have the `checks:write` permission on a private repository or pull access to a public repository.
-     */
-    post: operations["checks/rerequest-suite"];
-  };
-  "/repos/{owner}/{repo}/code-scanning/alerts": {
-    /**
-     * List code scanning alerts for a repository
-     * @description Lists all open code scanning alerts for the default branch (usually `main`
-     * or `master`). You must use an access token with the `security_events` scope to use
-     * this endpoint with private repos, the `public_repo` scope also grants permission to read
-     * security events on public repos only. GitHub Apps must have the `security_events` read
-     * permission to use this endpoint.
-     *
-     * The response includes a `most_recent_instance` object.
-     * This provides details of the most recent instance of this alert
-     * for the default branch or for the specified Git reference
-     * (if you used `ref` in the request).
-     */
-    get: operations["code-scanning/list-alerts-for-repo"];
-  };
-  "/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": {
-    /**
-     * Get a code scanning alert
-     * @description Gets a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint with private repos, the `public_repo` scope also grants permission to read security events on public repos only. GitHub Apps must have the `security_events` read permission to use this endpoint.
-     */
-    get: operations["code-scanning/get-alert"];
-    /**
-     * Update a code scanning alert
-     * @description Updates the status of a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint with private repositories. You can also use tokens with the `public_repo` scope for public repositories only. GitHub Apps must have the `security_events` write permission to use this endpoint.
-     */
-    patch: operations["code-scanning/update-alert"];
-  };
-  "/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances": {
-    /**
-     * List instances of a code scanning alert
-     * @description Lists all instances of the specified code scanning alert.
-     * You must use an access token with the `security_events` scope to use this endpoint with private repos,
-     * the `public_repo` scope also grants permission to read security events on public repos only.
-     * GitHub Apps must have the `security_events` read permission to use this endpoint.
-     */
-    get: operations["code-scanning/list-alert-instances"];
-  };
-  "/repos/{owner}/{repo}/code-scanning/analyses": {
-    /**
-     * List code scanning analyses for a repository
-     * @description Lists the details of all code scanning analyses for a repository,
-     * starting with the most recent.
-     * The response is paginated and you can use the `page` and `per_page` parameters
-     * to list the analyses you're interested in.
-     * By default 30 analyses are listed per page.
-     *
-     * The `rules_count` field in the response give the number of rules
-     * that were run in the analysis.
-     * For very old analyses this data is not available,
-     * and `0` is returned in this field.
-     *
-     * You must use an access token with the `security_events` scope to use this endpoint with private repos,
-     * the `public_repo` scope also grants permission to read security events on public repos only.
-     * GitHub Apps must have the `security_events` read permission to use this endpoint.
-     *
-     * **Deprecation notice**:
-     * The `tool_name` field is deprecated and will, in future, not be included in the response for this endpoint. The example response reflects this change. The tool name can now be found inside the `tool` field.
-     */
-    get: operations["code-scanning/list-recent-analyses"];
-  };
-  "/repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}": {
-    /**
-     * Get a code scanning analysis for a repository
-     * @description Gets a specified code scanning analysis for a repository.
-     * You must use an access token with the `security_events` scope to use this endpoint with private repos,
-     * the `public_repo` scope also grants permission to read security events on public repos only.
-     * GitHub Apps must have the `security_events` read permission to use this endpoint.
-     *
-     * The default JSON response contains fields that describe the analysis.
-     * This includes the Git reference and commit SHA to which the analysis relates,
-     * the datetime of the analysis, the name of the code scanning tool,
-     * and the number of alerts.
-     *
-     * The `rules_count` field in the default response give the number of rules
-     * that were run in the analysis.
-     * For very old analyses this data is not available,
-     * and `0` is returned in this field.
-     *
-     * If you use the Accept header `application/sarif+json`,
-     * the response contains the analysis data that was uploaded.
-     * This is formatted as
-     * [SARIF version 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html).
-     */
-    get: operations["code-scanning/get-analysis"];
-    /**
-     * Delete a code scanning analysis from a repository
-     * @description Deletes a specified code scanning analysis from a repository. For
-     * private repositories, you must use an access token with the `repo` scope. For public repositories,
-     * you must use an access token with `public_repo` scope.
-     * GitHub Apps must have the `security_events` write permission to use this endpoint.
-     *
-     * You can delete one analysis at a time.
-     * To delete a series of analyses, start with the most recent analysis and work backwards.
-     * Conceptually, the process is similar to the undo function in a text editor.
-     *
-     * When you list the analyses for a repository,
-     * one or more will be identified as deletable in the response:
-     *
-     * ```
-     * "deletable": true
-     * ```
-     *
-     * An analysis is deletable when it's the most recent in a set of analyses.
-     * Typically, a repository will have multiple sets of analyses
-     * for each enabled code scanning tool,
-     * where a set is determined by a unique combination of analysis values:
-     *
-     * * `ref`
-     * * `tool`
-     * * `category`
-     *
-     * If you attempt to delete an analysis that is not the most recent in a set,
-     * you'll get a 400 response with the message:
-     *
-     * ```
-     * Analysis specified is not deletable.
-     * ```
-     *
-     * The response from a successful `DELETE` operation provides you with
-     * two alternative URLs for deleting the next analysis in the set:
-     * `next_analysis_url` and `confirm_delete_url`.
-     * Use the `next_analysis_url` URL if you want to avoid accidentally deleting the final analysis
-     * in a set. This is a useful option if you want to preserve at least one analysis
-     * for the specified tool in your repository.
-     * Use the `confirm_delete_url` URL if you are content to remove all analyses for a tool.
-     * When you delete the last analysis in a set, the value of `next_analysis_url` and `confirm_delete_url`
-     * in the 200 response is `null`.
-     *
-     * As an example of the deletion process,
-     * let's imagine that you added a workflow that configured a particular code scanning tool
-     * to analyze the code in a repository. This tool has added 15 analyses:
-     * 10 on the default branch, and another 5 on a topic branch.
-     * You therefore have two separate sets of analyses for this tool.
-     * You've now decided that you want to remove all of the analyses for the tool.
-     * To do this you must make 15 separate deletion requests.
-     * To start, you must find an analysis that's identified as deletable.
-     * Each set of analyses always has one that's identified as deletable.
-     * Having found the deletable analysis for one of the two sets,
-     * delete this analysis and then continue deleting the next analysis in the set until they're all deleted.
-     * Then repeat the process for the second set.
-     * The procedure therefore consists of a nested loop:
-     *
-     * **Outer loop**:
-     * * List the analyses for the repository, filtered by tool.
-     * * Parse this list to find a deletable analysis. If found:
-     *
-     *   **Inner loop**:
-     *   * Delete the identified analysis.
-     *   * Parse the response for the value of `confirm_delete_url` and, if found, use this in the next iteration.
-     *
-     * The above process assumes that you want to remove all trace of the tool's analyses from the GitHub user interface, for the specified repository, and it therefore uses the `confirm_delete_url` value. Alternatively, you could use the `next_analysis_url` value, which would leave the last analysis in each set undeleted to avoid removing a tool's analysis entirely.
-     */
-    delete: operations["code-scanning/delete-analysis"];
-  };
-  "/repos/{owner}/{repo}/code-scanning/codeql/databases": {
-    /**
-     * List CodeQL databases for a repository
-     * @description Lists the CodeQL databases that are available in a repository.
-     *
-     * For private repositories, you must use an access token with the `security_events` scope.
-     * For public repositories, you can use tokens with the `security_events` or `public_repo` scope.
-     * GitHub Apps must have the `contents` read permission to use this endpoint.
-     */
-    get: operations["code-scanning/list-codeql-databases"];
-  };
-  "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}": {
-    /**
-     * Get a CodeQL database for a repository
-     * @description Gets a CodeQL database for a language in a repository.
-     *
-     * By default this endpoint returns JSON metadata about the CodeQL database. To
-     * download the CodeQL database binary content, set the `Accept` header of the request
-     * to [`application/zip`](https://docs.github.com/rest/overview/media-types), and make sure
-     * your HTTP client is configured to follow redirects or use the `Location` header
-     * to make a second request to get the redirect URL.
-     *
-     * For private repositories, you must use an access token with the `security_events` scope.
-     * For public repositories, you can use tokens with the `security_events` or `public_repo` scope.
-     * GitHub Apps must have the `contents` read permission to use this endpoint.
-     */
-    get: operations["code-scanning/get-codeql-database"];
-  };
-  "/repos/{owner}/{repo}/code-scanning/default-setup": {
-    /**
-     * Get a code scanning default setup configuration
-     * @description Gets a code scanning default setup configuration.
-     * You must use an access token with the `repo` scope to use this endpoint with private repos or the `public_repo`
-     * scope for public repos. GitHub Apps must have the `repo` write permission to use this endpoint.
-     */
-    get: operations["code-scanning/get-default-setup"];
-    /**
-     * Update a code scanning default setup configuration
-     * @description Updates a code scanning default setup configuration.
-     * You must use an access token with the `repo` scope to use this endpoint with private repos or the `public_repo`
-     * scope for public repos. GitHub Apps must have the `repo` write permission to use this endpoint.
-     */
-    patch: operations["code-scanning/update-default-setup"];
-  };
-  "/repos/{owner}/{repo}/code-scanning/sarifs": {
-    /**
-     * Upload an analysis as SARIF data
-     * @description Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint for private repositories. You can also use tokens with the `public_repo` scope for public repositories only. GitHub Apps must have the `security_events` write permission to use this endpoint. For troubleshooting information, see "[Troubleshooting SARIF uploads](https://docs.github.com/code-security/code-scanning/troubleshooting-sarif)."
-     *
-     * There are two places where you can upload code scanning results.
-     *  - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see "[Triaging code scanning alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)."
-     *  - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see "[Managing code scanning alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)."
-     *
-     * You must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:
-     *
-     * ```
-     * gzip -c analysis-data.sarif | base64 -w0
-     * ```
-     * <br>
-     * SARIF upload supports a maximum number of entries per the following data objects, and an analysis will be rejected if any of these objects is above its maximum value. For some objects, there are additional values over which the entries will be ignored while keeping the most important entries whenever applicable.
-     * To get the most out of your analysis when it includes data above the supported limits, try to optimize the analysis configuration. For example, for the CodeQL tool, identify and remove the most noisy queries. For more information, see "[SARIF results exceed one or more limits](https://docs.github.com/code-security/code-scanning/troubleshooting-sarif/results-exceed-limit)."
-     *
-     *
-     * | **SARIF data**                   | **Maximum values** | **Additional limits**                                                            |
-     * |----------------------------------|:------------------:|----------------------------------------------------------------------------------|
-     * | Runs per file                    |         20         |                                                                                  |
-     * | Results per run                  |       25,000       | Only the top 5,000 results will be included, prioritized by severity.            |
-     * | Rules per run                    |       25,000       |                                                                                  |
-     * | Tool extensions per run          |        100         |                                                                                  |
-     * | Thread Flow Locations per result |       10,000       | Only the top 1,000 Thread Flow Locations will be included, using prioritization. |
-     * | Location per result	             |       1,000        | Only 100 locations will be included.                                             |
-     * | Tags per rule	                   |         20         | Only 10 tags will be included.                                                   |
-     *
-     *
-     * The `202 Accepted` response includes an `id` value.
-     * You can use this ID to check the status of the upload by using it in the `/sarifs/{sarif_id}` endpoint.
-     * For more information, see "[Get information about a SARIF upload](/rest/code-scanning/code-scanning#get-information-about-a-sarif-upload)."
-     */
-    post: operations["code-scanning/upload-sarif"];
-  };
-  "/repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}": {
-    /**
-     * Get information about a SARIF upload
-     * @description Gets information about a SARIF upload, including the status and the URL of the analysis that was uploaded so that you can retrieve details of the analysis. For more information, see "[Get a code scanning analysis for a repository](/rest/code-scanning/code-scanning#get-a-code-scanning-analysis-for-a-repository)." You must use an access token with the `security_events` scope to use this endpoint with private repos, the `public_repo` scope also grants permission to read security events on public repos only. GitHub Apps must have the `security_events` read permission to use this endpoint.
-     */
-    get: operations["code-scanning/get-sarif"];
-  };
-  "/repos/{owner}/{repo}/codeowners/errors": {
-    /**
-     * List CODEOWNERS errors
-     * @description List any syntax errors that are detected in the CODEOWNERS
-     * file.
-     *
-     * For more information about the correct CODEOWNERS syntax,
-     * see "[About code owners](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)."
-     */
-    get: operations["repos/codeowners-errors"];
-  };
-  "/repos/{owner}/{repo}/codespaces": {
-    /**
-     * List codespaces in a repository for the authenticated user
-     * @description Lists the codespaces associated to a specified repository and the authenticated user.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint.
-     */
-    get: operations["codespaces/list-in-repository-for-authenticated-user"];
-    /**
-     * Create a codespace in a repository
-     * @description Creates a codespace owned by the authenticated user in the specified repository.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-     */
-    post: operations["codespaces/create-with-repo-for-authenticated-user"];
-  };
-  "/repos/{owner}/{repo}/codespaces/devcontainers": {
-    /**
-     * List devcontainer configurations in a repository for the authenticated user
-     * @description Lists the devcontainer.json files associated with a specified repository and the authenticated user. These files
-     * specify launchpoint configurations for codespaces created within the repository.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have read access to the `codespaces_metadata` repository permission to use this endpoint.
-     */
-    get: operations["codespaces/list-devcontainers-in-repository-for-authenticated-user"];
-  };
-  "/repos/{owner}/{repo}/codespaces/machines": {
-    /**
-     * List available machine types for a repository
-     * @description List the machine types available for a given repository based on its configuration.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces_metadata` repository permission to use this endpoint.
-     */
-    get: operations["codespaces/repo-machines-for-authenticated-user"];
-  };
-  "/repos/{owner}/{repo}/codespaces/new": {
-    /**
-     * Get default attributes for a codespace
-     * @description Gets the default attributes for codespaces created by the user with the repository.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-     */
-    get: operations["codespaces/pre-flight-with-repo-for-authenticated-user"];
-  };
-  "/repos/{owner}/{repo}/codespaces/permissions_check": {
-    /**
-     * Check if permissions defined by a devcontainer have been accepted by the authenticated user
-     * @description Checks whether the permissions defined by a given devcontainer configuration have been accepted by the authenticated user.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-     */
-    get: operations["codespaces/check-permissions-for-devcontainer"];
-  };
-  "/repos/{owner}/{repo}/codespaces/secrets": {
-    /**
-     * List repository secrets
-     * @description Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have write access to the `codespaces_secrets` repository permission to use this endpoint.
-     */
-    get: operations["codespaces/list-repo-secrets"];
-  };
-  "/repos/{owner}/{repo}/codespaces/secrets/public-key": {
-    /**
-     * Get a repository public key
-     * @description Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have write access to the `codespaces_secrets` repository permission to use this endpoint.
-     */
-    get: operations["codespaces/get-repo-public-key"];
-  };
-  "/repos/{owner}/{repo}/codespaces/secrets/{secret_name}": {
-    /**
-     * Get a repository secret
-     * @description Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have write access to the `codespaces_secrets` repository permission to use this endpoint.
-     */
-    get: operations["codespaces/get-repo-secret"];
-    /**
-     * Create or update a repository secret
-     * @description Creates or updates a repository secret with an encrypted value. Encrypt your secret using
-     * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-     *
-     * You must authenticate using an access
-     * token with the `repo` scope to use this endpoint. GitHub Apps must have write access to the `codespaces_secrets`
-     * repository permission to use this endpoint.
-     */
-    put: operations["codespaces/create-or-update-repo-secret"];
-    /**
-     * Delete a repository secret
-     * @description Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have write access to the `codespaces_secrets` repository permission to use this endpoint.
-     */
-    delete: operations["codespaces/delete-repo-secret"];
-  };
-  "/repos/{owner}/{repo}/collaborators": {
-    /**
-     * List repository collaborators
-     * @description For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.
-     * Organization members with write, maintain, or admin privileges on the organization-owned repository can use this endpoint.
-     *
-     * Team members will include the members of child teams.
-     *
-     * You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this
-     * endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this
-     * endpoint.
-     */
-    get: operations["repos/list-collaborators"];
-  };
-  "/repos/{owner}/{repo}/collaborators/{username}": {
-    /**
-     * Check if a user is a repository collaborator
-     * @description For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.
-     *
-     * Team members will include the members of child teams.
-     *
-     * You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this
-     * endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this
-     * endpoint.
-     */
-    get: operations["repos/check-collaborator"];
-    /**
-     * Add a repository collaborator
-     * @description This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     *
-     * Adding an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)."
-     *
-     * For more information on permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". There are restrictions on which permissions can be granted to organization members when an organization base role is in place. In this case, the permission being given must be equal to or higher than the org base permission. Otherwise, the request will fail with:
-     *
-     * ```
-     * Cannot assign {member} permission of {role name}
-     * ```
-     *
-     * 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 verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-     *
-     * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [API](https://docs.github.com/rest/collaborators/invitations).
-     *
-     * **Updating an existing collaborator's permission level**
-     *
-     * The endpoint can also be used to change the permissions of an existing collaborator without first removing and re-adding the collaborator. To change the permissions, use the same endpoint and pass a different `permission` parameter. The response will be a `204`, with no other indication that the permission level changed.
-     *
-     * **Rate limits**
-     *
-     * You are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository.
-     */
-    put: operations["repos/add-collaborator"];
-    /**
-     * Remove a repository collaborator
-     * @description Removes a collaborator from a repository.
-     *
-     * To use this endpoint, the authenticated user must either be an administrator of the repository or target themselves for removal.
-     *
-     * This endpoint also:
-     * - Cancels any outstanding invitations
-     * - Unasigns the user from any issues
-     * - Removes access to organization projects if the user is not an organization member and is not a collaborator on any other organization repositories.
-     * - Unstars the repository
-     * - Updates access permissions to packages
-     *
-     * Removing a user as a collaborator has the following effects on forks:
-     *  - If the user had access to a fork through their membership to this repository, the user will also be removed from the fork.
-     *  - If the user had their own fork of the repository, the fork will be deleted.
-     *  - If the user still has read access to the repository, open pull requests by this user from a fork will be denied.
-     *
-     * **Note**: A user can still have access to the repository through organization permissions like base repository permissions.
-     *
-     * Although the API responds immediately, the additional permission updates might take some extra time to complete in the background.
-     *
-     * For more information on fork permissions, see "[About permissions and visibility of forks](https://docs.github.com/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks)".
-     */
-    delete: operations["repos/remove-collaborator"];
-  };
-  "/repos/{owner}/{repo}/collaborators/{username}/permission": {
-    /**
-     * Get repository permissions for a user
-     * @description Checks the repository permission of a collaborator. The possible repository
-     * permissions are `admin`, `write`, `read`, and `none`.
-     *
-     * *Note*: The `permission` attribute provides the legacy base roles of `admin`, `write`, `read`, and `none`, where the
-     * `maintain` role is mapped to `write` and the `triage` role is mapped to `read`. To determine the role assigned to the
-     * collaborator, see the `role_name` attribute, which will provide the full role name, including custom roles. The
-     * `permissions` hash can also be used to determine which base level of access the collaborator has to the repository.
-     */
-    get: operations["repos/get-collaborator-permission-level"];
-  };
-  "/repos/{owner}/{repo}/comments": {
-    /**
-     * List commit comments for a repository
-     * @description Commit Comments use [these custom media types](https://docs.github.com/rest/overview/media-types). You can read more about the use of media types in the API [here](https://docs.github.com/rest/overview/media-types/).
-     *
-     * Comments are ordered by ascending ID.
-     */
-    get: operations["repos/list-commit-comments-for-repo"];
-  };
-  "/repos/{owner}/{repo}/comments/{comment_id}": {
-    /** Get a commit comment */
-    get: operations["repos/get-commit-comment"];
-    /** Delete a commit comment */
-    delete: operations["repos/delete-commit-comment"];
-    /** Update a commit comment */
-    patch: operations["repos/update-commit-comment"];
-  };
-  "/repos/{owner}/{repo}/comments/{comment_id}/reactions": {
-    /**
-     * List reactions for a commit comment
-     * @description List the reactions to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment).
-     */
-    get: operations["reactions/list-for-commit-comment"];
-    /**
-     * Create reaction for a commit comment
-     * @description Create a reaction to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment). A response with an HTTP `200` status means that you already added the reaction type to this commit comment.
-     */
-    post: operations["reactions/create-for-commit-comment"];
-  };
-  "/repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}": {
-    /**
-     * Delete a commit comment reaction
-     * @description **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/comments/:comment_id/reactions/:reaction_id`.
-     *
-     * Delete a reaction to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment).
-     */
-    delete: operations["reactions/delete-for-commit-comment"];
-  };
-  "/repos/{owner}/{repo}/commits": {
-    /**
-     * List commits
-     * @description **Signature verification object**
-     *
-     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-     *
-     * | Name | Type | Description |
-     * | ---- | ---- | ----------- |
-     * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-     * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-     * | `signature` | `string` | The signature that was extracted from the commit. |
-     * | `payload` | `string` | The value that was signed. |
-     *
-     * These are the possible values for `reason` in the `verification` object:
-     *
-     * | Value | Description |
-     * | ----- | ----------- |
-     * | `expired_key` | The key that made the signature is expired. |
-     * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-     * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-     * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-     * | `unsigned` | The object does not include a signature. |
-     * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-     * | `no_user` | No user was associated with the `committer` email address in the commit. |
-     * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-     * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-     * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-     * | `malformed_signature` | There was an error parsing the signature. |
-     * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-     * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-     */
-    get: operations["repos/list-commits"];
-  };
-  "/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": {
-    /**
-     * List branches for HEAD commit
-     * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch.
-     */
-    get: operations["repos/list-branches-for-head-commit"];
-  };
-  "/repos/{owner}/{repo}/commits/{commit_sha}/comments": {
-    /**
-     * List commit comments
-     * @description Use the `:commit_sha` to specify the commit that will have its comments listed.
-     */
-    get: operations["repos/list-comments-for-commit"];
-    /**
-     * Create a commit comment
-     * @description Create a comment for a commit using its `:commit_sha`.
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     */
-    post: operations["repos/create-commit-comment"];
-  };
-  "/repos/{owner}/{repo}/commits/{commit_sha}/pulls": {
-    /**
-     * List pull requests associated with a commit
-     * @description Lists the merged pull request that introduced the commit to the repository. If the commit is not present in the default branch, will only return open pull requests associated with the commit.
-     *
-     * To list the open or merged pull requests associated with a branch, you can set the `commit_sha` parameter to the branch name.
-     */
-    get: operations["repos/list-pull-requests-associated-with-commit"];
-  };
-  "/repos/{owner}/{repo}/commits/{ref}": {
-    /**
-     * Get a commit
-     * @description Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint.
-     *
-     * **Note:** If there are more than 300 files in the commit diff, the response will include pagination link headers for the remaining files, up to a limit of 3000 files. Each page contains the static commit information, and the only changes are to the file listing.
-     *
-     * You can pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to  fetch `diff` and `patch` formats. Diffs with binary data will have no `patch` property.
-     *
-     * To return only the SHA-1 hash of the commit reference, you can provide the `sha` custom [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) in the `Accept` header. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag.
-     *
-     * **Signature verification object**
-     *
-     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-     *
-     * | Name | Type | Description |
-     * | ---- | ---- | ----------- |
-     * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-     * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-     * | `signature` | `string` | The signature that was extracted from the commit. |
-     * | `payload` | `string` | The value that was signed. |
-     *
-     * These are the possible values for `reason` in the `verification` object:
-     *
-     * | Value | Description |
-     * | ----- | ----------- |
-     * | `expired_key` | The key that made the signature is expired. |
-     * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-     * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-     * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-     * | `unsigned` | The object does not include a signature. |
-     * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-     * | `no_user` | No user was associated with the `committer` email address in the commit. |
-     * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-     * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-     * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-     * | `malformed_signature` | There was an error parsing the signature. |
-     * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-     * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-     */
-    get: operations["repos/get-commit"];
-  };
-  "/repos/{owner}/{repo}/commits/{ref}/check-runs": {
-    /**
-     * List check runs for a Git reference
-     * @description Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth apps and authenticated users must have the `repo` scope to get check runs in a private repository.
-     *
-     * **Note:** The endpoints to manage checks only look 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.
-     *
-     * If there are more than 1000 check suites on a single git reference, this endpoint will limit check runs to the 1000 most recent check suites. To iterate over all possible check runs, use the [List check suites for a Git reference](https://docs.github.com/rest/reference/checks#list-check-suites-for-a-git-reference) endpoint and provide the `check_suite_id` parameter to the [List check runs in a check suite](https://docs.github.com/rest/reference/checks#list-check-runs-in-a-check-suite) endpoint.
-     */
-    get: operations["checks/list-for-ref"];
-  };
-  "/repos/{owner}/{repo}/commits/{ref}/check-suites": {
-    /**
-     * List check suites for a Git reference
-     * @description Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to list check suites. OAuth apps and authenticated users must have the `repo` scope to get check suites in a private repository.
-     *
-     * **Note:** The endpoints to manage checks only look 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`.
-     */
-    get: operations["checks/list-suites-for-ref"];
-  };
-  "/repos/{owner}/{repo}/commits/{ref}/status": {
-    /**
-     * Get the combined status for a specific reference
-     * @description Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name.
-     *
-     *
-     * Additionally, a combined `state` is returned. The `state` is one of:
-     *
-     * *   **failure** if any of the contexts report as `error` or `failure`
-     * *   **pending** if there are no statuses or a context is `pending`
-     * *   **success** if the latest status for all contexts is `success`
-     */
-    get: operations["repos/get-combined-status-for-ref"];
-  };
-  "/repos/{owner}/{repo}/commits/{ref}/statuses": {
-    /**
-     * List commit statuses for a reference
-     * @description Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one.
-     *
-     * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`.
-     */
-    get: operations["repos/list-commit-statuses-for-ref"];
-  };
-  "/repos/{owner}/{repo}/community/profile": {
-    /**
-     * Get community profile metrics
-     * @description Returns all community profile metrics for a repository. The repository cannot be a fork.
-     *
-     * The returned metrics include an overall health score, the repository description, the presence of documentation, the
-     * detected code of conduct, the detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE,
-     * README, and CONTRIBUTING files.
-     *
-     * The `health_percentage` score is defined as a percentage of how many of
-     * the recommended community health files are present. For more information, see
-     * "[About community profiles for public repositories](https://docs.github.com/communities/setting-up-your-project-for-healthy-contributions/about-community-profiles-for-public-repositories)."
-     *
-     * `content_reports_enabled` is only returned for organization-owned repositories.
-     */
-    get: operations["repos/get-community-profile-metrics"];
-  };
-  "/repos/{owner}/{repo}/compare/{basehead}": {
-    /**
-     * Compare two commits
-     * @description Compares two commits against one another. You can compare branches in the same repository, or you can compare branches that exist in different repositories within the same repository network, including fork branches. For more information about how to view a repository's network, see "[Understanding connections between repositories](https://docs.github.com/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories)."
-     *
-     * This endpoint is equivalent to running the `git log BASE..HEAD` command, but it returns commits in a different order. The `git log BASE..HEAD` command returns commits in reverse chronological order, whereas the API returns commits in chronological order. You can pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
-     *
-     * The API response includes details about the files that were changed between the two commits. This includes the status of the change (if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file.
-     *
-     * When calling this endpoint without any paging parameter (`per_page` or `page`), the returned list is limited to 250 commits, and the last commit in the list is the most recent of the entire comparison.
-     *
-     * **Working with large comparisons**
-     *
-     * To process a response with a large number of commits, use a query parameter (`per_page` or `page`) to paginate the results. When using pagination:
-     *
-     * - The list of changed files is only shown on the first page of results, but it includes all changed files for the entire comparison.
-     * - The results are returned in chronological order, but the last commit in the returned list may not be the most recent one in the entire set if there are more pages of results.
-     *
-     * For more information on working with pagination, see "[Using pagination in the REST API](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api)."
-     *
-     * **Signature verification object**
-     *
-     * The response will include a `verification` object that describes the result of verifying the commit's signature. The `verification` object includes the following fields:
-     *
-     * | Name | Type | Description |
-     * | ---- | ---- | ----------- |
-     * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-     * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-     * | `signature` | `string` | The signature that was extracted from the commit. |
-     * | `payload` | `string` | The value that was signed. |
-     *
-     * These are the possible values for `reason` in the `verification` object:
-     *
-     * | Value | Description |
-     * | ----- | ----------- |
-     * | `expired_key` | The key that made the signature is expired. |
-     * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-     * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-     * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-     * | `unsigned` | The object does not include a signature. |
-     * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-     * | `no_user` | No user was associated with the `committer` email address in the commit. |
-     * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-     * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-     * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-     * | `malformed_signature` | There was an error parsing the signature. |
-     * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-     * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-     */
-    get: operations["repos/compare-commits-with-basehead"];
-  };
-  "/repos/{owner}/{repo}/contents/{path}": {
-    /**
-     * Get repository content
-     * @description Gets the contents of a file or directory in a repository. Specify the file path or directory in `:path`. If you omit
-     * `:path`, you will receive the contents of the repository's root directory. See the description below regarding what the API response includes for directories.
-     *
-     * Files and symlinks support [a custom media type](https://docs.github.com/rest/overview/media-types) for
-     * retrieving the raw content or rendered HTML (when supported). All content types support [a custom media
-     * type](https://docs.github.com/rest/overview/media-types) to ensure the content is returned in a consistent
-     * object format.
-     *
-     * **Notes**:
-     * *   To get a repository's contents recursively, you can [recursively get the tree](https://docs.github.com/rest/git/trees#get-a-tree).
-     * *   This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees
-     * API](https://docs.github.com/rest/git/trees#get-a-tree).
-     *  *  Download URLs expire and are meant to be used just once. To ensure the download URL does not expire, please use the contents API to obtain a fresh download URL for each download.
-     *  Size limits:
-     * If the requested file's size is:
-     * * 1 MB or smaller: All features of this endpoint are supported.
-     * * Between 1-100 MB: Only the `raw` or `object` [custom media types](https://docs.github.com/rest/repos/contents#custom-media-types-for-repository-contents) are supported. Both will work as normal, except that when using the `object` media type, the `content` field will be an empty string and the `encoding` field will be `"none"`. To get the contents of these larger files, use the `raw` media type.
-     *  * Greater than 100 MB: This endpoint is not supported.
-     *
-     *  If the content is a directory:
-     * The response will be an array of objects, one object for each item in the directory.
-     * When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value
-     * _should_ be "submodule". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW).
-     * In the next major version of the API, the type will be returned as "submodule".
-     *
-     *  If the content is a symlink:
-     * If the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the
-     * API responds with the content of the file (in the format shown in the example. Otherwise, the API responds with an object
-     * describing the symlink itself.
-     *
-     *  If the content is a submodule:
-     * The `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific
-     * commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out
-     * the submodule at that specific commit.
-     *
-     * If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the
-     * github.com URLs (`html_url` and `_links["html"]`) will have null values.
-     */
-    get: operations["repos/get-content"];
-    /**
-     * Create or update file contents
-     * @description Creates a new file or replaces an existing file in a repository. You must authenticate using an access token with the `repo` scope to use this endpoint. If you want to modify files in the `.github/workflows` directory, you must authenticate using an access token with the `workflow` scope.
-     *
-     * **Note:** If you use this endpoint and the "[Delete a file](https://docs.github.com/rest/repos/contents/#delete-a-file)" endpoint in parallel, the concurrent requests will conflict and you will receive errors. You must use these endpoints serially instead.
-     */
-    put: operations["repos/create-or-update-file-contents"];
-    /**
-     * Delete a file
-     * @description Deletes a file in a repository.
-     *
-     * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author.
-     *
-     * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used.
-     *
-     * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code.
-     *
-     * **Note:** If you use this endpoint and the "[Create or update file contents](https://docs.github.com/rest/repos/contents/#create-or-update-file-contents)" endpoint in parallel, the concurrent requests will conflict and you will receive errors. You must use these endpoints serially instead.
-     */
-    delete: operations["repos/delete-file"];
-  };
-  "/repos/{owner}/{repo}/contributors": {
-    /**
-     * List repository contributors
-     * @description Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API caches contributor data to improve performance.
-     *
-     * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information.
-     */
-    get: operations["repos/list-contributors"];
-  };
-  "/repos/{owner}/{repo}/dependabot/alerts": {
-    /**
-     * List Dependabot alerts for a repository
-     * @description You must use an access token with the `security_events` scope to use this endpoint with private repositories.
-     * You can also use tokens with the `public_repo` scope for public repositories only.
-     * GitHub Apps must have **Dependabot alerts** read permission to use this endpoint.
-     */
-    get: operations["dependabot/list-alerts-for-repo"];
-  };
-  "/repos/{owner}/{repo}/dependabot/alerts/{alert_number}": {
-    /**
-     * Get a Dependabot alert
-     * @description You must use an access token with the `security_events` scope to use this endpoint with private repositories.
-     * You can also use tokens with the `public_repo` scope for public repositories only.
-     * GitHub Apps must have **Dependabot alerts** read permission to use this endpoint.
-     */
-    get: operations["dependabot/get-alert"];
-    /**
-     * Update a Dependabot alert
-     * @description You must use an access token with the `security_events` scope to use this endpoint with private repositories.
-     * You can also use tokens with the `public_repo` scope for public repositories only.
-     * GitHub Apps must have **Dependabot alerts** write permission to use this endpoint.
-     *
-     * To use this endpoint, you must have access to security alerts for the repository. For more information, see "[Granting access to security alerts](https://docs.github.com/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)."
-     */
-    patch: operations["dependabot/update-alert"];
-  };
-  "/repos/{owner}/{repo}/dependabot/secrets": {
-    /**
-     * List repository secrets
-     * @description Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint.
-     */
-    get: operations["dependabot/list-repo-secrets"];
-  };
-  "/repos/{owner}/{repo}/dependabot/secrets/public-key": {
-    /**
-     * Get a repository public key
-     * @description Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint.
-     */
-    get: operations["dependabot/get-repo-public-key"];
-  };
-  "/repos/{owner}/{repo}/dependabot/secrets/{secret_name}": {
-    /**
-     * Get a repository secret
-     * @description Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint.
-     */
-    get: operations["dependabot/get-repo-secret"];
-    /**
-     * Create or update a repository secret
-     * @description Creates or updates a repository secret with an encrypted value. Encrypt your secret using
-     * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-     *
-     * You must authenticate using an access
-     * token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository
-     * permission to use this endpoint.
-     */
-    put: operations["dependabot/create-or-update-repo-secret"];
-    /**
-     * Delete a repository secret
-     * @description Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint.
-     */
-    delete: operations["dependabot/delete-repo-secret"];
-  };
-  "/repos/{owner}/{repo}/dependency-graph/compare/{basehead}": {
-    /**
-     * Get a diff of the dependencies between commits
-     * @description Gets the diff of the dependency changes between two commits of a repository, based on the changes to the dependency manifests made in those commits.
-     */
-    get: operations["dependency-graph/diff-range"];
-  };
-  "/repos/{owner}/{repo}/dependency-graph/sbom": {
-    /**
-     * Export a software bill of materials (SBOM) for a repository.
-     * @description Exports the software bill of materials (SBOM) for a repository in SPDX JSON format.
-     */
-    get: operations["dependency-graph/export-sbom"];
-  };
-  "/repos/{owner}/{repo}/dependency-graph/snapshots": {
-    /**
-     * Create a snapshot of dependencies for a repository
-     * @description Create a new snapshot of a repository's dependencies. You must authenticate using an access token with the `repo` scope to use this endpoint for a repository that the requesting user has access to.
-     */
-    post: operations["dependency-graph/create-repository-snapshot"];
-  };
-  "/repos/{owner}/{repo}/deployments": {
-    /**
-     * List deployments
-     * @description Simple filtering of deployments is available via query parameters:
-     */
-    get: operations["repos/list-deployments"];
-    /**
-     * Create a deployment
-     * @description Deployments offer a few configurable parameters with certain defaults.
-     *
-     * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them
-     * before we merge a pull request.
-     *
-     * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have
-     * multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter
-     * makes it easier to track which environments have requested deployments. The default environment is `production`.
-     *
-     * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If
-     * the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds,
-     * the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will
-     * return a failure response.
-     *
-     * By default, [commit statuses](https://docs.github.com/rest/commits/statuses) for every submitted context must be in a `success`
-     * state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to
-     * specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do
-     * not require any contexts or create any commit statuses, the deployment will always succeed.
-     *
-     * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text
-     * field that will be passed on when a deployment event is dispatched.
-     *
-     * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might
-     * be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an
-     * application with debugging enabled.
-     *
-     * Users with `repo` or `repo_deployment` scopes can create a deployment for a given ref.
-     *
-     * Merged branch response:
-     *
-     * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating
-     * a deployment. This auto-merge happens when:
-     * *   Auto-merge option is enabled in the repository
-     * *   Topic branch does not include the latest changes on the base branch, which is `master` in the response example
-     * *   There are no merge conflicts
-     *
-     * If there are no new commits in the base branch, a new request to create a deployment should give a successful
-     * response.
-     *
-     * Merge conflict response:
-     *
-     * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't
-     * be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts.
-     *
-     * Failed commit status checks:
-     *
-     * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success`
-     * status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`.
-     */
-    post: operations["repos/create-deployment"];
-  };
-  "/repos/{owner}/{repo}/deployments/{deployment_id}": {
-    /** Get a deployment */
-    get: operations["repos/get-deployment"];
-    /**
-     * Delete a deployment
-     * @description If the repository only has one deployment, you can delete the deployment regardless of its status. If the repository has more than one deployment, you can only delete inactive deployments. This ensures that repositories with multiple deployments will always have an active deployment. Anyone with `repo` or `repo_deployment` scopes can delete a deployment.
-     *
-     * To set a deployment as inactive, you must:
-     *
-     * *   Create a new deployment that is active so that the system has a record of the current state, then delete the previously active deployment.
-     * *   Mark the active deployment as inactive by adding any non-successful deployment status.
-     *
-     * For more information, see "[Create a deployment](https://docs.github.com/rest/deployments/deployments/#create-a-deployment)" and "[Create a deployment status](https://docs.github.com/rest/deployments/statuses#create-a-deployment-status)."
-     */
-    delete: operations["repos/delete-deployment"];
-  };
-  "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses": {
-    /**
-     * List deployment statuses
-     * @description Users with pull access can view deployment statuses for a deployment:
-     */
-    get: operations["repos/list-deployment-statuses"];
-    /**
-     * Create a deployment status
-     * @description Users with `push` access can create deployment statuses for a given deployment.
-     *
-     * GitHub Apps require `read & write` access to "Deployments" and `read-only` access to "Repo contents" (for private repos). OAuth apps require the `repo_deployment` scope.
-     */
-    post: operations["repos/create-deployment-status"];
-  };
-  "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}": {
-    /**
-     * Get a deployment status
-     * @description Users with pull access can view a deployment status for a deployment:
-     */
-    get: operations["repos/get-deployment-status"];
-  };
-  "/repos/{owner}/{repo}/dispatches": {
-    /**
-     * Create a repository dispatch event
-     * @description You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://docs.github.com/webhooks/event-payloads/#repository_dispatch)."
-     *
-     * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow.
-     *
-     * This endpoint requires write access to the repository by providing either:
-     *
-     *   - Personal access tokens with `repo` scope. For more information, see "[Creating a personal access token for the command line](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line)" in the GitHub Help documentation.
-     *   - GitHub Apps with both `metadata:read` and `contents:read&write` permissions.
-     *
-     * This input example shows how you can use the `client_payload` as a test to debug your workflow.
-     */
-    post: operations["repos/create-dispatch-event"];
-  };
-  "/repos/{owner}/{repo}/environments": {
-    /**
-     * List environments
-     * @description Lists the environments for a repository.
-     *
-     * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["repos/get-all-environments"];
-  };
-  "/repos/{owner}/{repo}/environments/{environment_name}": {
-    /**
-     * Get an environment
-     * @description **Note:** To get information about name patterns that branches must match in order to deploy to this environment, see "[Get a deployment branch policy](/rest/deployments/branch-policies#get-a-deployment-branch-policy)."
-     *
-     * Anyone with read access to the repository can use this endpoint. If the
-     * repository is private, you must use an access token with the `repo` scope. GitHub
-     * Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["repos/get-environment"];
-    /**
-     * Create or update an environment
-     * @description Create or update an environment with protection rules, such as required reviewers. For more information about environment protection rules, see "[Environments](/actions/reference/environments#environment-protection-rules)."
-     *
-     * **Note:** To create or update name patterns that branches must match in order to deploy to this environment, see "[Deployment branch policies](/rest/deployments/branch-policies)."
-     *
-     * **Note:** To create or update secrets for an environment, see "[GitHub Actions secrets](/rest/actions/secrets)."
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration:write` permission for the repository to use this endpoint.
-     */
-    put: operations["repos/create-or-update-environment"];
-    /**
-     * Delete an environment
-     * @description You must authenticate using an access token with the repo scope to use this endpoint.
-     */
-    delete: operations["repos/delete-an-environment"];
-  };
-  "/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies": {
-    /**
-     * List deployment branch policies
-     * @description Lists the deployment branch policies for an environment.
-     *
-     * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["repos/list-deployment-branch-policies"];
-    /**
-     * Create a deployment branch policy
-     * @description Creates a deployment branch or tag policy for an environment.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration:write` permission for the repository to use this endpoint.
-     */
-    post: operations["repos/create-deployment-branch-policy"];
-  };
-  "/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}": {
-    /**
-     * Get a deployment branch policy
-     * @description Gets a deployment branch or tag policy for an environment.
-     *
-     * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-     */
-    get: operations["repos/get-deployment-branch-policy"];
-    /**
-     * Update a deployment branch policy
-     * @description Updates a deployment branch or tag policy for an environment.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration:write` permission for the repository to use this endpoint.
-     */
-    put: operations["repos/update-deployment-branch-policy"];
-    /**
-     * Delete a deployment branch policy
-     * @description Deletes a deployment branch or tag policy for an environment.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration:write` permission for the repository to use this endpoint.
-     */
-    delete: operations["repos/delete-deployment-branch-policy"];
-  };
-  "/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules": {
-    /**
-     * Get all deployment protection rules for an environment
-     * @description Gets all custom deployment protection rules that are enabled for an environment. Anyone with read access to the repository can use this endpoint. If the repository is private and you want to use a personal access token (classic), you must use an access token with the `repo` scope. GitHub Apps and fine-grained personal access tokens must have the `actions:read` permission to use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
-     *
-     * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app).
-     */
-    get: operations["repos/get-all-deployment-protection-rules"];
-    /**
-     * Create a custom deployment protection rule on an environment
-     * @description Enable a custom deployment protection rule for an environment.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. Enabling a custom protection rule requires admin or owner permissions to the repository. GitHub Apps must have the `actions:write` permission to use this endpoint.
-     *
-     * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app).
-     */
-    post: operations["repos/create-deployment-protection-rule"];
-  };
-  "/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps": {
-    /**
-     * List custom deployment rule integrations available for an environment
-     * @description Gets all custom deployment protection rule integrations that are available for an environment. Anyone with read access to the repository can use this endpoint. If the repository is private and you want to use a personal access token (classic), you must use an access token with the `repo` scope. GitHub Apps and fine-grained personal access tokens must have the `actions:read` permission to use this endpoint.
-     *
-     * For more information about environments, see "[Using environments for deployment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
-     *
-     * For more information about the app that is providing this custom deployment rule, see "[GET an app](https://docs.github.com/rest/apps/apps#get-an-app)".
-     */
-    get: operations["repos/list-custom-deployment-rule-integrations"];
-  };
-  "/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}": {
-    /**
-     * Get a custom deployment protection rule
-     * @description Gets an enabled custom deployment protection rule for an environment. Anyone with read access to the repository can use this endpoint. If the repository is private and you want to use a personal access token (classic), you must use an access token with the `repo` scope. GitHub Apps and fine-grained personal access tokens must have the `actions:read` permission to use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
-     *
-     * For more information about the app that is providing this custom deployment rule, see [`GET /apps/{app_slug}`](https://docs.github.com/rest/apps/apps#get-an-app).
-     */
-    get: operations["repos/get-custom-deployment-protection-rule"];
-    /**
-     * Disable a custom protection rule for an environment
-     * @description Disables a custom deployment protection rule for an environment.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint. Removing a custom protection rule requires admin or owner permissions to the repository. GitHub Apps must have the `actions:write` permission to use this endpoint. For more information, see "[Get an app](https://docs.github.com/rest/apps/apps#get-an-app)".
-     */
-    delete: operations["repos/disable-deployment-protection-rule"];
-  };
-  "/repos/{owner}/{repo}/events": {
-    /**
-     * List repository events
-     * @description **Note**: This 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.
-     */
-    get: operations["activity/list-repo-events"];
-  };
-  "/repos/{owner}/{repo}/forks": {
-    /** List forks */
-    get: operations["repos/list-forks"];
-    /**
-     * Create a fork
-     * @description Create a fork for the authenticated user.
-     *
-     * **Note**: Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api).
-     *
-     * **Note**: Although this endpoint works with GitHub Apps, the GitHub App must be installed on the destination account with access to all repositories and on the source account with access to the source repository.
-     */
-    post: operations["repos/create-fork"];
-  };
-  "/repos/{owner}/{repo}/git/blobs": {
-    /** Create a blob */
-    post: operations["git/create-blob"];
-  };
-  "/repos/{owner}/{repo}/git/blobs/{file_sha}": {
-    /**
-     * Get a blob
-     * @description The `content` in the response will always be Base64 encoded.
-     *
-     * _Note_: This API supports blobs up to 100 megabytes in size.
-     */
-    get: operations["git/get-blob"];
-  };
-  "/repos/{owner}/{repo}/git/commits": {
-    /**
-     * Create a commit
-     * @description Creates a new Git [commit object](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects).
-     *
-     * **Signature verification object**
-     *
-     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-     *
-     * | Name | Type | Description |
-     * | ---- | ---- | ----------- |
-     * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-     * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. |
-     * | `signature` | `string` | The signature that was extracted from the commit. |
-     * | `payload` | `string` | The value that was signed. |
-     *
-     * These are the possible values for `reason` in the `verification` object:
-     *
-     * | Value | Description |
-     * | ----- | ----------- |
-     * | `expired_key` | The key that made the signature is expired. |
-     * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-     * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-     * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-     * | `unsigned` | The object does not include a signature. |
-     * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-     * | `no_user` | No user was associated with the `committer` email address in the commit. |
-     * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-     * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-     * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-     * | `malformed_signature` | There was an error parsing the signature. |
-     * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-     * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-     */
-    post: operations["git/create-commit"];
-  };
-  "/repos/{owner}/{repo}/git/commits/{commit_sha}": {
-    /**
-     * Get a commit object
-     * @description Gets a Git [commit object](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects).
-     *
-     * To get the contents of a commit, see "[Get a commit](/rest/commits/commits#get-a-commit)."
-     *
-     * **Signature verification object**
-     *
-     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-     *
-     * | Name | Type | Description |
-     * | ---- | ---- | ----------- |
-     * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-     * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. |
-     * | `signature` | `string` | The signature that was extracted from the commit. |
-     * | `payload` | `string` | The value that was signed. |
-     *
-     * These are the possible values for `reason` in the `verification` object:
-     *
-     * | Value | Description |
-     * | ----- | ----------- |
-     * | `expired_key` | The key that made the signature is expired. |
-     * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-     * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-     * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-     * | `unsigned` | The object does not include a signature. |
-     * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-     * | `no_user` | No user was associated with the `committer` email address in the commit. |
-     * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-     * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-     * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-     * | `malformed_signature` | There was an error parsing the signature. |
-     * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-     * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-     */
-    get: operations["git/get-commit"];
-  };
-  "/repos/{owner}/{repo}/git/matching-refs/{ref}": {
-    /**
-     * List matching references
-     * @description Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/<branch name>` for branches and `tags/<tag name>` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array.
-     *
-     * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`.
-     *
-     * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)".
-     *
-     * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`.
-     */
-    get: operations["git/list-matching-refs"];
-  };
-  "/repos/{owner}/{repo}/git/ref/{ref}": {
-    /**
-     * Get a reference
-     * @description Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/<branch name>` for branches and `tags/<tag name>` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned.
-     *
-     * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)".
-     */
-    get: operations["git/get-ref"];
-  };
-  "/repos/{owner}/{repo}/git/refs": {
-    /**
-     * Create a reference
-     * @description Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches.
-     */
-    post: operations["git/create-ref"];
-  };
-  "/repos/{owner}/{repo}/git/refs/{ref}": {
-    /** Delete a reference */
-    delete: operations["git/delete-ref"];
-    /** Update a reference */
-    patch: operations["git/update-ref"];
-  };
-  "/repos/{owner}/{repo}/git/tags": {
-    /**
-     * Create a tag object
-     * @description Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://docs.github.com/rest/git/refs#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://docs.github.com/rest/git/refs#create-a-reference) the tag reference - this call would be unnecessary.
-     *
-     * **Signature verification object**
-     *
-     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-     *
-     * | Name | Type | Description |
-     * | ---- | ---- | ----------- |
-     * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-     * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-     * | `signature` | `string` | The signature that was extracted from the commit. |
-     * | `payload` | `string` | The value that was signed. |
-     *
-     * These are the possible values for `reason` in the `verification` object:
-     *
-     * | Value | Description |
-     * | ----- | ----------- |
-     * | `expired_key` | The key that made the signature is expired. |
-     * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-     * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-     * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-     * | `unsigned` | The object does not include a signature. |
-     * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-     * | `no_user` | No user was associated with the `committer` email address in the commit. |
-     * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-     * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-     * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-     * | `malformed_signature` | There was an error parsing the signature. |
-     * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-     * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-     */
-    post: operations["git/create-tag"];
-  };
-  "/repos/{owner}/{repo}/git/tags/{tag_sha}": {
-    /**
-     * Get a tag
-     * @description **Signature verification object**
-     *
-     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-     *
-     * | Name | Type | Description |
-     * | ---- | ---- | ----------- |
-     * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-     * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-     * | `signature` | `string` | The signature that was extracted from the commit. |
-     * | `payload` | `string` | The value that was signed. |
-     *
-     * These are the possible values for `reason` in the `verification` object:
-     *
-     * | Value | Description |
-     * | ----- | ----------- |
-     * | `expired_key` | The key that made the signature is expired. |
-     * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-     * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-     * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-     * | `unsigned` | The object does not include a signature. |
-     * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-     * | `no_user` | No user was associated with the `committer` email address in the commit. |
-     * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-     * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-     * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-     * | `malformed_signature` | There was an error parsing the signature. |
-     * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-     * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-     */
-    get: operations["git/get-tag"];
-  };
-  "/repos/{owner}/{repo}/git/trees": {
-    /**
-     * Create a tree
-     * @description The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure.
-     *
-     * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://docs.github.com/rest/git/commits#create-a-commit)" and "[Update a reference](https://docs.github.com/rest/git/refs#update-a-reference)."
-     *
-     * Returns an error if you try to delete a file that does not exist.
-     */
-    post: operations["git/create-tree"];
-  };
-  "/repos/{owner}/{repo}/git/trees/{tree_sha}": {
-    /**
-     * Get a tree
-     * @description Returns a single tree using the SHA1 value or ref name for that tree.
-     *
-     * If `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time.
-     *
-     *
-     * **Note**: The limit for the `tree` array is 100,000 entries with a maximum size of 7 MB when using the `recursive` parameter.
-     */
-    get: operations["git/get-tree"];
-  };
-  "/repos/{owner}/{repo}/hooks": {
-    /**
-     * List repository webhooks
-     * @description Lists webhooks for a repository. `last response` may return null if there have not been any deliveries within 30 days.
-     */
-    get: operations["repos/list-webhooks"];
-    /**
-     * Create a repository webhook
-     * @description Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can
-     * share the same `config` as long as those webhooks do not have any `events` that overlap.
-     */
-    post: operations["repos/create-webhook"];
-  };
-  "/repos/{owner}/{repo}/hooks/{hook_id}": {
-    /**
-     * Get a repository webhook
-     * @description Returns a webhook configured in a repository. To get only the webhook `config` properties, see "[Get a webhook configuration for a repository](/rest/webhooks/repo-config#get-a-webhook-configuration-for-a-repository)."
-     */
-    get: operations["repos/get-webhook"];
-    /** Delete a repository webhook */
-    delete: operations["repos/delete-webhook"];
-    /**
-     * Update a repository webhook
-     * @description Updates a webhook configured in a repository. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for a repository](/rest/webhooks/repo-config#update-a-webhook-configuration-for-a-repository)."
-     */
-    patch: operations["repos/update-webhook"];
-  };
-  "/repos/{owner}/{repo}/hooks/{hook_id}/config": {
-    /**
-     * Get a webhook configuration for a repository
-     * @description Returns the webhook configuration for a repository. To get more information about the webhook, including the `active` state and `events`, use "[Get a repository webhook](/rest/webhooks/repos#get-a-repository-webhook)."
-     *
-     * Access tokens must have the `read:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:read` permission.
-     */
-    get: operations["repos/get-webhook-config-for-repo"];
-    /**
-     * Update a webhook configuration for a repository
-     * @description 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](/rest/webhooks/repos#update-a-repository-webhook)."
-     *
-     * Access tokens must have the `write:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:write` permission.
-     */
-    patch: operations["repos/update-webhook-config-for-repo"];
-  };
-  "/repos/{owner}/{repo}/hooks/{hook_id}/deliveries": {
-    /**
-     * List deliveries for a repository webhook
-     * @description Returns a list of webhook deliveries for a webhook configured in a repository.
-     */
-    get: operations["repos/list-webhook-deliveries"];
-  };
-  "/repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}": {
-    /**
-     * Get a delivery for a repository webhook
-     * @description Returns a delivery for a webhook configured in a repository.
-     */
-    get: operations["repos/get-webhook-delivery"];
-  };
-  "/repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts": {
-    /**
-     * Redeliver a delivery for a repository webhook
-     * @description Redeliver a webhook delivery for a webhook configured in a repository.
-     */
-    post: operations["repos/redeliver-webhook-delivery"];
-  };
-  "/repos/{owner}/{repo}/hooks/{hook_id}/pings": {
-    /**
-     * Ping a repository webhook
-     * @description This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook.
-     */
-    post: operations["repos/ping-webhook"];
-  };
-  "/repos/{owner}/{repo}/hooks/{hook_id}/tests": {
-    /**
-     * Test the push repository webhook
-     * @description This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated.
-     *
-     * **Note**: Previously `/repos/:owner/:repo/hooks/:hook_id/test`
-     */
-    post: operations["repos/test-push-webhook"];
-  };
-  "/repos/{owner}/{repo}/import": {
-    /**
-     * Get an import status
-     * @deprecated
-     * @description View the progress of an import.
-     *
-     * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-     *
-     * **Import status**
-     *
-     * This section includes details about the possible values of the `status` field of the Import Progress response.
-     *
-     * An import that does not have errors will progress through these steps:
-     *
-     * *   `detecting` - the "detection" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL.
-     * *   `importing` - the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import).
-     * *   `mapping` - the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information.
-     * *   `pushing` - the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is "Writing objects".
-     * *   `complete` - the import is complete, and the repository is ready on GitHub.
-     *
-     * If there are problems, you will see one of these in the `status` field:
-     *
-     * *   `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section.
-     * *   `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api) for more information.
-     * *   `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section.
-     * *   `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://docs.github.com/rest/migrations/source-imports#cancel-an-import) and [retry](https://docs.github.com/rest/migrations/source-imports#start-an-import) with the correct URL.
-     * *   `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section.
-     *
-     * **The project_choices field**
-     *
-     * When multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type.
-     *
-     * **Git LFS related fields**
-     *
-     * This section includes details about Git LFS related fields that may be present in the Import Progress response.
-     *
-     * *   `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken.
-     * *   `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step.
-     * *   `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository.
-     * *   `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request.
-     */
-    get: operations["migrations/get-import-status"];
-    /**
-     * Start an import
-     * @deprecated
-     * @description Start a source import to a GitHub repository using GitHub Importer.
-     * Importing into a GitHub repository with GitHub Actions enabled is not supported and will
-     * return a status `422 Unprocessable Entity` response.
-     *
-     * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-     */
-    put: operations["migrations/start-import"];
-    /**
-     * Cancel an import
-     * @deprecated
-     * @description Stop an import for a repository.
-     *
-     * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-     */
-    delete: operations["migrations/cancel-import"];
-    /**
-     * Update an import
-     * @deprecated
-     * @description An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API
-     * request. If no parameters are provided, the import will be restarted.
-     *
-     * Some servers (e.g. TFS servers) can have several projects at a single URL. In those cases the import progress will
-     * have the status `detection_found_multiple` and the Import Progress response will include a `project_choices` array.
-     * You can select the project to import by providing one of the objects in the `project_choices` array in the update request.
-     *
-     * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-     */
-    patch: operations["migrations/update-import"];
-  };
-  "/repos/{owner}/{repo}/import/authors": {
-    /**
-     * Get commit authors
-     * @deprecated
-     * @description Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot <hubot@12341234-abab-fefe-8787-fedcba987654>`.
-     *
-     * This endpoint and the [Map a commit author](https://docs.github.com/rest/migrations/source-imports#map-a-commit-author) endpoint allow you to provide correct Git author information.
-     *
-     * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-     */
-    get: operations["migrations/get-commit-authors"];
-  };
-  "/repos/{owner}/{repo}/import/authors/{author_id}": {
-    /**
-     * Map a commit author
-     * @deprecated
-     * @description Update an author's identity for the import. Your application can continue updating authors any time before you push
-     * new commits to the repository.
-     *
-     * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-     */
-    patch: operations["migrations/map-commit-author"];
-  };
-  "/repos/{owner}/{repo}/import/large_files": {
-    /**
-     * Get large files
-     * @deprecated
-     * @description List files larger than 100MB found during the import
-     *
-     * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-     */
-    get: operations["migrations/get-large-files"];
-  };
-  "/repos/{owner}/{repo}/import/lfs": {
-    /**
-     * Update Git LFS preference
-     * @deprecated
-     * @description You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability
-     * is powered by [Git LFS](https://git-lfs.com).
-     *
-     * You can learn more about our LFS feature and working with large files [on our help
-     * site](https://docs.github.com/repositories/working-with-files/managing-large-files).
-     *
-     * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-     */
-    patch: operations["migrations/set-lfs-preference"];
-  };
-  "/repos/{owner}/{repo}/installation": {
-    /**
-     * Get a repository installation for the authenticated app
-     * @description Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to.
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    get: operations["apps/get-repo-installation"];
-  };
-  "/repos/{owner}/{repo}/interaction-limits": {
-    /**
-     * Get interaction restrictions for a repository
-     * @description Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response.
-     */
-    get: operations["interactions/get-restrictions-for-repo"];
-    /**
-     * Set interaction restrictions for a repository
-     * @description Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository.
-     */
-    put: operations["interactions/set-restrictions-for-repo"];
-    /**
-     * Remove interaction restrictions for a repository
-     * @description Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository.
-     */
-    delete: operations["interactions/remove-restrictions-for-repo"];
-  };
-  "/repos/{owner}/{repo}/invitations": {
-    /**
-     * List repository invitations
-     * @description When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations.
-     */
-    get: operations["repos/list-invitations"];
-  };
-  "/repos/{owner}/{repo}/invitations/{invitation_id}": {
-    /** Delete a repository invitation */
-    delete: operations["repos/delete-invitation"];
-    /** Update a repository invitation */
-    patch: operations["repos/update-invitation"];
-  };
-  "/repos/{owner}/{repo}/issues": {
-    /**
-     * List repository issues
-     * @description List issues in a repository. Only open issues will be listed.
-     *
-     * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-     * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-     * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-     * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-     */
-    get: operations["issues/list-for-repo"];
-    /**
-     * Create an issue
-     * @description Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://docs.github.com/articles/disabling-issues/), the API returns a `410 Gone` status.
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     */
-    post: operations["issues/create"];
-  };
-  "/repos/{owner}/{repo}/issues/comments": {
-    /**
-     * List issue comments for a repository
-     * @description You can use the REST API to list comments on issues and pull requests for a repository. Every pull request is an issue, but not every issue is a pull request.
-     *
-     * By default, issue comments are ordered by ascending ID.
-     */
-    get: operations["issues/list-comments-for-repo"];
-  };
-  "/repos/{owner}/{repo}/issues/comments/{comment_id}": {
-    /**
-     * Get an issue comment
-     * @description You can use the REST API to get comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.
-     */
-    get: operations["issues/get-comment"];
-    /**
-     * Delete an issue comment
-     * @description 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.
-     */
-    delete: operations["issues/delete-comment"];
-    /**
-     * Update an issue comment
-     * @description You can use the REST API to update comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.
-     */
-    patch: operations["issues/update-comment"];
-  };
-  "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": {
-    /**
-     * List reactions for an issue comment
-     * @description List the reactions to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment).
-     */
-    get: operations["reactions/list-for-issue-comment"];
-    /**
-     * Create reaction for an issue comment
-     * @description Create a reaction to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment). A response with an HTTP `200` status means that you already added the reaction type to this issue comment.
-     */
-    post: operations["reactions/create-for-issue-comment"];
-  };
-  "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}": {
-    /**
-     * Delete an issue comment reaction
-     * @description **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id`.
-     *
-     * Delete a reaction to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment).
-     */
-    delete: operations["reactions/delete-for-issue-comment"];
-  };
-  "/repos/{owner}/{repo}/issues/events": {
-    /**
-     * List issue events for a repository
-     * @description Lists events for a repository.
-     */
-    get: operations["issues/list-events-for-repo"];
-  };
-  "/repos/{owner}/{repo}/issues/events/{event_id}": {
-    /**
-     * Get an issue event
-     * @description Gets a single event by the event id.
-     */
-    get: operations["issues/get-event"];
-  };
-  "/repos/{owner}/{repo}/issues/{issue_number}": {
-    /**
-     * Get an issue
-     * @description The API returns a [`301 Moved Permanently` status](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-redirects-redirects) if the issue was
-     * [transferred](https://docs.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If
-     * the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API
-     * returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read
-     * access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe
-     * to the [`issues`](https://docs.github.com/webhooks/event-payloads/#issues) webhook.
-     *
-     * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-     * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-     * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-     * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-     */
-    get: operations["issues/get"];
-    /**
-     * Update an issue
-     * @description Issue owners and users with push access can edit an issue.
-     */
-    patch: operations["issues/update"];
-  };
-  "/repos/{owner}/{repo}/issues/{issue_number}/assignees": {
-    /**
-     * Add assignees to an issue
-     * @description Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced.
-     */
-    post: operations["issues/add-assignees"];
-    /**
-     * Remove assignees from an issue
-     * @description Removes one or more assignees from an issue.
-     */
-    delete: operations["issues/remove-assignees"];
-  };
-  "/repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}": {
-    /**
-     * Check if a user can be assigned to a issue
-     * @description Checks if a user has permission to be assigned to a specific issue.
-     *
-     * If the `assignee` can be assigned to this issue, a `204` status code with no content is returned.
-     *
-     * Otherwise a `404` status code is returned.
-     */
-    get: operations["issues/check-user-can-be-assigned-to-issue"];
-  };
-  "/repos/{owner}/{repo}/issues/{issue_number}/comments": {
-    /**
-     * List issue comments
-     * @description You can use the REST API to list comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.
-     *
-     * Issue comments are ordered by ascending ID.
-     */
-    get: operations["issues/list-comments"];
-    /**
-     * Create an issue comment
-     * @description
-     * You can use the REST API to create comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications).
-     * Creating content too quickly using this endpoint may result in secondary rate limiting.
-     * See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)"
-     * and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)"
-     * for details.
-     */
-    post: operations["issues/create-comment"];
-  };
-  "/repos/{owner}/{repo}/issues/{issue_number}/events": {
-    /**
-     * List issue events
-     * @description Lists all events for an issue.
-     */
-    get: operations["issues/list-events"];
-  };
-  "/repos/{owner}/{repo}/issues/{issue_number}/labels": {
-    /**
-     * List labels for an issue
-     * @description Lists all labels for an issue.
-     */
-    get: operations["issues/list-labels-on-issue"];
-    /**
-     * Set labels for an issue
-     * @description Removes any previous labels and sets the new labels for an issue.
-     */
-    put: operations["issues/set-labels"];
-    /**
-     * Add labels to an issue
-     * @description Adds labels to an issue. If you provide an empty array of labels, all labels are removed from the issue.
-     */
-    post: operations["issues/add-labels"];
-    /**
-     * Remove all labels from an issue
-     * @description Removes all labels from an issue.
-     */
-    delete: operations["issues/remove-all-labels"];
-  };
-  "/repos/{owner}/{repo}/issues/{issue_number}/labels/{name}": {
-    /**
-     * Remove a label from an issue
-     * @description Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist.
-     */
-    delete: operations["issues/remove-label"];
-  };
-  "/repos/{owner}/{repo}/issues/{issue_number}/lock": {
-    /**
-     * Lock an issue
-     * @description Users with push access can lock an issue or pull request's conversation.
-     *
-     * 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 verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-     */
-    put: operations["issues/lock"];
-    /**
-     * Unlock an issue
-     * @description Users with push access can unlock an issue's conversation.
-     */
-    delete: operations["issues/unlock"];
-  };
-  "/repos/{owner}/{repo}/issues/{issue_number}/reactions": {
-    /**
-     * List reactions for an issue
-     * @description List the reactions to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue).
-     */
-    get: operations["reactions/list-for-issue"];
-    /**
-     * Create reaction for an issue
-     * @description Create a reaction to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue). A response with an HTTP `200` status means that you already added the reaction type to this issue.
-     */
-    post: operations["reactions/create-for-issue"];
-  };
-  "/repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}": {
-    /**
-     * Delete an issue reaction
-     * @description **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/issues/:issue_number/reactions/:reaction_id`.
-     *
-     * Delete a reaction to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue).
-     */
-    delete: operations["reactions/delete-for-issue"];
-  };
-  "/repos/{owner}/{repo}/issues/{issue_number}/timeline": {
-    /**
-     * List timeline events for an issue
-     * @description List all timeline events for an issue.
-     */
-    get: operations["issues/list-events-for-timeline"];
-  };
-  "/repos/{owner}/{repo}/keys": {
-    /** List deploy keys */
-    get: operations["repos/list-deploy-keys"];
-    /**
-     * Create a deploy key
-     * @description You can create a read-only deploy key.
-     */
-    post: operations["repos/create-deploy-key"];
-  };
-  "/repos/{owner}/{repo}/keys/{key_id}": {
-    /** Get a deploy key */
-    get: operations["repos/get-deploy-key"];
-    /**
-     * Delete a deploy key
-     * @description Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead.
-     */
-    delete: operations["repos/delete-deploy-key"];
-  };
-  "/repos/{owner}/{repo}/labels": {
-    /**
-     * List labels for a repository
-     * @description Lists all labels for a repository.
-     */
-    get: operations["issues/list-labels-for-repo"];
-    /**
-     * Create a label
-     * @description Creates a label for the specified repository with the given name and color. The name and color parameters are required. The color must be a valid [hexadecimal color code](http://www.color-hex.com/).
-     */
-    post: operations["issues/create-label"];
-  };
-  "/repos/{owner}/{repo}/labels/{name}": {
-    /**
-     * Get a label
-     * @description Gets a label using the given name.
-     */
-    get: operations["issues/get-label"];
-    /**
-     * Delete a label
-     * @description Deletes a label using the given label name.
-     */
-    delete: operations["issues/delete-label"];
-    /**
-     * Update a label
-     * @description Updates a label using the given label name.
-     */
-    patch: operations["issues/update-label"];
-  };
-  "/repos/{owner}/{repo}/languages": {
-    /**
-     * List repository languages
-     * @description Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language.
-     */
-    get: operations["repos/list-languages"];
-  };
-  "/repos/{owner}/{repo}/license": {
-    /**
-     * Get the license for a repository
-     * @description This method returns the contents of the repository's license file, if one is detected.
-     *
-     * Similar to [Get repository content](https://docs.github.com/rest/repos/contents#get-repository-content), this method also supports [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw license content or rendered license HTML.
-     */
-    get: operations["licenses/get-for-repo"];
-  };
-  "/repos/{owner}/{repo}/merge-upstream": {
-    /**
-     * Sync a fork branch with the upstream repository
-     * @description Sync a branch of a forked repository to keep it up-to-date with the upstream repository.
-     */
-    post: operations["repos/merge-upstream"];
-  };
-  "/repos/{owner}/{repo}/merges": {
-    /** Merge a branch */
-    post: operations["repos/merge"];
-  };
-  "/repos/{owner}/{repo}/milestones": {
-    /**
-     * List milestones
-     * @description Lists milestones for a repository.
-     */
-    get: operations["issues/list-milestones"];
-    /**
-     * Create a milestone
-     * @description Creates a milestone.
-     */
-    post: operations["issues/create-milestone"];
-  };
-  "/repos/{owner}/{repo}/milestones/{milestone_number}": {
-    /**
-     * Get a milestone
-     * @description Gets a milestone using the given milestone number.
-     */
-    get: operations["issues/get-milestone"];
-    /**
-     * Delete a milestone
-     * @description Deletes a milestone using the given milestone number.
-     */
-    delete: operations["issues/delete-milestone"];
-    /** Update a milestone */
-    patch: operations["issues/update-milestone"];
-  };
-  "/repos/{owner}/{repo}/milestones/{milestone_number}/labels": {
-    /**
-     * List labels for issues in a milestone
-     * @description Lists labels for issues in a milestone.
-     */
-    get: operations["issues/list-labels-for-milestone"];
-  };
-  "/repos/{owner}/{repo}/notifications": {
-    /**
-     * List repository notifications for the authenticated user
-     * @description Lists all notifications for the current user in the specified repository.
-     */
-    get: operations["activity/list-repo-notifications-for-authenticated-user"];
-    /**
-     * Mark repository notifications as read
-     * @description Marks all notifications in a repository as "read" for the current user. If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List repository notifications for the authenticated user](https://docs.github.com/rest/activity/notifications#list-repository-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`.
-     */
-    put: operations["activity/mark-repo-notifications-as-read"];
-  };
-  "/repos/{owner}/{repo}/pages": {
-    /**
-     * Get a GitHub Pages site
-     * @description Gets information about a GitHub Pages site.
-     *
-     * A token with the `repo` scope is required. GitHub Apps must have the `pages:read` permission.
-     */
-    get: operations["repos/get-pages"];
-    /**
-     * Update information about a GitHub Pages site
-     * @description Updates information for a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages).
-     *
-     * To use this endpoint, you must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. A token with the `repo` scope or Pages write permission is required. GitHub Apps must have the `administration:write` and `pages:write` permissions.
-     */
-    put: operations["repos/update-information-about-pages-site"];
-    /**
-     * Create a GitHub Pages site
-     * @description Configures a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages)."
-     *
-     * To use this endpoint, you must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. A token with the `repo` scope or Pages write permission is required. GitHub Apps must have the `administration:write` and `pages:write` permissions.
-     */
-    post: operations["repos/create-pages-site"];
-    /**
-     * Delete a GitHub Pages site
-     * @description Deletes a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages).
-     *
-     * To use this endpoint, you must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. A token with the `repo` scope or Pages write permission is required. GitHub Apps must have the `administration:write` and `pages:write` permissions.
-     */
-    delete: operations["repos/delete-pages-site"];
-  };
-  "/repos/{owner}/{repo}/pages/builds": {
-    /**
-     * List GitHub Pages builds
-     * @description Lists builts of a GitHub Pages site.
-     *
-     * A token with the `repo` scope is required. GitHub Apps must have the `pages:read` permission.
-     */
-    get: operations["repos/list-pages-builds"];
-    /**
-     * Request a GitHub Pages build
-     * @description You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures.
-     *
-     * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes.
-     */
-    post: operations["repos/request-pages-build"];
-  };
-  "/repos/{owner}/{repo}/pages/builds/latest": {
-    /**
-     * Get latest Pages build
-     * @description Gets information about the single most recent build of a GitHub Pages site.
-     *
-     * A token with the `repo` scope is required. GitHub Apps must have the `pages:read` permission.
-     */
-    get: operations["repos/get-latest-pages-build"];
-  };
-  "/repos/{owner}/{repo}/pages/builds/{build_id}": {
-    /**
-     * Get GitHub Pages build
-     * @description Gets information about a GitHub Pages build.
-     *
-     * A token with the `repo` scope is required. GitHub Apps must have the `pages:read` permission.
-     */
-    get: operations["repos/get-pages-build"];
-  };
-  "/repos/{owner}/{repo}/pages/deployment": {
-    /**
-     * Create a GitHub Pages deployment
-     * @description Create a GitHub Pages deployment for a repository.
-     *
-     * Users must have write permissions. GitHub Apps must have the `pages:write` permission to use this endpoint.
-     */
-    post: operations["repos/create-pages-deployment"];
-  };
-  "/repos/{owner}/{repo}/pages/health": {
-    /**
-     * Get a DNS health check for GitHub Pages
-     * @description Gets a health check of the DNS settings for the `CNAME` record configured for a repository's GitHub Pages.
-     *
-     * The first request to this endpoint returns a `202 Accepted` status and starts an asynchronous background task to get the results for the domain. After the background task completes, subsequent requests to this endpoint return a `200 OK` status with the health check results in the response.
-     *
-     * To use this endpoint, you must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. A token with the `repo` scope or Pages write permission is required. GitHub Apps must have the `administrative:write` and `pages:write` permissions.
-     */
-    get: operations["repos/get-pages-health-check"];
-  };
-  "/repos/{owner}/{repo}/private-vulnerability-reporting": {
-    /**
-     * Enable private vulnerability reporting for a repository
-     * @description Enables private vulnerability reporting for a repository. The authenticated user must have admin access to the repository. For more information, see "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)."
-     */
-    put: operations["repos/enable-private-vulnerability-reporting"];
-    /**
-     * Disable private vulnerability reporting for a repository
-     * @description Disables private vulnerability reporting for a repository. The authenticated user must have admin access to the repository. For more information, see "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)".
-     */
-    delete: operations["repos/disable-private-vulnerability-reporting"];
-  };
-  "/repos/{owner}/{repo}/projects": {
-    /**
-     * List repository projects
-     * @description Lists the projects in a repository. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-     */
-    get: operations["projects/list-for-repo"];
-    /**
-     * Create a repository project
-     * @description Creates a repository project board. Returns a `410 Gone` status if projects are disabled in the repository or if the repository does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-     */
-    post: operations["projects/create-for-repo"];
-  };
-  "/repos/{owner}/{repo}/properties/values": {
-    /**
-     * Get all custom property values for a repository
-     * @description Gets all custom property values that are set for a repository.
-     * Users with read access to the repository can use this endpoint.
-     */
-    get: operations["repos/get-custom-properties-values"];
-  };
-  "/repos/{owner}/{repo}/pulls": {
-    /**
-     * List pull requests
-     * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     */
-    get: operations["pulls/list"];
-    /**
-     * Create a pull request
-     * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request.
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details.
-     */
-    post: operations["pulls/create"];
-  };
-  "/repos/{owner}/{repo}/pulls/comments": {
-    /**
-     * List review comments in a repository
-     * @description Lists review comments for all pull requests in a repository. By default, review comments are in ascending order by ID.
-     */
-    get: operations["pulls/list-review-comments-for-repo"];
-  };
-  "/repos/{owner}/{repo}/pulls/comments/{comment_id}": {
-    /**
-     * Get a review comment for a pull request
-     * @description Provides details for a review comment.
-     */
-    get: operations["pulls/get-review-comment"];
-    /**
-     * Delete a review comment for a pull request
-     * @description Deletes a review comment.
-     */
-    delete: operations["pulls/delete-review-comment"];
-    /**
-     * Update a review comment for a pull request
-     * @description Enables you to edit a review comment.
-     */
-    patch: operations["pulls/update-review-comment"];
-  };
-  "/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": {
-    /**
-     * List reactions for a pull request review comment
-     * @description List the reactions to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request).
-     */
-    get: operations["reactions/list-for-pull-request-review-comment"];
-    /**
-     * Create reaction for a pull request review comment
-     * @description Create a reaction to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request). A response with an HTTP `200` status means that you already added the reaction type to this pull request review comment.
-     */
-    post: operations["reactions/create-for-pull-request-review-comment"];
-  };
-  "/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}": {
-    /**
-     * Delete a pull request comment reaction
-     * @description **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/pulls/comments/:comment_id/reactions/:reaction_id.`
-     *
-     * Delete a reaction to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request).
-     */
-    delete: operations["reactions/delete-for-pull-request-comment"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}": {
-    /**
-     * Get a pull request
-     * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * Lists details of a pull request by providing its number.
-     *
-     * When you get, [create](https://docs.github.com/rest/pulls/pulls/#create-a-pull-request), or [edit](https://docs.github.com/rest/pulls/pulls#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)".
-     *
-     * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit.
-     *
-     * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request:
-     *
-     * *   If merged as a [merge commit](https://docs.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit.
-     * *   If merged via a [squash](https://docs.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch.
-     * *   If [rebased](https://docs.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to.
-     *
-     * Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
-     */
-    get: operations["pulls/get"];
-    /**
-     * Update a pull request
-     * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request.
-     */
-    patch: operations["pulls/update"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/codespaces": {
-    /**
-     * Create a codespace from a pull request
-     * @description Creates a codespace owned by the authenticated user for the specified pull request.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-     */
-    post: operations["codespaces/create-with-pr-for-authenticated-user"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/comments": {
-    /**
-     * List review comments on a pull request
-     * @description Lists all review comments for a pull request. By default, review comments are in ascending order by ID.
-     */
-    get: operations["pulls/list-review-comments"];
-    /**
-     * Create a review comment for a pull request
-     * @description
-     * Creates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see "[Create an issue comment](https://docs.github.com/rest/issues/comments#create-an-issue-comment)." We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff.
-     *
-     * The `position` parameter is deprecated. If you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required.
-     *
-     * **Note:** The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     */
-    post: operations["pulls/create-review-comment"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies": {
-    /**
-     * Create a reply for a review comment
-     * @description Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported.
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     */
-    post: operations["pulls/create-reply-for-review-comment"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/commits": {
-    /**
-     * List commits on a pull request
-     * @description Lists a maximum of 250 commits for a pull request. To receive a complete commit list for pull requests with more than 250 commits, use the [List commits](https://docs.github.com/rest/commits/commits#list-commits) endpoint.
-     */
-    get: operations["pulls/list-commits"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/files": {
-    /**
-     * List pull requests files
-     * @description **Note:** Responses include a maximum of 3000 files. The paginated response returns 30 files per page by default.
-     */
-    get: operations["pulls/list-files"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/merge": {
-    /**
-     * Check if a pull request has been merged
-     * @description Checks if a pull request has been merged into the base branch. The HTTP status of the response indicates whether or not the pull request has been merged; the response body is empty.
-     */
-    get: operations["pulls/check-if-merged"];
-    /**
-     * Merge a pull request
-     * @description Merges a pull request into the base branch.
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     */
-    put: operations["pulls/merge"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": {
-    /**
-     * Get all requested reviewers for a pull request
-     * @description 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](https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request) operation.
-     */
-    get: operations["pulls/list-requested-reviewers"];
-    /**
-     * Request reviewers for a pull request
-     * @description This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     */
-    post: operations["pulls/request-reviewers"];
-    /**
-     * Remove requested reviewers from a pull request
-     * @description Removes review requests from a pull request for a given set of users and/or teams.
-     */
-    delete: operations["pulls/remove-requested-reviewers"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/reviews": {
-    /**
-     * List reviews for a pull request
-     * @description The list of reviews returns in chronological order.
-     */
-    get: operations["pulls/list-reviews"];
-    /**
-     * Create a review for a pull request
-     * @description This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     *
-     * Pull request reviews created in the `PENDING` state are not submitted and therefore do not include the `submitted_at` property in the response. To create a pending review for a pull request, leave the `event` parameter blank. For more information about submitting a `PENDING` review, see "[Submit a review for a pull request](https://docs.github.com/rest/pulls/reviews#submit-a-review-for-a-pull-request)."
-     *
-     * **Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API offers the `application/vnd.github.v3.diff` [media type](https://docs.github.com/rest/overview/media-types#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) endpoint.
-     *
-     * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
-     */
-    post: operations["pulls/create-review"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": {
-    /**
-     * Get a review for a pull request
-     * @description Retrieves a pull request review by its ID.
-     */
-    get: operations["pulls/get-review"];
-    /**
-     * Update a review for a pull request
-     * @description Update the review summary comment with new text.
-     */
-    put: operations["pulls/update-review"];
-    /**
-     * Delete a pending review for a pull request
-     * @description Deletes a pull request review that has not been submitted. Submitted reviews cannot be deleted.
-     */
-    delete: operations["pulls/delete-pending-review"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": {
-    /**
-     * List comments for a pull request review
-     * @description List comments for a specific pull request review.
-     */
-    get: operations["pulls/list-comments-for-review"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals": {
-    /**
-     * Dismiss a review for a pull request
-     * @description **Note:** To dismiss a pull request review on a [protected branch](https://docs.github.com/rest/branches/branch-protection), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews.
-     */
-    put: operations["pulls/dismiss-review"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events": {
-    /**
-     * Submit a review for a pull request
-     * @description Submits a pending review for a pull request. For more information about creating a pending review for a pull request, see "[Create a review for a pull request](https://docs.github.com/rest/pulls/reviews#create-a-review-for-a-pull-request)."
-     */
-    post: operations["pulls/submit-review"];
-  };
-  "/repos/{owner}/{repo}/pulls/{pull_number}/update-branch": {
-    /**
-     * Update a pull request branch
-     * @description Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch.
-     */
-    put: operations["pulls/update-branch"];
-  };
-  "/repos/{owner}/{repo}/readme": {
-    /**
-     * Get a repository README
-     * @description Gets the preferred README for a repository.
-     *
-     * READMEs support [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw content or rendered HTML.
-     */
-    get: operations["repos/get-readme"];
-  };
-  "/repos/{owner}/{repo}/readme/{dir}": {
-    /**
-     * Get a repository README for a directory
-     * @description Gets the README from a repository directory.
-     *
-     * READMEs support [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw content or rendered HTML.
-     */
-    get: operations["repos/get-readme-in-directory"];
-  };
-  "/repos/{owner}/{repo}/releases": {
-    /**
-     * List releases
-     * @description This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://docs.github.com/rest/repos/repos#list-repository-tags).
-     *
-     * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases.
-     */
-    get: operations["repos/list-releases"];
-    /**
-     * Create a release
-     * @description Users with push access to the repository can create a release.
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     */
-    post: operations["repos/create-release"];
-  };
-  "/repos/{owner}/{repo}/releases/assets/{asset_id}": {
-    /**
-     * Get a release asset
-     * @description To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://docs.github.com/rest/overview/media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response.
-     */
-    get: operations["repos/get-release-asset"];
-    /** Delete a release asset */
-    delete: operations["repos/delete-release-asset"];
-    /**
-     * Update a release asset
-     * @description Users with push access to the repository can edit a release asset.
-     */
-    patch: operations["repos/update-release-asset"];
-  };
-  "/repos/{owner}/{repo}/releases/generate-notes": {
-    /**
-     * Generate release notes content for a release
-     * @description Generate a name and body describing a [release](https://docs.github.com/rest/releases/releases#get-a-release). The body content will be markdown formatted and contain information like the changes since last release and users who contributed. The generated release notes are not saved anywhere. They are intended to be generated and used when creating a new release.
-     */
-    post: operations["repos/generate-release-notes"];
-  };
-  "/repos/{owner}/{repo}/releases/latest": {
-    /**
-     * Get the latest release
-     * @description View the latest published full release for the repository.
-     *
-     * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published.
-     */
-    get: operations["repos/get-latest-release"];
-  };
-  "/repos/{owner}/{repo}/releases/tags/{tag}": {
-    /**
-     * Get a release by tag name
-     * @description Get a published release with the specified tag.
-     */
-    get: operations["repos/get-release-by-tag"];
-  };
-  "/repos/{owner}/{repo}/releases/{release_id}": {
-    /**
-     * Get a release
-     * @description **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia).
-     */
-    get: operations["repos/get-release"];
-    /**
-     * Delete a release
-     * @description Users with push access to the repository can delete a release.
-     */
-    delete: operations["repos/delete-release"];
-    /**
-     * Update a release
-     * @description Users with push access to the repository can edit a release.
-     */
-    patch: operations["repos/update-release"];
-  };
-  "/repos/{owner}/{repo}/releases/{release_id}/assets": {
-    /** List release assets */
-    get: operations["repos/list-release-assets"];
-    /**
-     * Upload a release asset
-     * @description This endpoint makes use of [a Hypermedia relation](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in
-     * the response of the [Create a release endpoint](https://docs.github.com/rest/releases/releases#create-a-release) to upload a release asset.
-     *
-     * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint.
-     *
-     * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example:
-     *
-     * `application/zip`
-     *
-     * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example,
-     * you'll still need to pass your authentication to be able to upload an asset.
-     *
-     * When an upstream failure occurs, you will receive a `502 Bad Gateway` status. This may leave an empty asset with a state of `starter`. It can be safely deleted.
-     *
-     * **Notes:**
-     * *   GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The "[List release assets](https://docs.github.com/rest/releases/assets#list-release-assets)"
-     * endpoint lists the renamed filenames. For more information and help, contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api).
-     * *   To find the `release_id` query the [`GET /repos/{owner}/{repo}/releases/latest` endpoint](https://docs.github.com/rest/releases/releases#get-the-latest-release).
-     * *   If you upload an asset with the same filename as another uploaded asset, you'll receive an error and must delete the old file before you can re-upload the new asset.
-     */
-    post: operations["repos/upload-release-asset"];
-  };
-  "/repos/{owner}/{repo}/releases/{release_id}/reactions": {
-    /**
-     * List reactions for a release
-     * @description List the reactions to a [release](https://docs.github.com/rest/releases/releases#get-a-release).
-     */
-    get: operations["reactions/list-for-release"];
-    /**
-     * Create reaction for a release
-     * @description Create a reaction to a [release](https://docs.github.com/rest/releases/releases#get-a-release). A response with a `Status: 200 OK` means that you already added the reaction type to this release.
-     */
-    post: operations["reactions/create-for-release"];
-  };
-  "/repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}": {
-    /**
-     * Delete a release reaction
-     * @description **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/releases/:release_id/reactions/:reaction_id`.
-     *
-     * Delete a reaction to a [release](https://docs.github.com/rest/releases/releases#get-a-release).
-     */
-    delete: operations["reactions/delete-for-release"];
-  };
-  "/repos/{owner}/{repo}/rules/branches/{branch}": {
-    /**
-     * Get rules for a branch
-     * @description Returns all active rules that apply to the specified branch. The branch does not need to exist; rules that would apply
-     * to a branch with that name will be returned. All active rules that apply will be returned, regardless of the level
-     * at which they are configured (e.g. repository or organization). Rules in rulesets with "evaluate" or "disabled"
-     * enforcement statuses are not returned.
-     */
-    get: operations["repos/get-branch-rules"];
-  };
-  "/repos/{owner}/{repo}/rulesets": {
-    /**
-     * Get all repository rulesets
-     * @description Get all the rulesets for a repository.
-     */
-    get: operations["repos/get-repo-rulesets"];
-    /**
-     * Create a repository ruleset
-     * @description Create a ruleset for a repository.
-     */
-    post: operations["repos/create-repo-ruleset"];
-  };
-  "/repos/{owner}/{repo}/rulesets/rule-suites": {
-    /**
-     * List repository rule suites
-     * @description Lists suites of rule evaluations at the repository level.
-     * For more information, see "[Managing rulesets for a repository](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#viewing-insights-for-rulesets)."
-     */
-    get: operations["repos/get-repo-rule-suites"];
-  };
-  "/repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}": {
-    /**
-     * Get a repository rule suite
-     * @description Gets information about a suite of rule evaluations from within a repository.
-     * For more information, see "[Managing rulesets for a repository](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#viewing-insights-for-rulesets)."
-     */
-    get: operations["repos/get-repo-rule-suite"];
-  };
-  "/repos/{owner}/{repo}/rulesets/{ruleset_id}": {
-    /**
-     * Get a repository ruleset
-     * @description Get a ruleset for a repository.
-     */
-    get: operations["repos/get-repo-ruleset"];
-    /**
-     * Update a repository ruleset
-     * @description Update a ruleset for a repository.
-     */
-    put: operations["repos/update-repo-ruleset"];
-    /**
-     * Delete a repository ruleset
-     * @description Delete a ruleset for a repository.
-     */
-    delete: operations["repos/delete-repo-ruleset"];
-  };
-  "/repos/{owner}/{repo}/secret-scanning/alerts": {
-    /**
-     * List secret scanning alerts for a repository
-     * @description Lists secret scanning alerts for an eligible repository, from newest to oldest.
-     * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope.
-     * For public repositories, you may instead use the `public_repo` scope.
-     *
-     * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.
-     */
-    get: operations["secret-scanning/list-alerts-for-repo"];
-  };
-  "/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": {
-    /**
-     * Get a secret scanning alert
-     * @description Gets a single secret scanning alert detected in an eligible repository.
-     * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope.
-     * For public repositories, you may instead use the `public_repo` scope.
-     *
-     * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.
-     */
-    get: operations["secret-scanning/get-alert"];
-    /**
-     * Update a secret scanning alert
-     * @description Updates the status of a secret scanning alert in an eligible repository.
-     * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope.
-     * For public repositories, you may instead use the `public_repo` scope.
-     *
-     * GitHub Apps must have the `secret_scanning_alerts` write permission to use this endpoint.
-     */
-    patch: operations["secret-scanning/update-alert"];
-  };
-  "/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations": {
-    /**
-     * List locations for a secret scanning alert
-     * @description Lists all locations for a given secret scanning alert for an eligible repository.
-     * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope.
-     * For public repositories, you may instead use the `public_repo` scope.
-     *
-     * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.
-     */
-    get: operations["secret-scanning/list-locations-for-alert"];
-  };
-  "/repos/{owner}/{repo}/security-advisories": {
-    /**
-     * List repository security advisories
-     * @description Lists security advisories in a repository.
-     * You must authenticate using an access token with the `repo` scope or `repository_advisories:read` permission
-     * in order to get published security advisories in a private repository, or any unpublished security advisories that you have access to.
-     *
-     * You can access unpublished security advisories from a repository if you are a security manager or administrator of that repository, or if you are a collaborator on any security advisory.
-     */
-    get: operations["security-advisories/list-repository-advisories"];
-    /**
-     * Create a repository security advisory
-     * @description Creates a new repository security advisory.
-     * You must authenticate using an access token with the `repo` scope or `repository_advisories:write` permission to use this endpoint.
-     *
-     * In order to create a draft repository security advisory, you must be a security manager or administrator of that repository.
-     */
-    post: operations["security-advisories/create-repository-advisory"];
-  };
-  "/repos/{owner}/{repo}/security-advisories/reports": {
-    /**
-     * Privately report a security vulnerability
-     * @description Report a security vulnerability to the maintainers of the repository.
-     * See "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)" for more information about private vulnerability reporting.
-     */
-    post: operations["security-advisories/create-private-vulnerability-report"];
-  };
-  "/repos/{owner}/{repo}/security-advisories/{ghsa_id}": {
-    /**
-     * Get a repository security advisory
-     * @description Get a repository security advisory using its GitHub Security Advisory (GHSA) identifier.
-     * You can access any published security advisory on a public repository.
-     * You must authenticate using an access token with the `repo` scope or `repository_advisories:read` permission
-     * in order to get a published security advisory in a private repository, or any unpublished security advisory that you have access to.
-     *
-     * You can access an unpublished security advisory from a repository if you are a security manager or administrator of that repository, or if you are a
-     * collaborator on the security advisory.
-     */
-    get: operations["security-advisories/get-repository-advisory"];
-    /**
-     * Update a repository security advisory
-     * @description Update a repository security advisory using its GitHub Security Advisory (GHSA) identifier.
-     * You must authenticate using an access token with the `repo` scope or `repository_advisories:write` permission to use this endpoint.
-     *
-     * In order to update any security advisory, you must be a security manager or administrator of that repository,
-     * or a collaborator on the repository security advisory.
-     */
-    patch: operations["security-advisories/update-repository-advisory"];
-  };
-  "/repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve": {
-    /**
-     * Request a CVE for a repository security advisory
-     * @description If you want a CVE identification number for the security vulnerability in your project, and don't already have one, you can request a CVE identification number from GitHub. For more information see "[Requesting a CVE identification number](https://docs.github.com/code-security/security-advisories/repository-security-advisories/publishing-a-repository-security-advisory#requesting-a-cve-identification-number-optional)."
-     *
-     * You may request a CVE for public repositories, but cannot do so for private repositories.
-     *
-     * You must authenticate using an access token with the `repo` scope or `repository_advisories:write` permission to use this endpoint.
-     *
-     * In order to request a CVE for a repository security advisory, you must be a security manager or administrator of that repository.
-     */
-    post: operations["security-advisories/create-repository-advisory-cve-request"];
-  };
-  "/repos/{owner}/{repo}/stargazers": {
-    /**
-     * List stargazers
-     * @description Lists the people that have starred the repository.
-     *
-     * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: `application/vnd.github.star+json`.
-     */
-    get: operations["activity/list-stargazers-for-repo"];
-  };
-  "/repos/{owner}/{repo}/stats/code_frequency": {
-    /**
-     * Get the weekly commit activity
-     * @description Returns a weekly aggregate of the number of additions and deletions pushed to a repository.
-     */
-    get: operations["repos/get-code-frequency-stats"];
-  };
-  "/repos/{owner}/{repo}/stats/commit_activity": {
-    /**
-     * Get the last year of commit activity
-     * @description Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`.
-     */
-    get: operations["repos/get-commit-activity-stats"];
-  };
-  "/repos/{owner}/{repo}/stats/contributors": {
-    /**
-     * Get all contributor commit activity
-     * @description
-     * Returns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information:
-     *
-     * *   `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time).
-     * *   `a` - Number of additions
-     * *   `d` - Number of deletions
-     * *   `c` - Number of commits
-     */
-    get: operations["repos/get-contributors-stats"];
-  };
-  "/repos/{owner}/{repo}/stats/participation": {
-    /**
-     * Get the weekly commit count
-     * @description Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`.
-     *
-     * The array order is oldest week (index 0) to most recent week.
-     *
-     * The most recent week is seven days ago at UTC midnight to today at UTC midnight.
-     */
-    get: operations["repos/get-participation-stats"];
-  };
-  "/repos/{owner}/{repo}/stats/punch_card": {
-    /**
-     * Get the hourly commit count for each day
-     * @description Each array contains the day number, hour number, and number of commits:
-     *
-     * *   `0-6`: Sunday - Saturday
-     * *   `0-23`: Hour of day
-     * *   Number of commits
-     *
-     * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits.
-     */
-    get: operations["repos/get-punch-card-stats"];
-  };
-  "/repos/{owner}/{repo}/statuses/{sha}": {
-    /**
-     * Create a commit status
-     * @description Users with push access in a repository can create commit statuses for a given SHA.
-     *
-     * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error.
-     */
-    post: operations["repos/create-commit-status"];
-  };
-  "/repos/{owner}/{repo}/subscribers": {
-    /**
-     * List watchers
-     * @description Lists the people watching the specified repository.
-     */
-    get: operations["activity/list-watchers-for-repo"];
-  };
-  "/repos/{owner}/{repo}/subscription": {
-    /**
-     * Get a repository subscription
-     * @description Gets information about whether the authenticated user is subscribed to the repository.
-     */
-    get: operations["activity/get-repo-subscription"];
-    /**
-     * Set a repository subscription
-     * @description If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://docs.github.com/rest/activity/watching#delete-a-repository-subscription) completely.
-     */
-    put: operations["activity/set-repo-subscription"];
-    /**
-     * Delete a repository subscription
-     * @description This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://docs.github.com/rest/activity/watching#set-a-repository-subscription).
-     */
-    delete: operations["activity/delete-repo-subscription"];
-  };
-  "/repos/{owner}/{repo}/tags": {
-    /** List repository tags */
-    get: operations["repos/list-tags"];
-  };
-  "/repos/{owner}/{repo}/tags/protection": {
-    /**
-     * List tag protection states for a repository
-     * @description This returns the tag protection states of a repository.
-     *
-     * This information is only available to repository administrators.
-     */
-    get: operations["repos/list-tag-protection"];
-    /**
-     * Create a tag protection state for a repository
-     * @description This creates a tag protection state for a repository.
-     * This endpoint is only available to repository administrators.
-     */
-    post: operations["repos/create-tag-protection"];
-  };
-  "/repos/{owner}/{repo}/tags/protection/{tag_protection_id}": {
-    /**
-     * Delete a tag protection state for a repository
-     * @description This deletes a tag protection state for a repository.
-     * This endpoint is only available to repository administrators.
-     */
-    delete: operations["repos/delete-tag-protection"];
-  };
-  "/repos/{owner}/{repo}/tarball/{ref}": {
-    /**
-     * Download a repository archive (tar)
-     * @description Gets a redirect URL to download a tar archive for a repository. If you omit `:ref`, the repository’s default branch (usually
-     * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use
-     * the `Location` header to make a second `GET` request.
-     * **Note**: For private repositories, these links are temporary and expire after five minutes.
-     */
-    get: operations["repos/download-tarball-archive"];
-  };
-  "/repos/{owner}/{repo}/teams": {
-    /**
-     * List repository teams
-     * @description Lists the teams that have access to the specified repository and that are also visible to the authenticated user.
-     *
-     * For a public repository, a team is listed only if that team added the public repository explicitly.
-     *
-     * Personal access tokens require the following scopes:
-     * * `public_repo` to call this endpoint on a public repository
-     * * `repo` to call this endpoint on a private repository (this scope also includes public repositories)
-     *
-     * This endpoint is not compatible with fine-grained personal access tokens.
-     */
-    get: operations["repos/list-teams"];
-  };
-  "/repos/{owner}/{repo}/topics": {
-    /** Get all repository topics */
-    get: operations["repos/get-all-topics"];
-    /** Replace all repository topics */
-    put: operations["repos/replace-all-topics"];
-  };
-  "/repos/{owner}/{repo}/traffic/clones": {
-    /**
-     * Get repository clones
-     * @description Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.
-     */
-    get: operations["repos/get-clones"];
-  };
-  "/repos/{owner}/{repo}/traffic/popular/paths": {
-    /**
-     * Get top referral paths
-     * @description Get the top 10 popular contents over the last 14 days.
-     */
-    get: operations["repos/get-top-paths"];
-  };
-  "/repos/{owner}/{repo}/traffic/popular/referrers": {
-    /**
-     * Get top referral sources
-     * @description Get the top 10 referrers over the last 14 days.
-     */
-    get: operations["repos/get-top-referrers"];
-  };
-  "/repos/{owner}/{repo}/traffic/views": {
-    /**
-     * Get page views
-     * @description Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.
-     */
-    get: operations["repos/get-views"];
-  };
-  "/repos/{owner}/{repo}/transfer": {
-    /**
-     * Transfer a repository
-     * @description A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://docs.github.com/articles/about-repository-transfers/).
-     * You must use a personal access token (classic) or an OAuth token for this endpoint. An installation access token or a fine-grained personal access token cannot be used because they are only granted access to a single account.
-     */
-    post: operations["repos/transfer"];
-  };
-  "/repos/{owner}/{repo}/vulnerability-alerts": {
-    /**
-     * Check if vulnerability alerts are enabled for a repository
-     * @description Shows whether dependency alerts are enabled or disabled for a repository. The authenticated user must have admin read access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)".
-     */
-    get: operations["repos/check-vulnerability-alerts"];
-    /**
-     * Enable vulnerability alerts
-     * @description Enables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)".
-     */
-    put: operations["repos/enable-vulnerability-alerts"];
-    /**
-     * Disable vulnerability alerts
-     * @description Disables dependency alerts and the dependency graph for a repository.
-     * The authenticated user must have admin access to the repository. For more information,
-     * see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)".
-     */
-    delete: operations["repos/disable-vulnerability-alerts"];
-  };
-  "/repos/{owner}/{repo}/zipball/{ref}": {
-    /**
-     * Download a repository archive (zip)
-     * @description Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually
-     * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use
-     * the `Location` header to make a second `GET` request.
-     *
-     * **Note**: For private repositories, these links are temporary and expire after five minutes. If the repository is empty, you will receive a 404 when you follow the redirect.
-     */
-    get: operations["repos/download-zipball-archive"];
-  };
-  "/repos/{template_owner}/{template_repo}/generate": {
-    /**
-     * Create a repository using a template
-     * @description Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. If the repository is not public, the authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/repos/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.
-     *
-     * **OAuth scope requirements**
-     *
-     * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
-     *
-     * *   `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.
-     * *   `repo` scope to create a private repository
-     */
-    post: operations["repos/create-using-template"];
-  };
-  "/repositories": {
-    /**
-     * List public repositories
-     * @description Lists all public repositories in the order that they were created.
-     *
-     * Note:
-     * - For GitHub Enterprise Server, this endpoint will only list repositories available to all users on the enterprise.
-     * - Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of repositories.
-     */
-    get: operations["repos/list-public"];
-  };
-  "/repositories/{repository_id}/environments/{environment_name}/secrets": {
-    /**
-     * List environment secrets
-     * @description Lists all secrets available in an environment without revealing their
-     * encrypted values.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    get: operations["actions/list-environment-secrets"];
-  };
-  "/repositories/{repository_id}/environments/{environment_name}/secrets/public-key": {
-    /**
-     * Get an environment public key
-     * @description Get the public key for an environment, which you need to encrypt environment
-     * secrets. You need to encrypt a secret before you can create or update secrets.
-     *
-     * Anyone with read access to the repository can use this endpoint.
-     * If the repository is private you must use an access token with the `repo` scope.
-     * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    get: operations["actions/get-environment-public-key"];
-  };
-  "/repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}": {
-    /**
-     * Get an environment secret
-     * @description Gets a single environment secret without revealing its encrypted value.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    get: operations["actions/get-environment-secret"];
-    /**
-     * Create or update an environment secret
-     * @description Creates or updates an environment secret with an encrypted value. Encrypt your secret using
-     * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    put: operations["actions/create-or-update-environment-secret"];
-    /**
-     * Delete an environment secret
-     * @description Deletes a secret in an environment using the secret name.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-     */
-    delete: operations["actions/delete-environment-secret"];
-  };
-  "/repositories/{repository_id}/environments/{environment_name}/variables": {
-    /**
-     * List environment variables
-     * @description Lists all environment variables.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `environments:read` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    get: operations["actions/list-environment-variables"];
-    /**
-     * Create an environment variable
-     * @description Create an environment variable that you can reference in a GitHub Actions workflow.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `environment:write` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    post: operations["actions/create-environment-variable"];
-  };
-  "/repositories/{repository_id}/environments/{environment_name}/variables/{name}": {
-    /**
-     * Get an environment variable
-     * @description Gets a specific variable in an environment.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `environments:read` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    get: operations["actions/get-environment-variable"];
-    /**
-     * Delete an environment variable
-     * @description Deletes an environment variable using the variable name.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `environment:write` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    delete: operations["actions/delete-environment-variable"];
-    /**
-     * Update an environment variable
-     * @description Updates an environment variable that you can reference in a GitHub Actions workflow.
-     *
-     * You must authenticate using an access token with the `repo` scope to use this endpoint.
-     * GitHub Apps must have the `environment:write` repository permission to use this endpoint.
-     * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-     */
-    patch: operations["actions/update-environment-variable"];
-  };
-  "/search/code": {
-    /**
-     * Search code
-     * @description Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-     *
-     * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-     *
-     * For example, if you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery) repository, your query would look something like this:
-     *
-     * `q=addClass+in:file+language:js+repo:jquery/jquery`
-     *
-     * This query searches for the keyword `addClass` within a file's contents. The query limits the search to files where the language is JavaScript in the `jquery/jquery` repository.
-     *
-     * Considerations for code search:
-     *
-     * Due to the complexity of searching code, there are a few restrictions on how searches are performed:
-     *
-     * *   Only the _default branch_ is considered. In most cases, this will be the `master` branch.
-     * *   Only files smaller than 384 KB are searchable.
-     * *   You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing
-     * language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is.
-     *
-     * This endpoint requires you to authenticate and limits you to 10 requests per minute.
-     */
-    get: operations["search/code"];
-  };
-  "/search/commits": {
-    /**
-     * Search commits
-     * @description Find commits via various criteria on the default branch (usually `main`). This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-     *
-     * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match
-     * metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-     *
-     * For example, if you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this:
-     *
-     * `q=repo:octocat/Spoon-Knife+css`
-     */
-    get: operations["search/commits"];
-  };
-  "/search/issues": {
-    /**
-     * Search issues and pull requests
-     * @description Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-     *
-     * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted
-     * search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-     *
-     * For example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this.
-     *
-     * `q=windows+label:bug+language:python+state:open&sort=created&order=asc`
-     *
-     * This query searches for the keyword `windows`, within any open issue that is labeled as `bug`. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results.
-     *
-     * **Note:** For requests made by GitHub Apps with a user access token, you can't retrieve a combination of issues and pull requests in a single query. Requests that don't include the `is:issue` or `is:pull-request` qualifier will receive an HTTP `422 Unprocessable Entity` response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the `is` qualifier, see "[Searching only issues or pull requests](https://docs.github.com/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)."
-     */
-    get: operations["search/issues-and-pull-requests"];
-  };
-  "/search/labels": {
-    /**
-     * Search labels
-     * @description Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-     *
-     * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-     *
-     * For example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this:
-     *
-     * `q=bug+defect+enhancement&repository_id=64778136`
-     *
-     * The labels that best match the query appear first in the search results.
-     */
-    get: operations["search/labels"];
-  };
-  "/search/repositories": {
-    /**
-     * Search repositories
-     * @description Find repositories via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-     *
-     * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-     *
-     * For example, if you want to search for popular Tetris repositories written in assembly code, your query might look like this:
-     *
-     * `q=tetris+language:assembly&sort=stars&order=desc`
-     *
-     * This query searches for repositories with the word `tetris` in the name, the description, or the README. The results are limited to repositories where the primary language is assembly. The results are sorted by stars in descending order, so that the most popular repositories appear first in the search results.
-     */
-    get: operations["search/repos"];
-  };
-  "/search/topics": {
-    /**
-     * Search topics
-     * @description Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). See "[Searching topics](https://docs.github.com/articles/searching-topics/)" for a detailed list of qualifiers.
-     *
-     * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-     *
-     * For example, if you want to search for topics related to Ruby that are featured on https://github.com/topics. Your query might look like this:
-     *
-     * `q=ruby+is:featured`
-     *
-     * This query searches for topics with the keyword `ruby` and limits the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results.
-     */
-    get: operations["search/topics"];
-  };
-  "/search/users": {
-    /**
-     * Search users
-     * @description Find users via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-     *
-     * When searching for users, you can get text match metadata for the issue **login**, public **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-     *
-     * For example, if you're looking for a list of popular users, you might try this query:
-     *
-     * `q=tom+repos:%3E42+followers:%3E1000`
-     *
-     * This query searches for users with the name `tom`. The results are restricted to users with more than 42 repositories and over 1,000 followers.
-     *
-     * This endpoint does not accept authentication and will only include publicly visible users. As an alternative, you can use the GraphQL API. The GraphQL API requires authentication and will return private users, including Enterprise Managed Users (EMUs), that you are authorized to view. For more information, see "[GraphQL Queries](https://docs.github.com/graphql/reference/queries#search)."
-     */
-    get: operations["search/users"];
-  };
-  "/teams/{team_id}": {
-    /**
-     * Get a team (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the [Get a team by name](https://docs.github.com/rest/teams/teams#get-a-team-by-name) endpoint.
-     */
-    get: operations["teams/get-legacy"];
-    /**
-     * Delete a team (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a team](https://docs.github.com/rest/teams/teams#delete-a-team) endpoint.
-     *
-     * To delete a team, the authenticated user must be an organization owner or team maintainer.
-     *
-     * If you are an organization owner, deleting a parent team will delete all of its child teams as well.
-     */
-    delete: operations["teams/delete-legacy"];
-    /**
-     * Update a team (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a team](https://docs.github.com/rest/teams/teams#update-a-team) endpoint.
-     *
-     * To edit a team, the authenticated user must either be an organization owner or a team maintainer.
-     *
-     * **Note:** With nested teams, the `privacy` for parent teams cannot be `secret`.
-     */
-    patch: operations["teams/update-legacy"];
-  };
-  "/teams/{team_id}/discussions": {
-    /**
-     * List discussions (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List discussions`](https://docs.github.com/rest/teams/discussions#list-discussions) endpoint.
-     *
-     * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    get: operations["teams/list-discussions-legacy"];
-    /**
-     * Create a discussion (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create a discussion`](https://docs.github.com/rest/teams/discussions#create-a-discussion) endpoint.
-     *
-     * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     */
-    post: operations["teams/create-discussion-legacy"];
-  };
-  "/teams/{team_id}/discussions/{discussion_number}": {
-    /**
-     * Get a discussion (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion) endpoint.
-     *
-     * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    get: operations["teams/get-discussion-legacy"];
-    /**
-     * Delete a discussion (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Delete a discussion`](https://docs.github.com/rest/teams/discussions#delete-a-discussion) endpoint.
-     *
-     * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    delete: operations["teams/delete-discussion-legacy"];
-    /**
-     * Update a discussion (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion](https://docs.github.com/rest/teams/discussions#update-a-discussion) endpoint.
-     *
-     * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    patch: operations["teams/update-discussion-legacy"];
-  };
-  "/teams/{team_id}/discussions/{discussion_number}/comments": {
-    /**
-     * List discussion comments (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [List discussion comments](https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments) endpoint.
-     *
-     * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    get: operations["teams/list-discussion-comments-legacy"];
-    /**
-     * Create a discussion comment (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Create a discussion comment](https://docs.github.com/rest/teams/discussion-comments#create-a-discussion-comment) endpoint.
-     *
-     * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     *
-     * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-     */
-    post: operations["teams/create-discussion-comment-legacy"];
-  };
-  "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": {
-    /**
-     * Get a discussion comment (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment) endpoint.
-     *
-     * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    get: operations["teams/get-discussion-comment-legacy"];
-    /**
-     * Delete a discussion comment (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a discussion comment](https://docs.github.com/rest/teams/discussion-comments#delete-a-discussion-comment) endpoint.
-     *
-     * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    delete: operations["teams/delete-discussion-comment-legacy"];
-    /**
-     * Update a discussion comment (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion comment](https://docs.github.com/rest/teams/discussion-comments#update-a-discussion-comment) endpoint.
-     *
-     * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    patch: operations["teams/update-discussion-comment-legacy"];
-  };
-  "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": {
-    /**
-     * List reactions for a team discussion comment (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion comment`](https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment) endpoint.
-     *
-     * List the reactions to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    get: operations["reactions/list-for-team-discussion-comment-legacy"];
-    /**
-     * Create reaction for a team discussion comment (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new "[Create reaction for a team discussion comment](https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-comment)" endpoint.
-     *
-     * Create a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment.
-     */
-    post: operations["reactions/create-for-team-discussion-comment-legacy"];
-  };
-  "/teams/{team_id}/discussions/{discussion_number}/reactions": {
-    /**
-     * List reactions for a team discussion (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion`](https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion) endpoint.
-     *
-     * List the reactions to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    get: operations["reactions/list-for-team-discussion-legacy"];
-    /**
-     * Create reaction for a team discussion (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create reaction for a team discussion`](https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion) endpoint.
-     *
-     * Create a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion.
-     */
-    post: operations["reactions/create-for-team-discussion-legacy"];
-  };
-  "/teams/{team_id}/invitations": {
-    /**
-     * List pending team invitations (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List pending team invitations`](https://docs.github.com/rest/teams/members#list-pending-team-invitations) endpoint.
-     *
-     * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.
-     */
-    get: operations["teams/list-pending-invitations-legacy"];
-  };
-  "/teams/{team_id}/members": {
-    /**
-     * List team members (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team members`](https://docs.github.com/rest/teams/members#list-team-members) endpoint.
-     *
-     * Team members will include the members of child teams.
-     */
-    get: operations["teams/list-members-legacy"];
-  };
-  "/teams/{team_id}/members/{username}": {
-    /**
-     * Get team member (Legacy)
-     * @deprecated
-     * @description The "Get team member" endpoint (described below) is deprecated.
-     *
-     * We recommend using the [Get team membership for a user](https://docs.github.com/rest/teams/members#get-team-membership-for-a-user) endpoint instead. It allows you to get both active and pending memberships.
-     *
-     * To list members in a team, the team must be visible to the authenticated user.
-     */
-    get: operations["teams/get-member-legacy"];
-    /**
-     * Add team member (Legacy)
-     * @deprecated
-     * @description The "Add team member" endpoint (described below) is deprecated.
-     *
-     * We recommend using the [Add or update team membership for a user](https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user) endpoint instead. It allows you to invite new organization members to your teams.
-     *
-     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * To add someone to a team, the authenticated user must be an organization owner or a team maintainer in the team they're changing. The person being added to the team must be a member of the team's organization.
-     *
-     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-     *
-     * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-     */
-    put: operations["teams/add-member-legacy"];
-    /**
-     * Remove team member (Legacy)
-     * @deprecated
-     * @description The "Remove team member" endpoint (described below) is deprecated.
-     *
-     * We recommend using the [Remove team membership for a user](https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user) endpoint instead. It allows you to remove both active and pending memberships.
-     *
-     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * To remove a team member, the authenticated user must have 'admin' permissions to the team or be an owner of the org that the team is associated with. Removing a team member does not delete the user, it just removes them from the team.
-     *
-     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-     */
-    delete: operations["teams/remove-member-legacy"];
-  };
-  "/teams/{team_id}/memberships/{username}": {
-    /**
-     * Get team membership for a user (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get team membership for a user](https://docs.github.com/rest/teams/members#get-team-membership-for-a-user) endpoint.
-     *
-     * Team members will include the members of child teams.
-     *
-     * To get a user's membership with a team, the team must be visible to the authenticated user.
-     *
-     * **Note:**
-     * The response contains the `state` of the membership and the member's `role`.
-     *
-     * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/teams/teams#create-a-team).
-     */
-    get: operations["teams/get-membership-for-user-legacy"];
-    /**
-     * Add or update team membership for a user (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team membership for a user](https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user) endpoint.
-     *
-     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * If the user is already a member of the team's organization, this endpoint will add the user to the team. To add a membership between an organization member and a team, the authenticated user must be an organization owner or a team maintainer.
-     *
-     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-     *
-     * If the user is unaffiliated with the team's organization, this endpoint will send an invitation to the user via email. This newly-created membership will be in the "pending" state until the user accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. To add a membership between an unaffiliated user and a team, the authenticated user must be an organization owner.
-     *
-     * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer.
-     */
-    put: operations["teams/add-or-update-membership-for-user-legacy"];
-    /**
-     * Remove team membership for a user (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove team membership for a user](https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user) endpoint.
-     *
-     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-     *
-     * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team.
-     *
-     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-     */
-    delete: operations["teams/remove-membership-for-user-legacy"];
-  };
-  "/teams/{team_id}/projects": {
-    /**
-     * List team projects (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team projects`](https://docs.github.com/rest/teams/teams#list-team-projects) endpoint.
-     *
-     * Lists the organization projects for a team.
-     */
-    get: operations["teams/list-projects-legacy"];
-  };
-  "/teams/{team_id}/projects/{project_id}": {
-    /**
-     * Check team permissions for a project (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a project](https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-project) endpoint.
-     *
-     * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team.
-     */
-    get: operations["teams/check-permissions-for-project-legacy"];
-    /**
-     * Add or update team project permissions (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team project permissions](https://docs.github.com/rest/teams/teams#add-or-update-team-project-permissions) endpoint.
-     *
-     * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization.
-     */
-    put: operations["teams/add-or-update-project-permissions-legacy"];
-    /**
-     * Remove a project from a team (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a project from a team](https://docs.github.com/rest/teams/teams#remove-a-project-from-a-team) endpoint.
-     *
-     * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. **Note:** This endpoint removes the project from the team, but does not delete it.
-     */
-    delete: operations["teams/remove-project-legacy"];
-  };
-  "/teams/{team_id}/repos": {
-    /**
-     * List team repositories (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [List team repositories](https://docs.github.com/rest/teams/teams#list-team-repositories) endpoint.
-     */
-    get: operations["teams/list-repos-legacy"];
-  };
-  "/teams/{team_id}/repos/{owner}/{repo}": {
-    /**
-     * Check team permissions for a repository (Legacy)
-     * @deprecated
-     * @description **Note**: Repositories inherited through a parent team will also be checked.
-     *
-     * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a repository](https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-repository) endpoint.
-     *
-     * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header:
-     */
-    get: operations["teams/check-permissions-for-repo-legacy"];
-    /**
-     * Add or update team repository permissions (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new "[Add or update team repository permissions](https://docs.github.com/rest/teams/teams#add-or-update-team-repository-permissions)" endpoint.
-     *
-     * 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 verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-     */
-    put: operations["teams/add-or-update-repo-permissions-legacy"];
-    /**
-     * Remove a repository from a team (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a repository from a team](https://docs.github.com/rest/teams/teams#remove-a-repository-from-a-team) endpoint.
-     *
-     * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. NOTE: This does not delete the repository, it just removes it from the team.
-     */
-    delete: operations["teams/remove-repo-legacy"];
-  };
-  "/teams/{team_id}/teams": {
-    /**
-     * List child teams (Legacy)
-     * @deprecated
-     * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List child teams`](https://docs.github.com/rest/teams/teams#list-child-teams) endpoint.
-     */
-    get: operations["teams/list-child-legacy"];
-  };
-  "/user": {
-    /**
-     * Get the authenticated user
-     * @description If the authenticated user is authenticated with an OAuth token with the `user` scope, then the response lists public and private profile information.
-     *
-     * If the authenticated user is authenticated through OAuth without the `user` scope, then the response lists only public profile information.
-     */
-    get: operations["users/get-authenticated"];
-    /**
-     * Update the authenticated user
-     * @description **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API.
-     */
-    patch: operations["users/update-authenticated"];
-  };
-  "/user/blocks": {
-    /**
-     * List users blocked by the authenticated user
-     * @description List the users you've blocked on your personal account.
-     */
-    get: operations["users/list-blocked-by-authenticated-user"];
-  };
-  "/user/blocks/{username}": {
-    /**
-     * Check if a user is blocked by the authenticated user
-     * @description Returns a 204 if the given user is blocked by the authenticated user. Returns a 404 if the given user is not blocked by the authenticated user, or if the given user account has been identified as spam by GitHub.
-     */
-    get: operations["users/check-blocked"];
-    /**
-     * Block a user
-     * @description Blocks the given user and returns a 204. If the authenticated user cannot block the given user a 422 is returned.
-     */
-    put: operations["users/block"];
-    /**
-     * Unblock a user
-     * @description Unblocks the given user and returns a 204.
-     */
-    delete: operations["users/unblock"];
-  };
-  "/user/codespaces": {
-    /**
-     * List codespaces for the authenticated user
-     * @description Lists the authenticated user's codespaces.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint.
-     */
-    get: operations["codespaces/list-for-authenticated-user"];
-    /**
-     * Create a codespace for the authenticated user
-     * @description Creates a new codespace, owned by the authenticated user.
-     *
-     * This endpoint requires either a `repository_id` OR a `pull_request` but not both.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-     */
-    post: operations["codespaces/create-for-authenticated-user"];
-  };
-  "/user/codespaces/secrets": {
-    /**
-     * List secrets for the authenticated user
-     * @description Lists all secrets available for a user's Codespaces without revealing their
-     * encrypted values.
-     *
-     * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-     *
-     * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint.
-     */
-    get: operations["codespaces/list-secrets-for-authenticated-user"];
-  };
-  "/user/codespaces/secrets/public-key": {
-    /**
-     * Get public key for the authenticated user
-     * @description Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets.
-     *
-     * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-     *
-     * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint.
-     */
-    get: operations["codespaces/get-public-key-for-authenticated-user"];
-  };
-  "/user/codespaces/secrets/{secret_name}": {
-    /**
-     * Get a secret for the authenticated user
-     * @description Gets a secret available to a user's codespaces without revealing its encrypted value.
-     *
-     * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-     *
-     * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint.
-     */
-    get: operations["codespaces/get-secret-for-authenticated-user"];
-    /**
-     * Create or update a secret for the authenticated user
-     * @description Creates or updates a secret for a user's codespace with an encrypted value. Encrypt your secret using
-     * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-     *
-     * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must also have Codespaces access to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and `codespaces_secrets` repository permission on all referenced repositories to use this endpoint.
-     */
-    put: operations["codespaces/create-or-update-secret-for-authenticated-user"];
-    /**
-     * Delete a secret for the authenticated user
-     * @description Deletes a secret from a user's codespaces using the secret name. Deleting the secret will remove access from all codespaces that were allowed to access the secret.
-     *
-     * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces_user_secrets` user permission to use this endpoint.
-     */
-    delete: operations["codespaces/delete-secret-for-authenticated-user"];
-  };
-  "/user/codespaces/secrets/{secret_name}/repositories": {
-    /**
-     * List selected repositories for a user secret
-     * @description List the repositories that have been granted the ability to use a user's codespace secret.
-     *
-     * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-     *
-     * GitHub Apps must have read access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on all referenced repositories to use this endpoint.
-     */
-    get: operations["codespaces/list-repositories-for-secret-for-authenticated-user"];
-    /**
-     * Set selected repositories for a user secret
-     * @description Select the repositories that will use a user's codespace secret.
-     *
-     * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on all referenced repositories to use this endpoint.
-     */
-    put: operations["codespaces/set-repositories-for-secret-for-authenticated-user"];
-  };
-  "/user/codespaces/secrets/{secret_name}/repositories/{repository_id}": {
-    /**
-     * Add a selected repository to a user secret
-     * @description Adds a repository to the selected repositories for a user's codespace secret.
-     * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-     * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on the referenced repository to use this endpoint.
-     */
-    put: operations["codespaces/add-repository-for-secret-for-authenticated-user"];
-    /**
-     * Remove a selected repository from a user secret
-     * @description Removes a repository from the selected repositories for a user's codespace secret.
-     * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-     * GitHub Apps must have write access to the `codespaces_user_secrets` user permission to use this endpoint.
-     */
-    delete: operations["codespaces/remove-repository-for-secret-for-authenticated-user"];
-  };
-  "/user/codespaces/{codespace_name}": {
-    /**
-     * Get a codespace for the authenticated user
-     * @description Gets information about a user's codespace.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint.
-     */
-    get: operations["codespaces/get-for-authenticated-user"];
-    /**
-     * Delete a codespace for the authenticated user
-     * @description Deletes a user's codespace.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-     */
-    delete: operations["codespaces/delete-for-authenticated-user"];
-    /**
-     * Update a codespace for the authenticated user
-     * @description Updates a codespace owned by the authenticated user. Currently only the codespace's machine type and recent folders can be modified using this endpoint.
-     *
-     * If you specify a new machine type it will be applied the next time your codespace is started.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-     */
-    patch: operations["codespaces/update-for-authenticated-user"];
-  };
-  "/user/codespaces/{codespace_name}/exports": {
-    /**
-     * Export a codespace for the authenticated user
-     * @description Triggers an export of the specified codespace and returns a URL and ID where the status of the export can be monitored.
-     *
-     * If changes cannot be pushed to the codespace's repository, they will be pushed to a new or previously-existing fork instead.
-     *
-     * You must authenticate using a personal access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint.
-     */
-    post: operations["codespaces/export-for-authenticated-user"];
-  };
-  "/user/codespaces/{codespace_name}/exports/{export_id}": {
-    /**
-     * Get details about a codespace export
-     * @description Gets information about an export of a codespace.
-     *
-     * You must authenticate using a personal access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have read access to the `codespaces_lifecycle_admin` repository permission to use this endpoint.
-     */
-    get: operations["codespaces/get-export-details-for-authenticated-user"];
-  };
-  "/user/codespaces/{codespace_name}/machines": {
-    /**
-     * List machine types for a codespace
-     * @description List the machine types a codespace can transition to use.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have read access to the `codespaces_metadata` repository permission to use this endpoint.
-     */
-    get: operations["codespaces/codespace-machines-for-authenticated-user"];
-  };
-  "/user/codespaces/{codespace_name}/publish": {
-    /**
-     * Create a repository from an unpublished codespace
-     * @description Publishes an unpublished codespace, creating a new repository and assigning it to the codespace.
-     *
-     * The codespace's token is granted write permissions to the repository, allowing the user to push their changes.
-     *
-     * This will fail for a codespace that is already published, meaning it has an associated repository.
-     *
-     * You must authenticate using a personal access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-     */
-    post: operations["codespaces/publish-for-authenticated-user"];
-  };
-  "/user/codespaces/{codespace_name}/start": {
-    /**
-     * Start a codespace for the authenticated user
-     * @description Starts a user's codespace.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint.
-     */
-    post: operations["codespaces/start-for-authenticated-user"];
-  };
-  "/user/codespaces/{codespace_name}/stop": {
-    /**
-     * Stop a codespace for the authenticated user
-     * @description Stops a user's codespace.
-     *
-     * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-     *
-     * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint.
-     */
-    post: operations["codespaces/stop-for-authenticated-user"];
-  };
-  "/user/docker/conflicts": {
-    /**
-     * Get list of conflicting packages during Docker migration for authenticated-user
-     * @description Lists all packages that are owned by the authenticated user within the user's namespace, and that encountered a conflict during a Docker migration.
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` scope.
-     */
-    get: operations["packages/list-docker-migration-conflicting-packages-for-authenticated-user"];
-  };
-  "/user/email/visibility": {
-    /**
-     * Set primary email visibility for the authenticated user
-     * @description Sets the visibility for your primary email addresses.
-     */
-    patch: operations["users/set-primary-email-visibility-for-authenticated-user"];
-  };
-  "/user/emails": {
-    /**
-     * List email addresses for the authenticated user
-     * @description Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope.
-     */
-    get: operations["users/list-emails-for-authenticated-user"];
-    /**
-     * Add an email address for the authenticated user
-     * @description This endpoint is accessible with the `user` scope.
-     */
-    post: operations["users/add-email-for-authenticated-user"];
-    /**
-     * Delete an email address for the authenticated user
-     * @description This endpoint is accessible with the `user` scope.
-     */
-    delete: operations["users/delete-email-for-authenticated-user"];
-  };
-  "/user/followers": {
-    /**
-     * List followers of the authenticated user
-     * @description Lists the people following the authenticated user.
-     */
-    get: operations["users/list-followers-for-authenticated-user"];
-  };
-  "/user/following": {
-    /**
-     * List the people the authenticated user follows
-     * @description Lists the people who the authenticated user follows.
-     */
-    get: operations["users/list-followed-by-authenticated-user"];
-  };
-  "/user/following/{username}": {
-    /** Check if a person is followed by the authenticated user */
-    get: operations["users/check-person-is-followed-by-authenticated"];
-    /**
-     * Follow a user
-     * @description Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-     *
-     * Following a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope.
-     */
-    put: operations["users/follow"];
-    /**
-     * Unfollow a user
-     * @description Unfollowing a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope.
-     */
-    delete: operations["users/unfollow"];
-  };
-  "/user/gpg_keys": {
-    /**
-     * List GPG keys for the authenticated user
-     * @description Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    get: operations["users/list-gpg-keys-for-authenticated-user"];
-    /**
-     * Create a GPG key for the authenticated user
-     * @description Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    post: operations["users/create-gpg-key-for-authenticated-user"];
-  };
-  "/user/gpg_keys/{gpg_key_id}": {
-    /**
-     * Get a GPG key for the authenticated user
-     * @description View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    get: operations["users/get-gpg-key-for-authenticated-user"];
-    /**
-     * Delete a GPG key for the authenticated user
-     * @description Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    delete: operations["users/delete-gpg-key-for-authenticated-user"];
-  };
-  "/user/installations": {
-    /**
-     * List app installations accessible to the user access token
-     * @description Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access.
-     *
-     * You must use a [user access token](https://docs.github.com/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), created for a user who has authorized your GitHub App, to access this endpoint.
-     *
-     * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
-     *
-     * You can find the permissions for the installation under the `permissions` key.
-     */
-    get: operations["apps/list-installations-for-authenticated-user"];
-  };
-  "/user/installations/{installation_id}/repositories": {
-    /**
-     * List repositories accessible to the user access token
-     * @description List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation.
-     *
-     * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
-     *
-     * You must use a [user access token](https://docs.github.com/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), created for a user who has authorized your GitHub App, to access this endpoint.
-     *
-     * The access the user has to each repository is included in the hash under the `permissions` key.
-     */
-    get: operations["apps/list-installation-repos-for-authenticated-user"];
-  };
-  "/user/installations/{installation_id}/repositories/{repository_id}": {
-    /**
-     * Add a repository to an app installation
-     * @description Add a single repository to an installation. The authenticated user must have admin access to the repository.
-     *
-     * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint.
-     */
-    put: operations["apps/add-repo-to-installation-for-authenticated-user"];
-    /**
-     * Remove a repository from an app installation
-     * @description Remove a single repository from an installation. The authenticated user must have admin access to the repository. The installation must have the `repository_selection` of `selected`.
-     *
-     * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint.
-     */
-    delete: operations["apps/remove-repo-from-installation-for-authenticated-user"];
-  };
-  "/user/interaction-limits": {
-    /**
-     * Get interaction restrictions for your public repositories
-     * @description Shows which type of GitHub user can interact with your public repositories and when the restriction expires.
-     */
-    get: operations["interactions/get-restrictions-for-authenticated-user"];
-    /**
-     * Set interaction restrictions for your public repositories
-     * @description Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user.
-     */
-    put: operations["interactions/set-restrictions-for-authenticated-user"];
-    /**
-     * Remove interaction restrictions from your public repositories
-     * @description Removes any interaction restrictions from your public repositories.
-     */
-    delete: operations["interactions/remove-restrictions-for-authenticated-user"];
-  };
-  "/user/issues": {
-    /**
-     * List user account issues assigned to the authenticated user
-     * @description List issues across owned and member repositories assigned to the authenticated user.
-     *
-     * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-     * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-     * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-     * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-     */
-    get: operations["issues/list-for-authenticated-user"];
-  };
-  "/user/keys": {
-    /**
-     * List public SSH keys for the authenticated user
-     * @description Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    get: operations["users/list-public-ssh-keys-for-authenticated-user"];
-    /**
-     * Create a public SSH key for the authenticated user
-     * @description Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    post: operations["users/create-public-ssh-key-for-authenticated-user"];
-  };
-  "/user/keys/{key_id}": {
-    /**
-     * Get a public SSH key for the authenticated user
-     * @description View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    get: operations["users/get-public-ssh-key-for-authenticated-user"];
-    /**
-     * Delete a public SSH key for the authenticated user
-     * @description Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-     */
-    delete: operations["users/delete-public-ssh-key-for-authenticated-user"];
-  };
-  "/user/marketplace_purchases": {
-    /**
-     * List subscriptions for the authenticated user
-     * @description Lists the active subscriptions for the authenticated user. GitHub Apps must use a [user access token](https://docs.github.com/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), created for a user who has authorized your GitHub App, to access this endpoint. OAuth apps must authenticate using an [OAuth token](https://docs.github.com/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps).
-     */
-    get: operations["apps/list-subscriptions-for-authenticated-user"];
-  };
-  "/user/marketplace_purchases/stubbed": {
-    /**
-     * List subscriptions for the authenticated user (stubbed)
-     * @description Lists the active subscriptions for the authenticated user. GitHub Apps must use a [user access token](https://docs.github.com/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), created for a user who has authorized your GitHub App, to access this endpoint. OAuth apps must authenticate using an [OAuth token](https://docs.github.com/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps).
-     */
-    get: operations["apps/list-subscriptions-for-authenticated-user-stubbed"];
-  };
-  "/user/memberships/orgs": {
-    /**
-     * List organization memberships for the authenticated user
-     * @description Lists all of the authenticated user's organization memberships.
-     */
-    get: operations["orgs/list-memberships-for-authenticated-user"];
-  };
-  "/user/memberships/orgs/{org}": {
-    /**
-     * Get an organization membership for the authenticated user
-     * @description If the authenticated user is an active or pending member of the organization, this endpoint will return the user's membership. If the authenticated user is not affiliated with the organization, a `404` is returned. This endpoint will return a `403` if the request is made by a GitHub App that is blocked by the organization.
-     */
-    get: operations["orgs/get-membership-for-authenticated-user"];
-    /**
-     * Update an organization membership for the authenticated user
-     * @description Converts the authenticated user to an active member of the organization, if that user has a pending invitation from the organization.
-     */
-    patch: operations["orgs/update-membership-for-authenticated-user"];
-  };
-  "/user/migrations": {
-    /**
-     * List user migrations
-     * @description Lists all migrations a user has started.
-     */
-    get: operations["migrations/list-for-authenticated-user"];
-    /**
-     * Start a user migration
-     * @description Initiates the generation of a user migration archive.
-     */
-    post: operations["migrations/start-for-authenticated-user"];
-  };
-  "/user/migrations/{migration_id}": {
-    /**
-     * Get a user migration status
-     * @description Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values:
-     *
-     * *   `pending` - the migration hasn't started yet.
-     * *   `exporting` - the migration is in progress.
-     * *   `exported` - the migration finished successfully.
-     * *   `failed` - the migration failed.
-     *
-     * Once the migration has been `exported` you can [download the migration archive](https://docs.github.com/rest/migrations/users#download-a-user-migration-archive).
-     */
-    get: operations["migrations/get-status-for-authenticated-user"];
-  };
-  "/user/migrations/{migration_id}/archive": {
-    /**
-     * Download a user migration archive
-     * @description Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects:
-     *
-     * *   attachments
-     * *   bases
-     * *   commit\_comments
-     * *   issue\_comments
-     * *   issue\_events
-     * *   issues
-     * *   milestones
-     * *   organizations
-     * *   projects
-     * *   protected\_branches
-     * *   pull\_request\_reviews
-     * *   pull\_requests
-     * *   releases
-     * *   repositories
-     * *   review\_comments
-     * *   schema
-     * *   users
-     *
-     * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data.
-     */
-    get: operations["migrations/get-archive-for-authenticated-user"];
-    /**
-     * Delete a user migration archive
-     * @description Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [List user migrations](https://docs.github.com/rest/migrations/users#list-user-migrations) and [Get a user migration status](https://docs.github.com/rest/migrations/users#get-a-user-migration-status) endpoints, will continue to be available even after an archive is deleted.
-     */
-    delete: operations["migrations/delete-archive-for-authenticated-user"];
-  };
-  "/user/migrations/{migration_id}/repos/{repo_name}/lock": {
-    /**
-     * Unlock a user repository
-     * @description Unlocks a repository. You can lock repositories when you [start a user migration](https://docs.github.com/rest/migrations/users#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://docs.github.com/rest/repos/repos#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked.
-     */
-    delete: operations["migrations/unlock-repo-for-authenticated-user"];
-  };
-  "/user/migrations/{migration_id}/repositories": {
-    /**
-     * List repositories for a user migration
-     * @description Lists all the repositories for this user migration.
-     */
-    get: operations["migrations/list-repos-for-authenticated-user"];
-  };
-  "/user/orgs": {
-    /**
-     * List organizations for the authenticated user
-     * @description List organizations for the authenticated user.
-     *
-     * **OAuth scope requirements**
-     *
-     * This only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope. OAuth requests with insufficient scope receive a `403 Forbidden` response.
-     */
-    get: operations["orgs/list-for-authenticated-user"];
-  };
-  "/user/packages": {
-    /**
-     * List packages for the authenticated user's namespace
-     * @description Lists packages owned by the authenticated user within the user's namespace.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    get: operations["packages/list-packages-for-authenticated-user"];
-  };
-  "/user/packages/{package_type}/{package_name}": {
-    /**
-     * Get a package for the authenticated user
-     * @description Gets a specific package for a package owned by the authenticated user.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    get: operations["packages/get-package-for-authenticated-user"];
-    /**
-     * Delete a package for the authenticated user
-     * @description Deletes a package owned by the authenticated user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` and `delete:packages` scopes.
-     * If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    delete: operations["packages/delete-package-for-authenticated-user"];
-  };
-  "/user/packages/{package_type}/{package_name}/restore": {
-    /**
-     * Restore a package for the authenticated user
-     * @description Restores a package owned by the authenticated user.
-     *
-     * You can restore a deleted package under the following conditions:
-     *   - The package was deleted within the last 30 days.
-     *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` and `write:packages` scopes. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    post: operations["packages/restore-package-for-authenticated-user"];
-  };
-  "/user/packages/{package_type}/{package_name}/versions": {
-    /**
-     * List package versions for a package owned by the authenticated user
-     * @description Lists package versions for a package owned by the authenticated user.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    get: operations["packages/get-all-package-versions-for-package-owned-by-authenticated-user"];
-  };
-  "/user/packages/{package_type}/{package_name}/versions/{package_version_id}": {
-    /**
-     * Get a package version for the authenticated user
-     * @description Gets a specific package version for a package owned by the authenticated user.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    get: operations["packages/get-package-version-for-authenticated-user"];
-    /**
-     * Delete a package version for the authenticated user
-     * @description Deletes a specific package version for a package owned by the authenticated user.  If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance.
-     *
-     * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `delete:packages` scopes.
-     * If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    delete: operations["packages/delete-package-version-for-authenticated-user"];
-  };
-  "/user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": {
-    /**
-     * Restore a package version for the authenticated user
-     * @description Restores a package version owned by the authenticated user.
-     *
-     * You can restore a deleted package version under the following conditions:
-     *   - The package was deleted within the last 30 days.
-     *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` and `write:packages` scopes. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    post: operations["packages/restore-package-version-for-authenticated-user"];
-  };
-  "/user/projects": {
-    /**
-     * Create a user project
-     * @description Creates a user project board. Returns a `410 Gone` status if the user does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-     */
-    post: operations["projects/create-for-authenticated-user"];
-  };
-  "/user/public_emails": {
-    /**
-     * List public email addresses for the authenticated user
-     * @description Lists your publicly visible email address, which you can set with the [Set primary email visibility for the authenticated user](https://docs.github.com/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user) endpoint. This endpoint is accessible with the `user:email` scope.
-     */
-    get: operations["users/list-public-emails-for-authenticated-user"];
-  };
-  "/user/repos": {
-    /**
-     * List repositories for the authenticated user
-     * @description Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access.
-     *
-     * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
-     */
-    get: operations["repos/list-for-authenticated-user"];
-    /**
-     * Create a repository for the authenticated user
-     * @description Creates a new repository for the authenticated user.
-     *
-     * **OAuth scope requirements**
-     *
-     * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
-     *
-     * *   `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.
-     * *   `repo` scope to create a private repository.
-     */
-    post: operations["repos/create-for-authenticated-user"];
-  };
-  "/user/repository_invitations": {
-    /**
-     * List repository invitations for the authenticated user
-     * @description When authenticating as a user, this endpoint will list all currently open repository invitations for that user.
-     */
-    get: operations["repos/list-invitations-for-authenticated-user"];
-  };
-  "/user/repository_invitations/{invitation_id}": {
-    /** Decline a repository invitation */
-    delete: operations["repos/decline-invitation-for-authenticated-user"];
-    /** Accept a repository invitation */
-    patch: operations["repos/accept-invitation-for-authenticated-user"];
-  };
-  "/user/social_accounts": {
-    /**
-     * List social accounts for the authenticated user
-     * @description Lists all of your social accounts.
-     */
-    get: operations["users/list-social-accounts-for-authenticated-user"];
-    /**
-     * Add social accounts for the authenticated user
-     * @description Add one or more social accounts to the authenticated user's profile. This endpoint is accessible with the `user` scope.
-     */
-    post: operations["users/add-social-account-for-authenticated-user"];
-    /**
-     * Delete social accounts for the authenticated user
-     * @description Deletes one or more social accounts from the authenticated user's profile. This endpoint is accessible with the `user` scope.
-     */
-    delete: operations["users/delete-social-account-for-authenticated-user"];
-  };
-  "/user/ssh_signing_keys": {
-    /**
-     * List SSH signing keys for the authenticated user
-     * @description Lists the SSH signing keys for the authenticated user's GitHub account. You must authenticate with Basic Authentication, or you must authenticate with OAuth with at least `read:ssh_signing_key` scope. For more information, see "[Understanding scopes for OAuth apps](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)."
-     */
-    get: operations["users/list-ssh-signing-keys-for-authenticated-user"];
-    /**
-     * Create a SSH signing key for the authenticated user
-     * @description Creates an SSH signing key for the authenticated user's GitHub account. You must authenticate with Basic Authentication, or you must authenticate with OAuth with at least `write:ssh_signing_key` scope. For more information, see "[Understanding scopes for OAuth apps](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)."
-     */
-    post: operations["users/create-ssh-signing-key-for-authenticated-user"];
-  };
-  "/user/ssh_signing_keys/{ssh_signing_key_id}": {
-    /**
-     * Get an SSH signing key for the authenticated user
-     * @description Gets extended details for an SSH signing key. You must authenticate with Basic Authentication, or you must authenticate with OAuth with at least `read:ssh_signing_key` scope. For more information, see "[Understanding scopes for OAuth apps](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)."
-     */
-    get: operations["users/get-ssh-signing-key-for-authenticated-user"];
-    /**
-     * Delete an SSH signing key for the authenticated user
-     * @description Deletes an SSH signing key from the authenticated user's GitHub account. You must authenticate with Basic Authentication, or you must authenticate with OAuth with at least `admin:ssh_signing_key` scope. For more information, see "[Understanding scopes for OAuth apps](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)."
-     */
-    delete: operations["users/delete-ssh-signing-key-for-authenticated-user"];
-  };
-  "/user/starred": {
-    /**
-     * List repositories starred by the authenticated user
-     * @description Lists repositories the authenticated user has starred.
-     *
-     * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: `application/vnd.github.star+json`.
-     */
-    get: operations["activity/list-repos-starred-by-authenticated-user"];
-  };
-  "/user/starred/{owner}/{repo}": {
-    /**
-     * Check if a repository is starred by the authenticated user
-     * @description Whether the authenticated user has starred the repository.
-     */
-    get: operations["activity/check-repo-is-starred-by-authenticated-user"];
-    /**
-     * Star a repository for the authenticated user
-     * @description Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-     */
-    put: operations["activity/star-repo-for-authenticated-user"];
-    /**
-     * Unstar a repository for the authenticated user
-     * @description Unstar a repository that the authenticated user has previously starred.
-     */
-    delete: operations["activity/unstar-repo-for-authenticated-user"];
-  };
-  "/user/subscriptions": {
-    /**
-     * List repositories watched by the authenticated user
-     * @description Lists repositories the authenticated user is watching.
-     */
-    get: operations["activity/list-watched-repos-for-authenticated-user"];
-  };
-  "/user/teams": {
-    /**
-     * List teams for the authenticated user
-     * @description List all of the teams across all of the organizations to which the authenticated user belongs. This method requires `user`, `repo`, or `read:org` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/) when authenticating via [OAuth](https://docs.github.com/apps/building-oauth-apps/). When using a fine-grained personal access token, the resource owner of the token [must be a single organization](https://docs.github.com/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#fine-grained-personal-access-tokens), and have at least read-only member organization permissions. The response payload only contains the teams from a single organization when using a fine-grained personal access token.
-     */
-    get: operations["teams/list-for-authenticated-user"];
-  };
-  "/users": {
-    /**
-     * List users
-     * @description Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts.
-     *
-     * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of users.
-     */
-    get: operations["users/list"];
-  };
-  "/users/{username}": {
-    /**
-     * Get a user
-     * @description Provides publicly available information about someone with a GitHub account.
-     *
-     * GitHub Apps with the `Plan` user permission can use this endpoint to retrieve information about a user's GitHub plan. The GitHub App must be authenticated as a user. See "[Identifying and authorizing users for GitHub Apps](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)" for details about authentication. For an example response, see 'Response with GitHub plan information' below"
-     *
-     * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be “public” which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/overview/resources-in-the-rest-api#authentication).
-     *
-     * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see "[Emails API](https://docs.github.com/rest/users/emails)".
-     */
-    get: operations["users/get-by-username"];
-  };
-  "/users/{username}/docker/conflicts": {
-    /**
-     * Get list of conflicting packages during Docker migration for user
-     * @description Lists all packages that are in a specific user's namespace, that the requesting user has access to, and that encountered a conflict during Docker migration.
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` scope.
-     */
-    get: operations["packages/list-docker-migration-conflicting-packages-for-user"];
-  };
-  "/users/{username}/events": {
-    /**
-     * List events for the authenticated user
-     * @description If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events.
-     */
-    get: operations["activity/list-events-for-authenticated-user"];
-  };
-  "/users/{username}/events/orgs/{org}": {
-    /**
-     * List organization events for the authenticated user
-     * @description This is the user's organization dashboard. You must be authenticated as the user to view this.
-     */
-    get: operations["activity/list-org-events-for-authenticated-user"];
-  };
-  "/users/{username}/events/public": {
-    /** List public events for a user */
-    get: operations["activity/list-public-events-for-user"];
-  };
-  "/users/{username}/followers": {
-    /**
-     * List followers of a user
-     * @description Lists the people following the specified user.
-     */
-    get: operations["users/list-followers-for-user"];
-  };
-  "/users/{username}/following": {
-    /**
-     * List the people a user follows
-     * @description Lists the people who the specified user follows.
-     */
-    get: operations["users/list-following-for-user"];
-  };
-  "/users/{username}/following/{target_user}": {
-    /** Check if a user follows another user */
-    get: operations["users/check-following-for-user"];
-  };
-  "/users/{username}/gists": {
-    /**
-     * List gists for a user
-     * @description Lists public gists for the specified user:
-     */
-    get: operations["gists/list-for-user"];
-  };
-  "/users/{username}/gpg_keys": {
-    /**
-     * List GPG keys for a user
-     * @description Lists the GPG keys for a user. This information is accessible by anyone.
-     */
-    get: operations["users/list-gpg-keys-for-user"];
-  };
-  "/users/{username}/hovercard": {
-    /**
-     * Get contextual information for a user
-     * @description Provides hovercard information when authenticated through basic auth or OAuth with the `repo` scope. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations.
-     *
-     * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository via cURL, it would look like this:
-     *
-     * ```shell
-     *  curl -u username:token
-     *   https://api.github.com/users/octocat/hovercard?subject_type=repository&subject_id=1300192
-     * ```
-     */
-    get: operations["users/get-context-for-user"];
-  };
-  "/users/{username}/installation": {
-    /**
-     * Get a user installation for the authenticated app
-     * @description Enables an authenticated GitHub App to find the user’s installation information.
-     *
-     * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-     */
-    get: operations["apps/get-user-installation"];
-  };
-  "/users/{username}/keys": {
-    /**
-     * List public keys for a user
-     * @description Lists the _verified_ public SSH keys for a user. This is accessible by anyone.
-     */
-    get: operations["users/list-public-keys-for-user"];
-  };
-  "/users/{username}/orgs": {
-    /**
-     * List organizations for a user
-     * @description List [public organization memberships](https://docs.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user.
-     *
-     * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List organizations for the authenticated user](https://docs.github.com/rest/orgs/orgs#list-organizations-for-the-authenticated-user) API instead.
-     */
-    get: operations["orgs/list-for-user"];
-  };
-  "/users/{username}/packages": {
-    /**
-     * List packages for a user
-     * @description Lists all packages in a user's namespace for which the requesting user has access.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    get: operations["packages/list-packages-for-user"];
-  };
-  "/users/{username}/packages/{package_type}/{package_name}": {
-    /**
-     * Get a package for a user
-     * @description Gets a specific package metadata for a public package owned by a user.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    get: operations["packages/get-package-for-user"];
-    /**
-     * Delete a package for a user
-     * @description Deletes an entire package for a user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` and `delete:packages` scopes. In addition:
-     * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package you want to delete. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-     */
-    delete: operations["packages/delete-package-for-user"];
-  };
-  "/users/{username}/packages/{package_type}/{package_name}/restore": {
-    /**
-     * Restore a package for a user
-     * @description Restores an entire package for a user.
-     *
-     * You can restore a deleted package under the following conditions:
-     *   - The package was deleted within the last 30 days.
-     *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` and `write:packages` scopes. In addition:
-     * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package you want to restore. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-     */
-    post: operations["packages/restore-package-for-user"];
-  };
-  "/users/{username}/packages/{package_type}/{package_name}/versions": {
-    /**
-     * List package versions for a package owned by a user
-     * @description Lists package versions for a public package owned by a specified user.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    get: operations["packages/get-all-package-versions-for-package-owned-by-user"];
-  };
-  "/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}": {
-    /**
-     * Get a package version for a user
-     * @description Gets a specific package version for a public package owned by a specified user.
-     *
-     * At this time, to use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     */
-    get: operations["packages/get-package-version-for-user"];
-    /**
-     * Delete package version for a user
-     * @description Deletes a specific package version for a user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` and `delete:packages` scopes. In addition:
-     * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package whose version you want to delete. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-     */
-    delete: operations["packages/delete-package-version-for-user"];
-  };
-  "/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": {
-    /**
-     * Restore package version for a user
-     * @description Restores a specific package version for a user.
-     *
-     * You can restore a deleted package under the following conditions:
-     *   - The package was deleted within the last 30 days.
-     *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-     *
-     * To use this endpoint, you must authenticate using an access token with the `read:packages` and `write:packages` scopes. In addition:
-     * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-     * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package whose version you want to restore. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-     */
-    post: operations["packages/restore-package-version-for-user"];
-  };
-  "/users/{username}/projects": {
-    /**
-     * List user projects
-     * @description Lists projects for a user.
-     */
-    get: operations["projects/list-for-user"];
-  };
-  "/users/{username}/received_events": {
-    /**
-     * List events received by the authenticated user
-     * @description These are events that you've received by watching repos and following users. If you are authenticated as the given user, you will see private events. Otherwise, you'll only see public events.
-     */
-    get: operations["activity/list-received-events-for-user"];
-  };
-  "/users/{username}/received_events/public": {
-    /** List public events received by a user */
-    get: operations["activity/list-received-public-events-for-user"];
-  };
-  "/users/{username}/repos": {
-    /**
-     * List repositories for a user
-     * @description Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.
-     */
-    get: operations["repos/list-for-user"];
-  };
-  "/users/{username}/settings/billing/actions": {
-    /**
-     * Get GitHub Actions billing for a user
-     * @description Gets the summary of the free and paid GitHub Actions minutes used.
-     *
-     * 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](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
-     *
-     * Access tokens must have the `user` scope.
-     */
-    get: operations["billing/get-github-actions-billing-user"];
-  };
-  "/users/{username}/settings/billing/packages": {
-    /**
-     * Get GitHub Packages billing for a user
-     * @description Gets the free and paid storage used for GitHub Packages in gigabytes.
-     *
-     * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)."
-     *
-     * Access tokens must have the `user` scope.
-     */
-    get: operations["billing/get-github-packages-billing-user"];
-  };
-  "/users/{username}/settings/billing/shared-storage": {
-    /**
-     * Get shared storage billing for a user
-     * @description Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages.
-     *
-     * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)."
-     *
-     * Access tokens must have the `user` scope.
-     */
-    get: operations["billing/get-shared-storage-billing-user"];
-  };
-  "/users/{username}/social_accounts": {
-    /**
-     * List social accounts for a user
-     * @description Lists social media accounts for a user. This endpoint is accessible by anyone.
-     */
-    get: operations["users/list-social-accounts-for-user"];
-  };
-  "/users/{username}/ssh_signing_keys": {
-    /**
-     * List SSH signing keys for a user
-     * @description Lists the SSH signing keys for a user. This operation is accessible by anyone.
-     */
-    get: operations["users/list-ssh-signing-keys-for-user"];
-  };
-  "/users/{username}/starred": {
-    /**
-     * List repositories starred by a user
-     * @description Lists repositories a user has starred.
-     *
-     * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: `application/vnd.github.star+json`.
-     */
-    get: operations["activity/list-repos-starred-by-user"];
-  };
-  "/users/{username}/subscriptions": {
-    /**
-     * List repositories watched by a user
-     * @description Lists repositories a user is watching.
-     */
-    get: operations["activity/list-repos-watched-by-user"];
-  };
-  "/versions": {
-    /**
-     * Get all API versions
-     * @description Get all supported GitHub API versions.
-     */
-    get: operations["meta/get-all-versions"];
-  };
-  "/zen": {
-    /**
-     * Get the Zen of GitHub
-     * @description Get a random sentence from the Zen of GitHub
-     */
-    get: operations["meta/get-zen"];
-  };
-  "/repos/{owner}/{repo}/compare/{base}...{head}": {
-    /**
-     * Compare two commits
-     * @description **Deprecated**: Use `repos.compareCommitsWithBasehead()` (`GET /repos/{owner}/{repo}/compare/{basehead}`) instead. Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `<USERNAME>:branch`.
-     *
-     * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
-     *
-     * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file.
-     *
-     * **Working with large comparisons**
-     *
-     * To process a response with a large number of commits, you can use (`per_page` or `page`) to paginate the results. When using paging, the list of changed files is only returned with page 1, but includes all changed files for the entire comparison. For more information on working with pagination, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)."
-     *
-     * When calling this API without any paging parameters (`per_page` or `page`), the returned list is limited to 250 commits and the last commit in the list is the most recent of the entire comparison. When a paging parameter is specified, the first commit in the returned list of each page is the earliest.
-     *
-     * **Signature verification object**
-     *
-     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-     *
-     * | Name | Type | Description |
-     * | ---- | ---- | ----------- |
-     * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-     * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-     * | `signature` | `string` | The signature that was extracted from the commit. |
-     * | `payload` | `string` | The value that was signed. |
-     *
-     * These are the possible values for `reason` in the `verification` object:
-     *
-     * | Value | Description |
-     * | ----- | ----------- |
-     * | `expired_key` | The key that made the signature is expired. |
-     * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-     * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-     * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-     * | `unsigned` | The object does not include a signature. |
-     * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-     * | `no_user` | No user was associated with the `committer` email address in the commit. |
-     * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
-     * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-     * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-     * | `malformed_signature` | There was an error parsing the signature. |
-     * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-     * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-     */
-    get: operations["repos/compare-commits"];
-  };
-}
-
-export type webhooks = Record<string, never>;
-
-export interface components {
-  schemas: {
-    root: {
-      /** Format: uri-template */
-      current_user_url: string;
-      /** Format: uri-template */
-      current_user_authorizations_html_url: string;
-      /** Format: uri-template */
-      authorizations_url: string;
-      /** Format: uri-template */
-      code_search_url: string;
-      /** Format: uri-template */
-      commit_search_url: string;
-      /** Format: uri-template */
-      emails_url: string;
-      /** Format: uri-template */
-      emojis_url: string;
-      /** Format: uri-template */
-      events_url: string;
-      /** Format: uri-template */
-      feeds_url: string;
-      /** Format: uri-template */
-      followers_url: string;
-      /** Format: uri-template */
-      following_url: string;
-      /** Format: uri-template */
-      gists_url: string;
-      /** Format: uri-template */
-      hub_url: string;
-      /** Format: uri-template */
-      issue_search_url: string;
-      /** Format: uri-template */
-      issues_url: string;
-      /** Format: uri-template */
-      keys_url: string;
-      /** Format: uri-template */
-      label_search_url: string;
-      /** Format: uri-template */
-      notifications_url: string;
-      /** Format: uri-template */
-      organization_url: string;
-      /** Format: uri-template */
-      organization_repositories_url: string;
-      /** Format: uri-template */
-      organization_teams_url: string;
-      /** Format: uri-template */
-      public_gists_url: string;
-      /** Format: uri-template */
-      rate_limit_url: string;
-      /** Format: uri-template */
-      repository_url: string;
-      /** Format: uri-template */
-      repository_search_url: string;
-      /** Format: uri-template */
-      current_user_repositories_url: string;
-      /** Format: uri-template */
-      starred_url: string;
-      /** Format: uri-template */
-      starred_gists_url: string;
-      /** Format: uri-template */
-      topic_search_url?: string;
-      /** Format: uri-template */
-      user_url: string;
-      /** Format: uri-template */
-      user_organizations_url: string;
-      /** Format: uri-template */
-      user_repositories_url: string;
-      /** Format: uri-template */
-      user_search_url: string;
-    };
-    /**
-     * @description The package's language or package management ecosystem.
-     * @enum {string}
-     */
-    "security-advisory-ecosystems":
-      | "rubygems"
-      | "npm"
-      | "pip"
-      | "maven"
-      | "nuget"
-      | "composer"
-      | "go"
-      | "rust"
-      | "erlang"
-      | "actions"
-      | "pub"
-      | "other"
-      | "swift";
-    /**
-     * Simple User
-     * @description A GitHub user.
-     */
-    "simple-user": {
-      name?: string | null;
-      email?: string | null;
-      /** @example octocat */
-      login: string;
-      /** @example 1 */
-      id: number;
-      /** @example MDQ6VXNlcjE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://github.com/images/error/octocat_happy.gif
-       */
-      avatar_url: string;
-      /** @example 41d064eb2195891e12d0413f63227ea7 */
-      gravatar_id: string | null;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/followers
-       */
-      followers_url: string;
-      /** @example https://api.github.com/users/octocat/following{/other_user} */
-      following_url: string;
-      /** @example https://api.github.com/users/octocat/gists{/gist_id} */
-      gists_url: string;
-      /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */
-      starred_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/subscriptions
-       */
-      subscriptions_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/orgs
-       */
-      organizations_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/repos
-       */
-      repos_url: string;
-      /** @example https://api.github.com/users/octocat/events{/privacy} */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/received_events
-       */
-      received_events_url: string;
-      /** @example User */
-      type: string;
-      site_admin: boolean;
-      /** @example "2020-07-09T00:17:55Z" */
-      starred_at?: string;
-    };
-    /**
-     * @description The type of credit the user is receiving.
-     * @enum {string}
-     */
-    "security-advisory-credit-types":
-      | "analyst"
-      | "finder"
-      | "reporter"
-      | "coordinator"
-      | "remediation_developer"
-      | "remediation_reviewer"
-      | "remediation_verifier"
-      | "tool"
-      | "sponsor"
-      | "other";
-    /** @description A GitHub Security Advisory. */
-    "global-advisory": {
-      /** @description The GitHub Security Advisory ID. */
-      ghsa_id: string;
-      /** @description The Common Vulnerabilities and Exposures (CVE) ID. */
-      cve_id: string | null;
-      /** @description The API URL for the advisory. */
-      url: string;
-      /**
-       * Format: uri
-       * @description The URL for the advisory.
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @description The API URL for the repository advisory.
-       */
-      repository_advisory_url: string | null;
-      /** @description A short summary of the advisory. */
-      summary: string;
-      /** @description A detailed description of what the advisory entails. */
-      description: string | null;
-      /**
-       * @description The type of advisory.
-       * @enum {string}
-       */
-      type: "reviewed" | "unreviewed" | "malware";
-      /**
-       * @description The severity of the advisory.
-       * @enum {string}
-       */
-      severity: "critical" | "high" | "medium" | "low" | "unknown";
-      /**
-       * Format: uri
-       * @description The URL of the advisory's source code.
-       */
-      source_code_location: string | null;
-      identifiers:
-        | readonly {
-            /**
-             * @description The type of identifier.
-             * @enum {string}
-             */
-            type: "CVE" | "GHSA";
-            /** @description The identifier value. */
-            value: string;
-          }[]
-        | null;
-      references: string[] | null;
-      /**
-       * Format: date-time
-       * @description The date and time of when the advisory was published, in ISO 8601 format.
-       */
-      published_at: string;
-      /**
-       * Format: date-time
-       * @description The date and time of when the advisory was last updated, in ISO 8601 format.
-       */
-      updated_at: string;
-      /**
-       * Format: date-time
-       * @description The date and time of when the advisory was reviewed by GitHub, in ISO 8601 format.
-       */
-      github_reviewed_at: string | null;
-      /**
-       * Format: date-time
-       * @description The date and time when the advisory was published in the National Vulnerability Database, in ISO 8601 format.
-       * This field is only populated when the advisory is imported from the National Vulnerability Database.
-       */
-      nvd_published_at: string | null;
-      /**
-       * Format: date-time
-       * @description The date and time of when the advisory was withdrawn, in ISO 8601 format.
-       */
-      withdrawn_at: string | null;
-      /** @description The products and respective version ranges affected by the advisory. */
-      vulnerabilities:
-        | {
-            /** @description The name of the package affected by the vulnerability. */
-            package: {
-              ecosystem: components["schemas"]["security-advisory-ecosystems"];
-              /** @description The unique package name within its ecosystem. */
-              name: string | null;
-            } | null;
-            /** @description The range of the package versions affected by the vulnerability. */
-            vulnerable_version_range: string | null;
-            /** @description The package version that resolve the vulnerability. */
-            first_patched_version: string | null;
-            /** @description The functions in the package that are affected by the vulnerability. */
-            vulnerable_functions: readonly string[] | null;
-          }[]
-        | null;
-      cvss: {
-        /** @description The CVSS vector. */
-        vector_string: string | null;
-        /** @description The CVSS score. */
-        score: number | null;
-      } | null;
-      cwes:
-        | {
-            /** @description The Common Weakness Enumeration (CWE) identifier. */
-            cwe_id: string;
-            /** @description The name of the CWE. */
-            name: string;
-          }[]
-        | null;
-      /** @description The users who contributed to the advisory. */
-      credits:
-        | readonly {
-            user: components["schemas"]["simple-user"];
-            type: components["schemas"]["security-advisory-credit-types"];
-          }[]
-        | null;
-    };
-    /**
-     * Basic Error
-     * @description Basic Error
-     */
-    "basic-error": {
-      message?: string;
-      documentation_url?: string;
-      url?: string;
-      status?: string;
-    };
-    /**
-     * Validation Error Simple
-     * @description Validation Error Simple
-     */
-    "validation-error-simple": {
-      message: string;
-      documentation_url: string;
-      errors?: string[];
-    };
-    /**
-     * Simple User
-     * @description A GitHub user.
-     */
-    "nullable-simple-user": {
-      name?: string | null;
-      email?: string | null;
-      /** @example octocat */
-      login: string;
-      /** @example 1 */
-      id: number;
-      /** @example MDQ6VXNlcjE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://github.com/images/error/octocat_happy.gif
-       */
-      avatar_url: string;
-      /** @example 41d064eb2195891e12d0413f63227ea7 */
-      gravatar_id: string | null;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/followers
-       */
-      followers_url: string;
-      /** @example https://api.github.com/users/octocat/following{/other_user} */
-      following_url: string;
-      /** @example https://api.github.com/users/octocat/gists{/gist_id} */
-      gists_url: string;
-      /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */
-      starred_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/subscriptions
-       */
-      subscriptions_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/orgs
-       */
-      organizations_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/repos
-       */
-      repos_url: string;
-      /** @example https://api.github.com/users/octocat/events{/privacy} */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/received_events
-       */
-      received_events_url: string;
-      /** @example User */
-      type: string;
-      site_admin: boolean;
-      /** @example "2020-07-09T00:17:55Z" */
-      starred_at?: string;
-    } | null;
-    /**
-     * GitHub app
-     * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-     */
-    integration: {
-      /**
-       * @description Unique identifier of the GitHub app
-       * @example 37
-       */
-      id: number;
-      /**
-       * @description The slug name of the GitHub app
-       * @example probot-owners
-       */
-      slug?: string;
-      /** @example MDExOkludGVncmF0aW9uMQ== */
-      node_id: string;
-      owner: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description The name of the GitHub app
-       * @example Probot Owners
-       */
-      name: string;
-      /** @example The description of the app. */
-      description: string | null;
-      /**
-       * Format: uri
-       * @example https://example.com
-       */
-      external_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/apps/super-ci
-       */
-      html_url: string;
-      /**
-       * Format: date-time
-       * @example 2017-07-08T16:18:44-04:00
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2017-07-08T16:18:44-04:00
-       */
-      updated_at: string;
-      /**
-       * @description The set of permissions for the GitHub app
-       * @example {
-       *   "issues": "read",
-       *   "deployments": "write"
-       * }
-       */
-      permissions: {
-        issues?: string;
-        checks?: string;
-        metadata?: string;
-        contents?: string;
-        deployments?: string;
-        [key: string]: string | undefined;
-      };
-      /**
-       * @description The list of events for the GitHub app
-       * @example [
-       *   "label",
-       *   "deployment"
-       * ]
-       */
-      events: string[];
-      /**
-       * @description The number of installations associated with the GitHub app
-       * @example 5
-       */
-      installations_count?: number;
-      /** @example "Iv1.25b5d1e65ffc4022" */
-      client_id?: string;
-      /** @example "1d4b2097ac622ba702d19de498f005747a8b21d3" */
-      client_secret?: string;
-      /** @example "6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b" */
-      webhook_secret?: string | null;
-      /** @example "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\n-----END RSA PRIVATE KEY-----\n" */
-      pem?: string;
-    };
-    /**
-     * Format: uri
-     * @description The URL to which the payloads will be delivered.
-     * @example https://example.com/webhook
-     */
-    "webhook-config-url": string;
-    /**
-     * @description The media type used to serialize the payloads. Supported values include `json` and `form`. The default is `form`.
-     * @example "json"
-     */
-    "webhook-config-content-type": string;
-    /**
-     * @description If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value for [delivery signature headers](https://docs.github.com/webhooks/event-payloads/#delivery-headers).
-     * @example "********"
-     */
-    "webhook-config-secret": string;
-    "webhook-config-insecure-ssl": string | number;
-    /**
-     * Webhook Configuration
-     * @description Configuration object of the webhook
-     */
-    "webhook-config": {
-      url?: components["schemas"]["webhook-config-url"];
-      content_type?: components["schemas"]["webhook-config-content-type"];
-      secret?: components["schemas"]["webhook-config-secret"];
-      insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"];
-    };
-    /**
-     * Simple webhook delivery
-     * @description Delivery made by a webhook, without request and response information.
-     */
-    "hook-delivery-item": {
-      /**
-       * @description Unique identifier of the webhook delivery.
-       * @example 42
-       */
-      id: number;
-      /**
-       * @description Unique identifier for the event (shared with all deliveries for all webhooks that subscribe to this event).
-       * @example 58474f00-b361-11eb-836d-0e4f3503ccbe
-       */
-      guid: string;
-      /**
-       * Format: date-time
-       * @description Time when the webhook delivery occurred.
-       * @example 2021-05-12T20:33:44Z
-       */
-      delivered_at: string;
-      /**
-       * @description Whether the webhook delivery is a redelivery.
-       * @example false
-       */
-      redelivery: boolean;
-      /**
-       * @description Time spent delivering.
-       * @example 0.03
-       */
-      duration: number;
-      /**
-       * @description Describes the response returned after attempting the delivery.
-       * @example failed to connect
-       */
-      status: string;
-      /**
-       * @description Status code received when delivery was made.
-       * @example 502
-       */
-      status_code: number;
-      /**
-       * @description The event that triggered the delivery.
-       * @example issues
-       */
-      event: string;
-      /**
-       * @description The type of activity for the event that triggered the delivery.
-       * @example opened
-       */
-      action: string | null;
-      /**
-       * @description The id of the GitHub App installation associated with this event.
-       * @example 123
-       */
-      installation_id: number | null;
-      /**
-       * @description The id of the repository associated with this event.
-       * @example 123
-       */
-      repository_id: number | null;
-    };
-    /**
-     * Scim Error
-     * @description Scim Error
-     */
-    "scim-error": {
-      message?: string | null;
-      documentation_url?: string | null;
-      detail?: string | null;
-      status?: number;
-      scimType?: string | null;
-      schemas?: string[];
-    };
-    /**
-     * Validation Error
-     * @description Validation Error
-     */
-    "validation-error": {
-      message: string;
-      documentation_url: string;
-      errors?: {
-        resource?: string;
-        field?: string;
-        message?: string;
-        code: string;
-        index?: number;
-        value?: (string | null) | (number | null) | (string[] | null);
-      }[];
-    };
-    /**
-     * Webhook delivery
-     * @description Delivery made by a webhook.
-     */
-    "hook-delivery": {
-      /**
-       * @description Unique identifier of the delivery.
-       * @example 42
-       */
-      id: number;
-      /**
-       * @description Unique identifier for the event (shared with all deliveries for all webhooks that subscribe to this event).
-       * @example 58474f00-b361-11eb-836d-0e4f3503ccbe
-       */
-      guid: string;
-      /**
-       * Format: date-time
-       * @description Time when the delivery was delivered.
-       * @example 2021-05-12T20:33:44Z
-       */
-      delivered_at: string;
-      /**
-       * @description Whether the delivery is a redelivery.
-       * @example false
-       */
-      redelivery: boolean;
-      /**
-       * @description Time spent delivering.
-       * @example 0.03
-       */
-      duration: number;
-      /**
-       * @description Description of the status of the attempted delivery
-       * @example failed to connect
-       */
-      status: string;
-      /**
-       * @description Status code received when delivery was made.
-       * @example 502
-       */
-      status_code: number;
-      /**
-       * @description The event that triggered the delivery.
-       * @example issues
-       */
-      event: string;
-      /**
-       * @description The type of activity for the event that triggered the delivery.
-       * @example opened
-       */
-      action: string | null;
-      /**
-       * @description The id of the GitHub App installation associated with this event.
-       * @example 123
-       */
-      installation_id: number | null;
-      /**
-       * @description The id of the repository associated with this event.
-       * @example 123
-       */
-      repository_id: number | null;
-      /**
-       * @description The URL target of the delivery.
-       * @example https://www.example.com
-       */
-      url?: string;
-      request: {
-        /** @description The request headers sent with the webhook delivery. */
-        headers: {
-          [key: string]: unknown;
-        } | null;
-        /** @description The webhook payload. */
-        payload: {
-          [key: string]: unknown;
-        } | null;
-      };
-      response: {
-        /** @description The response headers received when the delivery was made. */
-        headers: {
-          [key: string]: unknown;
-        } | null;
-        /** @description The response payload received. */
-        payload: string | null;
-      };
-    };
-    /**
-     * Enterprise
-     * @description An enterprise on GitHub.
-     */
-    enterprise: {
-      /** @description A short description of the enterprise. */
-      description?: string | null;
-      /**
-       * Format: uri
-       * @example https://github.com/enterprises/octo-business
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @description The enterprise's website URL.
-       */
-      website_url?: string | null;
-      /**
-       * @description Unique identifier of the enterprise
-       * @example 42
-       */
-      id: number;
-      /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */
-      node_id: string;
-      /**
-       * @description The name of the enterprise.
-       * @example Octo Business
-       */
-      name: string;
-      /**
-       * @description The slug url identifier for the enterprise.
-       * @example octo-business
-       */
-      slug: string;
-      /**
-       * Format: date-time
-       * @example 2019-01-26T19:01:12Z
-       */
-      created_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2019-01-26T19:14:43Z
-       */
-      updated_at: string | null;
-      /** Format: uri */
-      avatar_url: string;
-    };
-    /**
-     * Integration Installation Request
-     * @description Request to install an integration on a target
-     */
-    "integration-installation-request": {
-      /**
-       * @description Unique identifier of the request installation.
-       * @example 42
-       */
-      id: number;
-      /** @example MDExOkludGVncmF0aW9uMQ== */
-      node_id?: string;
-      account:
-        | components["schemas"]["simple-user"]
-        | components["schemas"]["enterprise"];
-      requester: components["schemas"]["simple-user"];
-      /**
-       * Format: date-time
-       * @example 2022-07-08T16:18:44-04:00
-       */
-      created_at: string;
-    };
-    /**
-     * App Permissions
-     * @description The permissions granted to the user access token.
-     * @example {
-     *   "contents": "read",
-     *   "issues": "read",
-     *   "deployments": "write",
-     *   "single_file": "read"
-     * }
-     */
-    "app-permissions": {
-      /**
-       * @description The level of permission to grant the access token for GitHub Actions workflows, workflow runs, and artifacts.
-       * @enum {string}
-       */
-      actions?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for repository creation, deletion, settings, teams, and collaborators creation.
-       * @enum {string}
-       */
-      administration?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for checks on code.
-       * @enum {string}
-       */
-      checks?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for repository contents, commits, branches, downloads, releases, and merges.
-       * @enum {string}
-       */
-      contents?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for deployments and deployment statuses.
-       * @enum {string}
-       */
-      deployments?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for managing repository environments.
-       * @enum {string}
-       */
-      environments?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for issues and related comments, assignees, labels, and milestones.
-       * @enum {string}
-       */
-      issues?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to search repositories, list collaborators, and access repository metadata.
-       * @enum {string}
-       */
-      metadata?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for packages published to GitHub Packages.
-       * @enum {string}
-       */
-      packages?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to retrieve Pages statuses, configuration, and builds, as well as create new builds.
-       * @enum {string}
-       */
-      pages?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for pull requests and related comments, assignees, labels, milestones, and merges.
-       * @enum {string}
-       */
-      pull_requests?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to manage the post-receive hooks for a repository.
-       * @enum {string}
-       */
-      repository_hooks?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to manage repository projects, columns, and cards.
-       * @enum {string}
-       */
-      repository_projects?: "read" | "write" | "admin";
-      /**
-       * @description The level of permission to grant the access token to view and manage secret scanning alerts.
-       * @enum {string}
-       */
-      secret_scanning_alerts?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to manage repository secrets.
-       * @enum {string}
-       */
-      secrets?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to view and manage security events like code scanning alerts.
-       * @enum {string}
-       */
-      security_events?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to manage just a single file.
-       * @enum {string}
-       */
-      single_file?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for commit statuses.
-       * @enum {string}
-       */
-      statuses?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to manage Dependabot alerts.
-       * @enum {string}
-       */
-      vulnerability_alerts?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to update GitHub Actions workflow files.
-       * @enum {string}
-       */
-      workflows?: "write";
-      /**
-       * @description The level of permission to grant the access token for organization teams and members.
-       * @enum {string}
-       */
-      members?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to manage access to an organization.
-       * @enum {string}
-       */
-      organization_administration?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for custom repository roles management. This property is in beta and is subject to change.
-       * @enum {string}
-       */
-      organization_custom_roles?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for custom property management.
-       * @enum {string}
-       */
-      organization_custom_properties?: "read" | "write" | "admin";
-      /**
-       * @description The level of permission to grant the access token to view and manage announcement banners for an organization.
-       * @enum {string}
-       */
-      organization_announcement_banners?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to manage the post-receive hooks for an organization.
-       * @enum {string}
-       */
-      organization_hooks?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for viewing and managing fine-grained personal access token requests to an organization.
-       * @enum {string}
-       */
-      organization_personal_access_tokens?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for viewing and managing fine-grained personal access tokens that have been approved by an organization.
-       * @enum {string}
-       */
-      organization_personal_access_token_requests?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token for viewing an organization's plan.
-       * @enum {string}
-       */
-      organization_plan?: "read";
-      /**
-       * @description The level of permission to grant the access token to manage organization projects and projects beta (where available).
-       * @enum {string}
-       */
-      organization_projects?: "read" | "write" | "admin";
-      /**
-       * @description The level of permission to grant the access token for organization packages published to GitHub Packages.
-       * @enum {string}
-       */
-      organization_packages?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to manage organization secrets.
-       * @enum {string}
-       */
-      organization_secrets?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to view and manage GitHub Actions self-hosted runners available to an organization.
-       * @enum {string}
-       */
-      organization_self_hosted_runners?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to view and manage users blocked by the organization.
-       * @enum {string}
-       */
-      organization_user_blocking?: "read" | "write";
-      /**
-       * @description The level of permission to grant the access token to manage team discussions and related comments.
-       * @enum {string}
-       */
-      team_discussions?: "read" | "write";
-    };
-    /**
-     * Installation
-     * @description Installation
-     */
-    installation: {
-      /**
-       * @description The ID of the installation.
-       * @example 1
-       */
-      id: number;
-      account:
-        | (
-            | components["schemas"]["simple-user"]
-            | components["schemas"]["enterprise"]
-          )
-        | null;
-      /**
-       * @description Describe whether all repositories have been selected or there's a selection involved
-       * @enum {string}
-       */
-      repository_selection: "all" | "selected";
-      /**
-       * Format: uri
-       * @example https://api.github.com/app/installations/1/access_tokens
-       */
-      access_tokens_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/installation/repositories
-       */
-      repositories_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/organizations/github/settings/installations/1
-       */
-      html_url: string;
-      /** @example 1 */
-      app_id: number;
-      /** @description The ID of the user or organization this token is being scoped to. */
-      target_id: number;
-      /** @example Organization */
-      target_type: string;
-      permissions: components["schemas"]["app-permissions"];
-      events: string[];
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      /** @example config.yaml */
-      single_file_name: string | null;
-      /** @example true */
-      has_multiple_single_files?: boolean;
-      /**
-       * @example [
-       *   "config.yml",
-       *   ".github/issue_TEMPLATE.md"
-       * ]
-       */
-      single_file_paths?: string[];
-      /** @example github-actions */
-      app_slug: string;
-      suspended_by: components["schemas"]["nullable-simple-user"];
-      /** Format: date-time */
-      suspended_at: string | null;
-      /** @example "test_13f1e99741e3e004@d7e1eb0bc0a1ba12.com" */
-      contact_email?: string | null;
-    };
-    /**
-     * License Simple
-     * @description License Simple
-     */
-    "nullable-license-simple": {
-      /** @example mit */
-      key: string;
-      /** @example MIT License */
-      name: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/licenses/mit
-       */
-      url: string | null;
-      /** @example MIT */
-      spdx_id: string | null;
-      /** @example MDc6TGljZW5zZW1pdA== */
-      node_id: string;
-      /** Format: uri */
-      html_url?: string;
-    } | null;
-    /**
-     * Repository
-     * @description A repository on GitHub.
-     */
-    repository: {
-      /**
-       * @description Unique identifier of the repository
-       * @example 42
-       */
-      id: number;
-      /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */
-      node_id: string;
-      /**
-       * @description The name of the repository.
-       * @example Team Environment
-       */
-      name: string;
-      /** @example octocat/Hello-World */
-      full_name: string;
-      license: components["schemas"]["nullable-license-simple"];
-      organization?: components["schemas"]["nullable-simple-user"];
-      forks: number;
-      permissions?: {
-        admin: boolean;
-        pull: boolean;
-        triage?: boolean;
-        push: boolean;
-        maintain?: boolean;
-      };
-      owner: components["schemas"]["simple-user"];
-      /**
-       * @description Whether the repository is private or public.
-       * @default false
-       */
-      private: boolean;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World
-       */
-      html_url: string;
-      /** @example This your first repo! */
-      description: string | null;
-      fork: boolean;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World
-       */
-      url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */
-      archive_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */
-      assignees_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */
-      blobs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */
-      branches_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */
-      collaborators_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */
-      comments_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */
-      commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */
-      compare_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */
-      contents_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/contributors
-       */
-      contributors_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/deployments
-       */
-      deployments_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/downloads
-       */
-      downloads_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/events
-       */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/forks
-       */
-      forks_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */
-      git_commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */
-      git_refs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */
-      git_tags_url: string;
-      /** @example git:github.com/octocat/Hello-World.git */
-      git_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */
-      issue_comment_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */
-      issue_events_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */
-      issues_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */
-      keys_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */
-      labels_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/languages
-       */
-      languages_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/merges
-       */
-      merges_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */
-      milestones_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */
-      notifications_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */
-      pulls_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */
-      releases_url: string;
-      /** @example git@github.com:octocat/Hello-World.git */
-      ssh_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/stargazers
-       */
-      stargazers_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */
-      statuses_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscribers
-       */
-      subscribers_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscription
-       */
-      subscription_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/tags
-       */
-      tags_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/teams
-       */
-      teams_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */
-      trees_url: string;
-      /** @example https://github.com/octocat/Hello-World.git */
-      clone_url: string;
-      /**
-       * Format: uri
-       * @example git:git.example.com/octocat/Hello-World
-       */
-      mirror_url: string | null;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/hooks
-       */
-      hooks_url: string;
-      /**
-       * Format: uri
-       * @example https://svn.github.com/octocat/Hello-World
-       */
-      svn_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com
-       */
-      homepage: string | null;
-      language: string | null;
-      /** @example 9 */
-      forks_count: number;
-      /** @example 80 */
-      stargazers_count: number;
-      /** @example 80 */
-      watchers_count: number;
-      /**
-       * @description The size of the repository. Size is calculated hourly. When a repository is initially created, the size is 0.
-       * @example 108
-       */
-      size: number;
-      /**
-       * @description The default branch of the repository.
-       * @example master
-       */
-      default_branch: string;
-      /** @example 0 */
-      open_issues_count: number;
-      /**
-       * @description Whether this repository acts as a template that can be used to generate new repositories.
-       * @default false
-       * @example true
-       */
-      is_template?: boolean;
-      topics?: string[];
-      /**
-       * @description Whether issues are enabled.
-       * @default true
-       * @example true
-       */
-      has_issues: boolean;
-      /**
-       * @description Whether projects are enabled.
-       * @default true
-       * @example true
-       */
-      has_projects: boolean;
-      /**
-       * @description Whether the wiki is enabled.
-       * @default true
-       * @example true
-       */
-      has_wiki: boolean;
-      has_pages: boolean;
-      /**
-       * @deprecated
-       * @description Whether downloads are enabled.
-       * @default true
-       * @example true
-       */
-      has_downloads: boolean;
-      /**
-       * @description Whether discussions are enabled.
-       * @default false
-       * @example true
-       */
-      has_discussions?: boolean;
-      /**
-       * @description Whether the repository is archived.
-       * @default false
-       */
-      archived: boolean;
-      /** @description Returns whether or not this repository disabled. */
-      disabled: boolean;
-      /**
-       * @description The repository visibility: public, private, or internal.
-       * @default public
-       */
-      visibility?: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:06:43Z
-       */
-      pushed_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      created_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:14:43Z
-       */
-      updated_at: string | null;
-      /**
-       * @description Whether to allow rebase merges for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_rebase_merge?: boolean;
-      template_repository?: {
-        id?: number;
-        node_id?: string;
-        name?: string;
-        full_name?: string;
-        owner?: {
-          login?: string;
-          id?: number;
-          node_id?: string;
-          avatar_url?: string;
-          gravatar_id?: string;
-          url?: string;
-          html_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          starred_url?: string;
-          subscriptions_url?: string;
-          organizations_url?: string;
-          repos_url?: string;
-          events_url?: string;
-          received_events_url?: string;
-          type?: string;
-          site_admin?: boolean;
-        };
-        private?: boolean;
-        html_url?: string;
-        description?: string;
-        fork?: boolean;
-        url?: string;
-        archive_url?: string;
-        assignees_url?: string;
-        blobs_url?: string;
-        branches_url?: string;
-        collaborators_url?: string;
-        comments_url?: string;
-        commits_url?: string;
-        compare_url?: string;
-        contents_url?: string;
-        contributors_url?: string;
-        deployments_url?: string;
-        downloads_url?: string;
-        events_url?: string;
-        forks_url?: string;
-        git_commits_url?: string;
-        git_refs_url?: string;
-        git_tags_url?: string;
-        git_url?: string;
-        issue_comment_url?: string;
-        issue_events_url?: string;
-        issues_url?: string;
-        keys_url?: string;
-        labels_url?: string;
-        languages_url?: string;
-        merges_url?: string;
-        milestones_url?: string;
-        notifications_url?: string;
-        pulls_url?: string;
-        releases_url?: string;
-        ssh_url?: string;
-        stargazers_url?: string;
-        statuses_url?: string;
-        subscribers_url?: string;
-        subscription_url?: string;
-        tags_url?: string;
-        teams_url?: string;
-        trees_url?: string;
-        clone_url?: string;
-        mirror_url?: string;
-        hooks_url?: string;
-        svn_url?: string;
-        homepage?: string;
-        language?: string;
-        forks_count?: number;
-        stargazers_count?: number;
-        watchers_count?: number;
-        size?: number;
-        default_branch?: string;
-        open_issues_count?: number;
-        is_template?: boolean;
-        topics?: string[];
-        has_issues?: boolean;
-        has_projects?: boolean;
-        has_wiki?: boolean;
-        has_pages?: boolean;
-        has_downloads?: boolean;
-        archived?: boolean;
-        disabled?: boolean;
-        visibility?: string;
-        pushed_at?: string;
-        created_at?: string;
-        updated_at?: string;
-        permissions?: {
-          admin?: boolean;
-          maintain?: boolean;
-          push?: boolean;
-          triage?: boolean;
-          pull?: boolean;
-        };
-        allow_rebase_merge?: boolean;
-        temp_clone_token?: string;
-        allow_squash_merge?: boolean;
-        allow_auto_merge?: boolean;
-        delete_branch_on_merge?: boolean;
-        allow_update_branch?: boolean;
-        use_squash_pr_title_as_default?: boolean;
-        /**
-         * @description The default value for a squash merge commit title:
-         *
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-         * @enum {string}
-         */
-        squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-        /**
-         * @description The default value for a squash merge commit message:
-         *
-         * - `PR_BODY` - default to the pull request's body.
-         * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-        /**
-         * @description The default value for a merge commit title.
-         *
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-         * @enum {string}
-         */
-        merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-        /**
-         * @description The default value for a merge commit message.
-         *
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `PR_BODY` - default to the pull request's body.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-        allow_merge_commit?: boolean;
-        subscribers_count?: number;
-        network_count?: number;
-      } | null;
-      temp_clone_token?: string;
-      /**
-       * @description Whether to allow squash merges for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_squash_merge?: boolean;
-      /**
-       * @description Whether to allow Auto-merge to be used on pull requests.
-       * @default false
-       * @example false
-       */
-      allow_auto_merge?: boolean;
-      /**
-       * @description Whether to delete head branches when pull requests are merged
-       * @default false
-       * @example false
-       */
-      delete_branch_on_merge?: boolean;
-      /**
-       * @description Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging.
-       * @default false
-       * @example false
-       */
-      allow_update_branch?: boolean;
-      /**
-       * @deprecated
-       * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-       * @default false
-       */
-      use_squash_pr_title_as_default?: boolean;
-      /**
-       * @description The default value for a squash merge commit title:
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-       * @enum {string}
-       */
-      squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-      /**
-       * @description The default value for a squash merge commit message:
-       *
-       * - `PR_BODY` - default to the pull request's body.
-       * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-       * - `BLANK` - default to a blank commit message.
-       * @enum {string}
-       */
-      squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-      /**
-       * @description The default value for a merge commit title.
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-       * @enum {string}
-       */
-      merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-      /**
-       * @description The default value for a merge commit message.
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `PR_BODY` - default to the pull request's body.
-       * - `BLANK` - default to a blank commit message.
-       * @enum {string}
-       */
-      merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-      /**
-       * @description Whether to allow merge commits for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_merge_commit?: boolean;
-      /** @description Whether to allow forking this repo */
-      allow_forking?: boolean;
-      /**
-       * @description Whether to require contributors to sign off on web-based commits
-       * @default false
-       */
-      web_commit_signoff_required?: boolean;
-      subscribers_count?: number;
-      network_count?: number;
-      open_issues: number;
-      watchers: number;
-      master_branch?: string;
-      /** @example "2020-07-09T00:17:42Z" */
-      starred_at?: string;
-      /** @description Whether anonymous git access is enabled for this repository */
-      anonymous_access_enabled?: boolean;
-    };
-    /**
-     * Installation Token
-     * @description Authentication token for a GitHub App installed on a user or org.
-     */
-    "installation-token": {
-      token: string;
-      expires_at: string;
-      permissions?: components["schemas"]["app-permissions"];
-      /** @enum {string} */
-      repository_selection?: "all" | "selected";
-      repositories?: components["schemas"]["repository"][];
-      /** @example README.md */
-      single_file?: string;
-      /** @example true */
-      has_multiple_single_files?: boolean;
-      /**
-       * @example [
-       *   "config.yml",
-       *   ".github/issue_TEMPLATE.md"
-       * ]
-       */
-      single_file_paths?: string[];
-    };
-    /** Scoped Installation */
-    "nullable-scoped-installation": {
-      permissions: components["schemas"]["app-permissions"];
-      /**
-       * @description Describe whether all repositories have been selected or there's a selection involved
-       * @enum {string}
-       */
-      repository_selection: "all" | "selected";
-      /** @example config.yaml */
-      single_file_name: string | null;
-      /** @example true */
-      has_multiple_single_files?: boolean;
-      /**
-       * @example [
-       *   "config.yml",
-       *   ".github/issue_TEMPLATE.md"
-       * ]
-       */
-      single_file_paths?: string[];
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/repos
-       */
-      repositories_url: string;
-      account: components["schemas"]["simple-user"];
-    } | null;
-    /**
-     * Authorization
-     * @description The authorization for an OAuth app, GitHub App, or a Personal Access Token.
-     */
-    authorization: {
-      id: number;
-      /** Format: uri */
-      url: string;
-      /** @description A list of scopes that this authorization is in. */
-      scopes: string[] | null;
-      token: string;
-      token_last_eight: string | null;
-      hashed_token: string | null;
-      app: {
-        client_id: string;
-        name: string;
-        /** Format: uri */
-        url: string;
-      };
-      note: string | null;
-      /** Format: uri */
-      note_url: string | null;
-      /** Format: date-time */
-      updated_at: string;
-      /** Format: date-time */
-      created_at: string;
-      fingerprint: string | null;
-      user?: components["schemas"]["nullable-simple-user"];
-      installation?: components["schemas"]["nullable-scoped-installation"];
-      /** Format: date-time */
-      expires_at: string | null;
-    };
-    /**
-     * Simple Classroom Repository
-     * @description A GitHub repository view for Classroom
-     */
-    "simple-classroom-repository": {
-      /**
-       * @description A unique identifier of the repository.
-       * @example 1296269
-       */
-      id: number;
-      /**
-       * @description The full, globally unique name of the repository.
-       * @example octocat/Hello-World
-       */
-      full_name: string;
-      /**
-       * Format: uri
-       * @description The URL to view the repository on GitHub.com.
-       * @example https://github.com/octocat/Hello-World
-       */
-      html_url: string;
-      /**
-       * @description The GraphQL identifier of the repository.
-       * @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5
-       */
-      node_id: string;
-      /** @description Whether the repository is private. */
-      private: boolean;
-      /**
-       * @description The default branch for the repository.
-       * @example main
-       */
-      default_branch: string;
-    };
-    /**
-     * Organization Simple for Classroom
-     * @description A GitHub organization.
-     */
-    "simple-classroom-organization": {
-      /** @example 1 */
-      id: number;
-      /** @example github */
-      login: string;
-      /** @example MDEyOk9yZ2FuaXphdGlvbjE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://github.com/github
-       */
-      html_url: string;
-      /** @example Github - Code thigns happen here */
-      name: string | null;
-      /** @example https://github.com/images/error/octocat_happy.gif */
-      avatar_url: string;
-    };
-    /**
-     * Classroom
-     * @description A GitHub Classroom classroom
-     */
-    classroom: {
-      /**
-       * @description Unique identifier of the classroom.
-       * @example 42
-       */
-      id: number;
-      /**
-       * @description The name of the classroom.
-       * @example Programming Elixir
-       */
-      name: string;
-      /**
-       * @description Whether classroom is archived.
-       * @example false
-       */
-      archived: boolean;
-      organization: components["schemas"]["simple-classroom-organization"];
-      /**
-       * @description The URL of the classroom on GitHub Classroom.
-       * @example https://classroom.github.com/classrooms/1-programming-elixir
-       */
-      url: string;
-    };
-    /**
-     * Classroom Assignment
-     * @description A GitHub Classroom assignment
-     */
-    "classroom-assignment": {
-      /**
-       * @description Unique identifier of the repository.
-       * @example 42
-       */
-      id: number;
-      /**
-       * @description Whether an accepted assignment creates a public repository.
-       * @example true
-       */
-      public_repo: boolean;
-      /**
-       * @description Assignment title.
-       * @example Intro to Binaries
-       */
-      title: string;
-      /**
-       * @description Whether it's a group assignment or individual assignment.
-       * @example individual
-       * @enum {string}
-       */
-      type: "individual" | "group";
-      /**
-       * @description The link that a student can use to accept the assignment.
-       * @example https://classroom.github.com/a/Lx7jiUgx
-       */
-      invite_link: string;
-      /**
-       * @description Whether the invitation link is enabled. Visiting an enabled invitation link will accept the assignment.
-       * @example true
-       */
-      invitations_enabled: boolean;
-      /**
-       * @description Sluggified name of the assignment.
-       * @example intro-to-binaries
-       */
-      slug: string;
-      /**
-       * @description Whether students are admins on created repository when a student accepts the assignment.
-       * @example true
-       */
-      students_are_repo_admins: boolean;
-      /**
-       * @description Whether feedback pull request will be created when a student accepts the assignment.
-       * @example true
-       */
-      feedback_pull_requests_enabled: boolean;
-      /**
-       * @description The maximum allowable teams for the assignment.
-       * @example 0
-       */
-      max_teams: number | null;
-      /**
-       * @description The maximum allowable members per team.
-       * @example 0
-       */
-      max_members: number | null;
-      /**
-       * @description The selected editor for the assignment.
-       * @example codespaces
-       */
-      editor: string;
-      /**
-       * @description The number of students that have accepted the assignment.
-       * @example 25
-       */
-      accepted: number;
-      /**
-       * @description The number of students that have submitted the assignment.
-       * @example 10
-       */
-      submitted: number;
-      /**
-       * @description The number of students that have passed the assignment.
-       * @example 10
-       */
-      passing: number;
-      /**
-       * @description The programming language used in the assignment.
-       * @example elixir
-       */
-      language: string;
-      /**
-       * Format: date-time
-       * @description The time at which the assignment is due.
-       * @example 2011-01-26T19:06:43Z
-       */
-      deadline: string | null;
-      starter_code_repository: components["schemas"]["simple-classroom-repository"];
-      classroom: components["schemas"]["classroom"];
-    };
-    /**
-     * Simple Classroom User
-     * @description A GitHub user simplified for Classroom.
-     */
-    "simple-classroom-user": {
-      /** @example 1 */
-      id: number;
-      /** @example octocat */
-      login: string;
-      /**
-       * Format: uri
-       * @example https://github.com/images/error/octocat_happy.gif
-       */
-      avatar_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat
-       */
-      html_url: string;
-    };
-    /**
-     * Simple Classroom
-     * @description A GitHub Classroom classroom
-     */
-    "simple-classroom": {
-      /**
-       * @description Unique identifier of the classroom.
-       * @example 42
-       */
-      id: number;
-      /**
-       * @description The name of the classroom.
-       * @example Programming Elixir
-       */
-      name: string;
-      /**
-       * @description Returns whether classroom is archived or not.
-       * @example false
-       */
-      archived: boolean;
-      /**
-       * @description The url of the classroom on GitHub Classroom.
-       * @example https://classroom.github.com/classrooms/1-programming-elixir
-       */
-      url: string;
-    };
-    /**
-     * Simple Classroom Assignment
-     * @description A GitHub Classroom assignment
-     */
-    "simple-classroom-assignment": {
-      /**
-       * @description Unique identifier of the repository.
-       * @example 42
-       */
-      id: number;
-      /**
-       * @description Whether an accepted assignment creates a public repository.
-       * @example true
-       */
-      public_repo: boolean;
-      /**
-       * @description Assignment title.
-       * @example Intro to Binaries
-       */
-      title: string;
-      /**
-       * @description Whether it's a Group Assignment or Individual Assignment.
-       * @example individual
-       * @enum {string}
-       */
-      type: "individual" | "group";
-      /**
-       * @description The link that a student can use to accept the assignment.
-       * @example https://classroom.github.com/a/Lx7jiUgx
-       */
-      invite_link: string;
-      /**
-       * @description Whether the invitation link is enabled. Visiting an enabled invitation link will accept the assignment.
-       * @example true
-       */
-      invitations_enabled: boolean;
-      /**
-       * @description Sluggified name of the assignment.
-       * @example intro-to-binaries
-       */
-      slug: string;
-      /**
-       * @description Whether students are admins on created repository on accepted assignment.
-       * @example true
-       */
-      students_are_repo_admins: boolean;
-      /**
-       * @description Whether feedback pull request will be created on assignment acceptance.
-       * @example true
-       */
-      feedback_pull_requests_enabled: boolean;
-      /**
-       * @description The maximum allowable teams for the assignment.
-       * @example 0
-       */
-      max_teams?: number | null;
-      /**
-       * @description The maximum allowable members per team.
-       * @example 0
-       */
-      max_members?: number | null;
-      /**
-       * @description The selected editor for the assignment.
-       * @example codespaces
-       */
-      editor: string;
-      /**
-       * @description The number of students that have accepted the assignment.
-       * @example 25
-       */
-      accepted: number;
-      /**
-       * @description The number of students that have submitted the assignment.
-       * @example 10
-       */
-      submitted: number;
-      /**
-       * @description The number of students that have passed the assignment.
-       * @example 10
-       */
-      passing: number;
-      /**
-       * @description The programming language used in the assignment.
-       * @example elixir
-       */
-      language: string;
-      /**
-       * Format: date-time
-       * @description The time at which the assignment is due.
-       * @example 2011-01-26T19:06:43Z
-       */
-      deadline: string | null;
-      classroom: components["schemas"]["simple-classroom"];
-    };
-    /**
-     * Classroom Accepted Assignment
-     * @description A GitHub Classroom accepted assignment
-     */
-    "classroom-accepted-assignment": {
-      /**
-       * @description Unique identifier of the repository.
-       * @example 42
-       */
-      id: number;
-      /**
-       * @description Whether an accepted assignment has been submitted.
-       * @example true
-       */
-      submitted: boolean;
-      /**
-       * @description Whether a submission passed.
-       * @example true
-       */
-      passing: boolean;
-      /**
-       * @description Count of student commits.
-       * @example 5
-       */
-      commit_count: number;
-      /**
-       * @description Most recent grade.
-       * @example 10/10
-       */
-      grade: string;
-      students: components["schemas"]["simple-classroom-user"][];
-      repository: components["schemas"]["simple-classroom-repository"];
-      assignment: components["schemas"]["simple-classroom-assignment"];
-    };
-    /**
-     * Classroom Assignment Grade
-     * @description Grade for a student or groups GitHub Classroom assignment
-     */
-    "classroom-assignment-grade": {
-      /** @description Name of the assignment */
-      assignment_name: string;
-      /** @description URL of the assignment */
-      assignment_url: string;
-      /** @description URL of the starter code for the assignment */
-      starter_code_url: string;
-      /** @description GitHub username of the student */
-      github_username: string;
-      /** @description Roster identifier of the student */
-      roster_identifier: string;
-      /** @description Name of the student's assignment repository */
-      student_repository_name: string;
-      /** @description URL of the student's assignment repository */
-      student_repository_url: string;
-      /** @description Timestamp of the student's assignment submission */
-      submission_timestamp: string;
-      /** @description Number of points awarded to the student */
-      points_awarded: number;
-      /** @description Number of points available for the assignment */
-      points_available: number;
-      /** @description If a group assignment, name of the group the student is in */
-      group_name?: string;
-    };
-    /**
-     * Code Of Conduct
-     * @description Code Of Conduct
-     */
-    "code-of-conduct": {
-      /** @example contributor_covenant */
-      key: string;
-      /** @example Contributor Covenant */
-      name: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/codes_of_conduct/contributor_covenant
-       */
-      url: string;
-      /**
-       * @example # Contributor Covenant Code of Conduct
-       *
-       * ## Our Pledge
-       *
-       * In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-       *
-       * ## Our Standards
-       *
-       * Examples of behavior that contributes to creating a positive environment include:
-       *
-       * * Using welcoming and inclusive language
-       * * Being respectful of differing viewpoints and experiences
-       * * Gracefully accepting constructive criticism
-       * * Focusing on what is best for the community
-       * * Showing empathy towards other community members
-       *
-       * Examples of unacceptable behavior by participants include:
-       *
-       * * The use of sexualized language or imagery and unwelcome sexual attention or advances
-       * * Trolling, insulting/derogatory comments, and personal or political attacks
-       * * Public or private harassment
-       * * Publishing others' private information, such as a physical or electronic address, without explicit permission
-       * * Other conduct which could reasonably be considered inappropriate in a professional setting
-       *
-       * ## Our Responsibilities
-       *
-       * Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response
-       *                   to any instances of unacceptable behavior.
-       *
-       * Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-       *
-       * ## Scope
-       *
-       * This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address,
-       *                   posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
-       *
-       * ## Enforcement
-       *
-       * Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [EMAIL]. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-       *
-       * Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
-       *
-       * ## Attribution
-       *
-       * This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
-       *
-       * [homepage]: http://contributor-covenant.org
-       * [version]: http://contributor-covenant.org/version/1/4/
-       */
-      body?: string;
-      /** Format: uri */
-      html_url: string | null;
-    };
-    /** @description The security alert number. */
-    readonly "alert-number": number;
-    /** @description Details for the vulnerable package. */
-    readonly "dependabot-alert-package": {
-      /** @description The package's language or package management ecosystem. */
-      readonly ecosystem: string;
-      /** @description The unique package name within its ecosystem. */
-      readonly name: string;
-    };
-    /** @description Details pertaining to one vulnerable version range for the advisory. */
-    readonly "dependabot-alert-security-vulnerability": {
-      readonly package: components["schemas"]["dependabot-alert-package"];
-      /**
-       * @description The severity of the vulnerability.
-       * @enum {string}
-       */
-      readonly severity: "low" | "medium" | "high" | "critical";
-      /** @description Conditions that identify vulnerable versions of this vulnerability's package. */
-      readonly vulnerable_version_range: string;
-      /** @description Details pertaining to the package version that patches this vulnerability. */
-      readonly first_patched_version: {
-        /** @description The package version that patches this vulnerability. */
-        readonly identifier: string;
-      } | null;
-    };
-    /** @description Details for the GitHub Security Advisory. */
-    readonly "dependabot-alert-security-advisory": {
-      /** @description The unique GitHub Security Advisory ID assigned to the advisory. */
-      readonly ghsa_id: string;
-      /** @description The unique CVE ID assigned to the advisory. */
-      readonly cve_id: string | null;
-      /** @description A short, plain text summary of the advisory. */
-      readonly summary: string;
-      /** @description A long-form Markdown-supported description of the advisory. */
-      readonly description: string;
-      /** @description Vulnerable version range information for the advisory. */
-      readonly vulnerabilities: readonly components["schemas"]["dependabot-alert-security-vulnerability"][];
-      /**
-       * @description The severity of the advisory.
-       * @enum {string}
-       */
-      readonly severity: "low" | "medium" | "high" | "critical";
-      /** @description Details for the advisory pertaining to the Common Vulnerability Scoring System. */
-      readonly cvss: {
-        /** @description The overall CVSS score of the advisory. */
-        readonly score: number;
-        /** @description The full CVSS vector string for the advisory. */
-        readonly vector_string: string | null;
-      };
-      /** @description Details for the advisory pertaining to Common Weakness Enumeration. */
-      readonly cwes: readonly {
-        /** @description The unique CWE ID. */
-        readonly cwe_id: string;
-        /** @description The short, plain text name of the CWE. */
-        readonly name: string;
-      }[];
-      /** @description Values that identify this advisory among security information sources. */
-      readonly identifiers: readonly {
-        /**
-         * @description The type of advisory identifier.
-         * @enum {string}
-         */
-        readonly type: "CVE" | "GHSA";
-        /** @description The value of the advisory identifer. */
-        readonly value: string;
-      }[];
-      /** @description Links to additional advisory information. */
-      readonly references: readonly {
-        /**
-         * Format: uri
-         * @description The URL of the reference.
-         */
-        readonly url: string;
-      }[];
-      /**
-       * Format: date-time
-       * @description The time that the advisory was published in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-       */
-      readonly published_at: string;
-      /**
-       * Format: date-time
-       * @description The time that the advisory was last modified in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-       */
-      readonly updated_at: string;
-      /**
-       * Format: date-time
-       * @description The time that the advisory was withdrawn in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-       */
-      readonly withdrawn_at: string | null;
-    };
-    /**
-     * Format: uri
-     * @description The REST API URL of the alert resource.
-     */
-    readonly "alert-url": string;
-    /**
-     * Format: uri
-     * @description The GitHub URL of the alert resource.
-     */
-    readonly "alert-html-url": string;
-    /**
-     * Format: date-time
-     * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-     */
-    readonly "alert-created-at": string;
-    /**
-     * Format: date-time
-     * @description The time that the alert was last updated in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-     */
-    readonly "alert-updated-at": string;
-    /**
-     * Format: date-time
-     * @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-     */
-    readonly "alert-dismissed-at": string | null;
-    /**
-     * Format: date-time
-     * @description The time that the alert was no longer detected and was considered fixed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-     */
-    readonly "alert-fixed-at": string | null;
-    /**
-     * Format: date-time
-     * @description The time that the alert was auto-dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-     */
-    readonly "alert-auto-dismissed-at": string | null;
-    /**
-     * Simple Repository
-     * @description A GitHub repository.
-     */
-    "simple-repository": {
-      /**
-       * @description A unique identifier of the repository.
-       * @example 1296269
-       */
-      id: number;
-      /**
-       * @description The GraphQL identifier of the repository.
-       * @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5
-       */
-      node_id: string;
-      /**
-       * @description The name of the repository.
-       * @example Hello-World
-       */
-      name: string;
-      /**
-       * @description The full, globally unique, name of the repository.
-       * @example octocat/Hello-World
-       */
-      full_name: string;
-      owner: components["schemas"]["simple-user"];
-      /** @description Whether the repository is private. */
-      private: boolean;
-      /**
-       * Format: uri
-       * @description The URL to view the repository on GitHub.com.
-       * @example https://github.com/octocat/Hello-World
-       */
-      html_url: string;
-      /**
-       * @description The repository description.
-       * @example This your first repo!
-       */
-      description: string | null;
-      /** @description Whether the repository is a fork. */
-      fork: boolean;
-      /**
-       * Format: uri
-       * @description The URL to get more information about the repository from the GitHub API.
-       * @example https://api.github.com/repos/octocat/Hello-World
-       */
-      url: string;
-      /**
-       * @description A template for the API URL to download the repository as an archive.
-       * @example https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}
-       */
-      archive_url: string;
-      /**
-       * @description A template for the API URL to list the available assignees for issues in the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/assignees{/user}
-       */
-      assignees_url: string;
-      /**
-       * @description A template for the API URL to create or retrieve a raw Git blob in the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}
-       */
-      blobs_url: string;
-      /**
-       * @description A template for the API URL to get information about branches in the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/branches{/branch}
-       */
-      branches_url: string;
-      /**
-       * @description A template for the API URL to get information about collaborators of the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}
-       */
-      collaborators_url: string;
-      /**
-       * @description A template for the API URL to get information about comments on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/comments{/number}
-       */
-      comments_url: string;
-      /**
-       * @description A template for the API URL to get information about commits on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/commits{/sha}
-       */
-      commits_url: string;
-      /**
-       * @description A template for the API URL to compare two commits or refs.
-       * @example https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}
-       */
-      compare_url: string;
-      /**
-       * @description A template for the API URL to get the contents of the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/contents/{+path}
-       */
-      contents_url: string;
-      /**
-       * Format: uri
-       * @description A template for the API URL to list the contributors to the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/contributors
-       */
-      contributors_url: string;
-      /**
-       * Format: uri
-       * @description The API URL to list the deployments of the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/deployments
-       */
-      deployments_url: string;
-      /**
-       * Format: uri
-       * @description The API URL to list the downloads on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/downloads
-       */
-      downloads_url: string;
-      /**
-       * Format: uri
-       * @description The API URL to list the events of the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/events
-       */
-      events_url: string;
-      /**
-       * Format: uri
-       * @description The API URL to list the forks of the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/forks
-       */
-      forks_url: string;
-      /**
-       * @description A template for the API URL to get information about Git commits of the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}
-       */
-      git_commits_url: string;
-      /**
-       * @description A template for the API URL to get information about Git refs of the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}
-       */
-      git_refs_url: string;
-      /**
-       * @description A template for the API URL to get information about Git tags of the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}
-       */
-      git_tags_url: string;
-      /**
-       * @description A template for the API URL to get information about issue comments on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}
-       */
-      issue_comment_url: string;
-      /**
-       * @description A template for the API URL to get information about issue events on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/issues/events{/number}
-       */
-      issue_events_url: string;
-      /**
-       * @description A template for the API URL to get information about issues on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/issues{/number}
-       */
-      issues_url: string;
-      /**
-       * @description A template for the API URL to get information about deploy keys on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/keys{/key_id}
-       */
-      keys_url: string;
-      /**
-       * @description A template for the API URL to get information about labels of the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/labels{/name}
-       */
-      labels_url: string;
-      /**
-       * Format: uri
-       * @description The API URL to get information about the languages of the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/languages
-       */
-      languages_url: string;
-      /**
-       * Format: uri
-       * @description The API URL to merge branches in the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/merges
-       */
-      merges_url: string;
-      /**
-       * @description A template for the API URL to get information about milestones of the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/milestones{/number}
-       */
-      milestones_url: string;
-      /**
-       * @description A template for the API URL to get information about notifications on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}
-       */
-      notifications_url: string;
-      /**
-       * @description A template for the API URL to get information about pull requests on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls{/number}
-       */
-      pulls_url: string;
-      /**
-       * @description A template for the API URL to get information about releases on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/releases{/id}
-       */
-      releases_url: string;
-      /**
-       * Format: uri
-       * @description The API URL to list the stargazers on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/stargazers
-       */
-      stargazers_url: string;
-      /**
-       * @description A template for the API URL to get information about statuses of a commit.
-       * @example https://api.github.com/repos/octocat/Hello-World/statuses/{sha}
-       */
-      statuses_url: string;
-      /**
-       * Format: uri
-       * @description The API URL to list the subscribers on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/subscribers
-       */
-      subscribers_url: string;
-      /**
-       * Format: uri
-       * @description The API URL to subscribe to notifications for this repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/subscription
-       */
-      subscription_url: string;
-      /**
-       * Format: uri
-       * @description The API URL to get information about tags on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/tags
-       */
-      tags_url: string;
-      /**
-       * Format: uri
-       * @description The API URL to list the teams on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/teams
-       */
-      teams_url: string;
-      /**
-       * @description A template for the API URL to create or retrieve a raw Git tree of the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}
-       */
-      trees_url: string;
-      /**
-       * Format: uri
-       * @description The API URL to list the hooks on the repository.
-       * @example https://api.github.com/repos/octocat/Hello-World/hooks
-       */
-      hooks_url: string;
-    };
-    /** @description A Dependabot alert. */
-    "dependabot-alert-with-repository": {
-      number: components["schemas"]["alert-number"];
-      /**
-       * @description The state of the Dependabot alert.
-       * @enum {string}
-       */
-      state: "auto_dismissed" | "dismissed" | "fixed" | "open";
-      /** @description Details for the vulnerable dependency. */
-      dependency: {
-        readonly package?: components["schemas"]["dependabot-alert-package"];
-        /** @description The full path to the dependency manifest file, relative to the root of the repository. */
-        readonly manifest_path?: string;
-        /**
-         * @description The execution scope of the vulnerable dependency.
-         * @enum {string|null}
-         */
-        readonly scope?: "development" | "runtime" | null;
-      };
-      security_advisory: components["schemas"]["dependabot-alert-security-advisory"];
-      security_vulnerability: components["schemas"]["dependabot-alert-security-vulnerability"];
-      url: components["schemas"]["alert-url"];
-      html_url: components["schemas"]["alert-html-url"];
-      created_at: components["schemas"]["alert-created-at"];
-      updated_at: components["schemas"]["alert-updated-at"];
-      dismissed_at: components["schemas"]["alert-dismissed-at"];
-      dismissed_by: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description The reason that the alert was dismissed.
-       * @enum {string|null}
-       */
-      dismissed_reason:
-        | "fix_started"
-        | "inaccurate"
-        | "no_bandwidth"
-        | "not_used"
-        | "tolerable_risk"
-        | null;
-      /** @description An optional comment associated with the alert's dismissal. */
-      dismissed_comment: string | null;
-      fixed_at: components["schemas"]["alert-fixed-at"];
-      auto_dismissed_at?: components["schemas"]["alert-auto-dismissed-at"];
-      repository: components["schemas"]["simple-repository"];
-    };
-    /**
-     * Format: date-time
-     * @description The time that the alert was last updated in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-     */
-    readonly "nullable-alert-updated-at": string | null;
-    /**
-     * @description Sets the state of the secret scanning alert. You must provide `resolution` when you set the state to `resolved`.
-     * @enum {string}
-     */
-    "secret-scanning-alert-state": "open" | "resolved";
-    /**
-     * @description **Required when the `state` is `resolved`.** The reason for resolving the alert.
-     * @enum {string|null}
-     */
-    "secret-scanning-alert-resolution":
-      | "false_positive"
-      | "wont_fix"
-      | "revoked"
-      | "used_in_tests"
-      | null;
-    "organization-secret-scanning-alert": {
-      number?: components["schemas"]["alert-number"];
-      created_at?: components["schemas"]["alert-created-at"];
-      updated_at?: components["schemas"]["nullable-alert-updated-at"];
-      url?: components["schemas"]["alert-url"];
-      html_url?: components["schemas"]["alert-html-url"];
-      /**
-       * Format: uri
-       * @description The REST API URL of the code locations for this alert.
-       */
-      locations_url?: string;
-      state?: components["schemas"]["secret-scanning-alert-state"];
-      resolution?: components["schemas"]["secret-scanning-alert-resolution"];
-      /**
-       * Format: date-time
-       * @description The time that the alert was resolved in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-       */
-      resolved_at?: string | null;
-      resolved_by?: components["schemas"]["nullable-simple-user"];
-      /** @description The type of secret that secret scanning detected. */
-      secret_type?: string;
-      /**
-       * @description User-friendly name for the detected secret, matching the `secret_type`.
-       * For a list of built-in patterns, see "[Secret scanning patterns](https://docs.github.com/code-security/secret-scanning/secret-scanning-patterns#supported-secrets-for-advanced-security)."
-       */
-      secret_type_display_name?: string;
-      /** @description The secret that was detected. */
-      secret?: string;
-      repository?: components["schemas"]["simple-repository"];
-      /** @description Whether push protection was bypassed for the detected secret. */
-      push_protection_bypassed?: boolean | null;
-      push_protection_bypassed_by?: components["schemas"]["nullable-simple-user"];
-      /**
-       * Format: date-time
-       * @description The time that push protection was bypassed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-       */
-      push_protection_bypassed_at?: string | null;
-      /** @description The comment that was optionally added when this alert was closed */
-      resolution_comment?: string | null;
-      /**
-       * @description The token status as of the latest validity check.
-       * @enum {string}
-       */
-      validity?: "active" | "inactive" | "unknown";
-    };
-    /**
-     * Actor
-     * @description Actor
-     */
-    actor: {
-      id: number;
-      login: string;
-      display_login?: string;
-      gravatar_id: string | null;
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      avatar_url: string;
-    };
-    /**
-     * Milestone
-     * @description A collection of related issues and pull requests.
-     */
-    "nullable-milestone": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/milestones/1
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/milestones/v1.0
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/milestones/1/labels
-       */
-      labels_url: string;
-      /** @example 1002604 */
-      id: number;
-      /** @example MDk6TWlsZXN0b25lMTAwMjYwNA== */
-      node_id: string;
-      /**
-       * @description The number of the milestone.
-       * @example 42
-       */
-      number: number;
-      /**
-       * @description The state of the milestone.
-       * @default open
-       * @example open
-       * @enum {string}
-       */
-      state: "open" | "closed";
-      /**
-       * @description The title of the milestone.
-       * @example v1.0
-       */
-      title: string;
-      /** @example Tracking milestone for version 1.0 */
-      description: string | null;
-      creator: components["schemas"]["nullable-simple-user"];
-      /** @example 4 */
-      open_issues: number;
-      /** @example 8 */
-      closed_issues: number;
-      /**
-       * Format: date-time
-       * @example 2011-04-10T20:09:31Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2014-03-03T18:58:10Z
-       */
-      updated_at: string;
-      /**
-       * Format: date-time
-       * @example 2013-02-12T13:22:01Z
-       */
-      closed_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2012-10-09T23:39:01Z
-       */
-      due_on: string | null;
-    } | null;
-    /**
-     * GitHub app
-     * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-     */
-    "nullable-integration": {
-      /**
-       * @description Unique identifier of the GitHub app
-       * @example 37
-       */
-      id: number;
-      /**
-       * @description The slug name of the GitHub app
-       * @example probot-owners
-       */
-      slug?: string;
-      /** @example MDExOkludGVncmF0aW9uMQ== */
-      node_id: string;
-      owner: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description The name of the GitHub app
-       * @example Probot Owners
-       */
-      name: string;
-      /** @example The description of the app. */
-      description: string | null;
-      /**
-       * Format: uri
-       * @example https://example.com
-       */
-      external_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/apps/super-ci
-       */
-      html_url: string;
-      /**
-       * Format: date-time
-       * @example 2017-07-08T16:18:44-04:00
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2017-07-08T16:18:44-04:00
-       */
-      updated_at: string;
-      /**
-       * @description The set of permissions for the GitHub app
-       * @example {
-       *   "issues": "read",
-       *   "deployments": "write"
-       * }
-       */
-      permissions: {
-        issues?: string;
-        checks?: string;
-        metadata?: string;
-        contents?: string;
-        deployments?: string;
-        [key: string]: string | undefined;
-      };
-      /**
-       * @description The list of events for the GitHub app
-       * @example [
-       *   "label",
-       *   "deployment"
-       * ]
-       */
-      events: string[];
-      /**
-       * @description The number of installations associated with the GitHub app
-       * @example 5
-       */
-      installations_count?: number;
-      /** @example "Iv1.25b5d1e65ffc4022" */
-      client_id?: string;
-      /** @example "1d4b2097ac622ba702d19de498f005747a8b21d3" */
-      client_secret?: string;
-      /** @example "6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b" */
-      webhook_secret?: string | null;
-      /** @example "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\n-----END RSA PRIVATE KEY-----\n" */
-      pem?: string;
-    } | null;
-    /**
-     * author_association
-     * @description How the author is associated with the repository.
-     * @example OWNER
-     * @enum {string}
-     */
-    "author-association":
-      | "COLLABORATOR"
-      | "CONTRIBUTOR"
-      | "FIRST_TIMER"
-      | "FIRST_TIME_CONTRIBUTOR"
-      | "MANNEQUIN"
-      | "MEMBER"
-      | "NONE"
-      | "OWNER";
-    /** Reaction Rollup */
-    "reaction-rollup": {
-      /** Format: uri */
-      url: string;
-      total_count: number;
-      "+1": number;
-      "-1": number;
-      laugh: number;
-      confused: number;
-      heart: number;
-      hooray: number;
-      eyes: number;
-      rocket: number;
-    };
-    /**
-     * Issue
-     * @description Issues are a great way to keep track of tasks, enhancements, and bugs for your projects.
-     */
-    issue: {
-      /** Format: int64 */
-      id: number;
-      node_id: string;
-      /**
-       * Format: uri
-       * @description URL for the issue
-       * @example https://api.github.com/repositories/42/issues/1
-       */
-      url: string;
-      /** Format: uri */
-      repository_url: string;
-      labels_url: string;
-      /** Format: uri */
-      comments_url: string;
-      /** Format: uri */
-      events_url: string;
-      /** Format: uri */
-      html_url: string;
-      /**
-       * @description Number uniquely identifying the issue within its repository
-       * @example 42
-       */
-      number: number;
-      /**
-       * @description State of the issue; either 'open' or 'closed'
-       * @example open
-       */
-      state: string;
-      /**
-       * @description The reason for the current state
-       * @example not_planned
-       * @enum {string|null}
-       */
-      state_reason?: "completed" | "reopened" | "not_planned" | null;
-      /**
-       * @description Title of the issue
-       * @example Widget creation fails in Safari on OS X 10.8
-       */
-      title: string;
-      /**
-       * @description Contents of the issue
-       * @example It looks like the new widget form is broken on Safari. When I try and create the widget, Safari crashes. This is reproducible on 10.8, but not 10.9. Maybe a browser bug?
-       */
-      body?: string | null;
-      user: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description Labels to associate with this issue; pass one or more label names to replace the set of labels on this issue; send an empty array to clear all labels from the issue; note that the labels are silently dropped for users without push access to the repository
-       * @example [
-       *   "bug",
-       *   "registration"
-       * ]
-       */
-      labels: OneOf<
-        [
-          string,
-          {
-            /** Format: int64 */
-            id?: number;
-            node_id?: string;
-            /** Format: uri */
-            url?: string;
-            name?: string;
-            description?: string | null;
-            color?: string | null;
-            default?: boolean;
-          },
-        ]
-      >[];
-      assignee: components["schemas"]["nullable-simple-user"];
-      assignees?: components["schemas"]["simple-user"][] | null;
-      milestone: components["schemas"]["nullable-milestone"];
-      locked: boolean;
-      active_lock_reason?: string | null;
-      comments: number;
-      pull_request?: {
-        /** Format: date-time */
-        merged_at?: string | null;
-        /** Format: uri */
-        diff_url: string | null;
-        /** Format: uri */
-        html_url: string | null;
-        /** Format: uri */
-        patch_url: string | null;
-        /** Format: uri */
-        url: string | null;
-      };
-      /** Format: date-time */
-      closed_at: string | null;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      draft?: boolean;
-      closed_by?: components["schemas"]["nullable-simple-user"];
-      body_html?: string;
-      body_text?: string;
-      /** Format: uri */
-      timeline_url?: string;
-      repository?: components["schemas"]["repository"];
-      performed_via_github_app?: components["schemas"]["nullable-integration"];
-      author_association: components["schemas"]["author-association"];
-      reactions?: components["schemas"]["reaction-rollup"];
-    };
-    /**
-     * Issue Comment
-     * @description Comments provide a way for people to collaborate on an issue.
-     */
-    "issue-comment": {
-      /**
-       * Format: int64
-       * @description Unique identifier of the issue comment
-       * @example 42
-       */
-      id: number;
-      node_id: string;
-      /**
-       * Format: uri
-       * @description URL for the issue comment
-       * @example https://api.github.com/repositories/42/issues/comments/1
-       */
-      url: string;
-      /**
-       * @description Contents of the issue comment
-       * @example What version of Safari were you using when you observed this bug?
-       */
-      body?: string;
-      body_text?: string;
-      body_html?: string;
-      /** Format: uri */
-      html_url: string;
-      user: components["schemas"]["nullable-simple-user"];
-      /**
-       * Format: date-time
-       * @example 2011-04-14T16:00:49Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-04-14T16:00:49Z
-       */
-      updated_at: string;
-      /** Format: uri */
-      issue_url: string;
-      author_association: components["schemas"]["author-association"];
-      performed_via_github_app?: components["schemas"]["nullable-integration"];
-      reactions?: components["schemas"]["reaction-rollup"];
-    };
-    /**
-     * Event
-     * @description Event
-     */
-    event: {
-      id: string;
-      type: string | null;
-      actor: components["schemas"]["actor"];
-      repo: {
-        id: number;
-        name: string;
-        /** Format: uri */
-        url: string;
-      };
-      org?: components["schemas"]["actor"];
-      payload: {
-        action?: string;
-        issue?: components["schemas"]["issue"];
-        comment?: components["schemas"]["issue-comment"];
-        pages?: {
-          page_name?: string;
-          title?: string;
-          summary?: string | null;
-          action?: string;
-          sha?: string;
-          html_url?: string;
-        }[];
-      };
-      public: boolean;
-      /** Format: date-time */
-      created_at: string | null;
-    };
-    /**
-     * Link With Type
-     * @description Hypermedia Link with Type
-     */
-    "link-with-type": {
-      href: string;
-      type: string;
-    };
-    /**
-     * Feed
-     * @description Feed
-     */
-    feed: {
-      /** @example https://github.com/timeline */
-      timeline_url: string;
-      /** @example https://github.com/{user} */
-      user_url: string;
-      /** @example https://github.com/octocat */
-      current_user_public_url?: string;
-      /** @example https://github.com/octocat.private?token=abc123 */
-      current_user_url?: string;
-      /** @example https://github.com/octocat.private.actor?token=abc123 */
-      current_user_actor_url?: string;
-      /** @example https://github.com/octocat-org */
-      current_user_organization_url?: string;
-      /**
-       * @example [
-       *   "https://github.com/organizations/github/octocat.private.atom?token=abc123"
-       * ]
-       */
-      current_user_organization_urls?: string[];
-      /** @example https://github.com/security-advisories */
-      security_advisories_url?: string;
-      /**
-       * @description A feed of discussions for a given repository.
-       * @example https://github.com/{user}/{repo}/discussions
-       */
-      repository_discussions_url?: string;
-      /**
-       * @description A feed of discussions for a given repository and category.
-       * @example https://github.com/{user}/{repo}/discussions/categories/{category}
-       */
-      repository_discussions_category_url?: string;
-      _links: {
-        timeline: components["schemas"]["link-with-type"];
-        user: components["schemas"]["link-with-type"];
-        security_advisories?: components["schemas"]["link-with-type"];
-        current_user?: components["schemas"]["link-with-type"];
-        current_user_public?: components["schemas"]["link-with-type"];
-        current_user_actor?: components["schemas"]["link-with-type"];
-        current_user_organization?: components["schemas"]["link-with-type"];
-        current_user_organizations?: components["schemas"]["link-with-type"][];
-        repository_discussions?: components["schemas"]["link-with-type"];
-        repository_discussions_category?: components["schemas"]["link-with-type"];
-      };
-    };
-    /**
-     * Base Gist
-     * @description Base Gist
-     */
-    "base-gist": {
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      forks_url: string;
-      /** Format: uri */
-      commits_url: string;
-      id: string;
-      node_id: string;
-      /** Format: uri */
-      git_pull_url: string;
-      /** Format: uri */
-      git_push_url: string;
-      /** Format: uri */
-      html_url: string;
-      files: {
-        [key: string]: {
-          filename?: string;
-          type?: string;
-          language?: string;
-          raw_url?: string;
-          size?: number;
-        };
-      };
-      public: boolean;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      description: string | null;
-      comments: number;
-      user: components["schemas"]["nullable-simple-user"];
-      /** Format: uri */
-      comments_url: string;
-      owner?: components["schemas"]["simple-user"];
-      truncated?: boolean;
-      forks?: unknown[];
-      history?: unknown[];
-    };
-    /**
-     * Public User
-     * @description Public User
-     */
-    "public-user": {
-      login: string;
-      id: number;
-      node_id: string;
-      /** Format: uri */
-      avatar_url: string;
-      gravatar_id: string | null;
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      html_url: string;
-      /** Format: uri */
-      followers_url: string;
-      following_url: string;
-      gists_url: string;
-      starred_url: string;
-      /** Format: uri */
-      subscriptions_url: string;
-      /** Format: uri */
-      organizations_url: string;
-      /** Format: uri */
-      repos_url: string;
-      events_url: string;
-      /** Format: uri */
-      received_events_url: string;
-      type: string;
-      site_admin: boolean;
-      name: string | null;
-      company: string | null;
-      blog: string | null;
-      location: string | null;
-      /** Format: email */
-      email: string | null;
-      hireable: boolean | null;
-      bio: string | null;
-      twitter_username?: string | null;
-      public_repos: number;
-      public_gists: number;
-      followers: number;
-      following: number;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      plan?: {
-        collaborators: number;
-        name: string;
-        space: number;
-        private_repos: number;
-      };
-      /** Format: date-time */
-      suspended_at?: string | null;
-      /** @example 1 */
-      private_gists?: number;
-      /** @example 2 */
-      total_private_repos?: number;
-      /** @example 2 */
-      owned_private_repos?: number;
-      /** @example 1 */
-      disk_usage?: number;
-      /** @example 3 */
-      collaborators?: number;
-    };
-    /**
-     * Gist History
-     * @description Gist History
-     */
-    "gist-history": {
-      user?: components["schemas"]["nullable-simple-user"];
-      version?: string;
-      /** Format: date-time */
-      committed_at?: string;
-      change_status?: {
-        total?: number;
-        additions?: number;
-        deletions?: number;
-      };
-      /** Format: uri */
-      url?: string;
-    };
-    /**
-     * Gist Simple
-     * @description Gist Simple
-     */
-    "gist-simple": {
-      /** @deprecated */
-      forks?:
-        | {
-            id?: string;
-            /** Format: uri */
-            url?: string;
-            user?: components["schemas"]["public-user"];
-            /** Format: date-time */
-            created_at?: string;
-            /** Format: date-time */
-            updated_at?: string;
-          }[]
-        | null;
-      /** @deprecated */
-      history?: components["schemas"]["gist-history"][] | null;
-      /**
-       * Gist
-       * @description Gist
-       */
-      fork_of?: {
-        /** Format: uri */
-        url: string;
-        /** Format: uri */
-        forks_url: string;
-        /** Format: uri */
-        commits_url: string;
-        id: string;
-        node_id: string;
-        /** Format: uri */
-        git_pull_url: string;
-        /** Format: uri */
-        git_push_url: string;
-        /** Format: uri */
-        html_url: string;
-        files: {
-          [key: string]: {
-            filename?: string;
-            type?: string;
-            language?: string;
-            raw_url?: string;
-            size?: number;
-          };
-        };
-        public: boolean;
-        /** Format: date-time */
-        created_at: string;
-        /** Format: date-time */
-        updated_at: string;
-        description: string | null;
-        comments: number;
-        user: components["schemas"]["nullable-simple-user"];
-        /** Format: uri */
-        comments_url: string;
-        owner?: components["schemas"]["nullable-simple-user"];
-        truncated?: boolean;
-        forks?: unknown[];
-        history?: unknown[];
-      } | null;
-      url?: string;
-      forks_url?: string;
-      commits_url?: string;
-      id?: string;
-      node_id?: string;
-      git_pull_url?: string;
-      git_push_url?: string;
-      html_url?: string;
-      files?: {
-        [key: string]: {
-          filename?: string;
-          type?: string;
-          language?: string;
-          raw_url?: string;
-          size?: number;
-          truncated?: boolean;
-          content?: string;
-        } | null;
-      };
-      public?: boolean;
-      created_at?: string;
-      updated_at?: string;
-      description?: string | null;
-      comments?: number;
-      user?: string | null;
-      comments_url?: string;
-      owner?: components["schemas"]["simple-user"];
-      truncated?: boolean;
-    };
-    /**
-     * Gist Comment
-     * @description A comment made to a gist.
-     */
-    "gist-comment": {
-      /** @example 1 */
-      id: number;
-      /** @example MDExOkdpc3RDb21tZW50MQ== */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/gists/a6db0bec360bb87e9418/comments/1
-       */
-      url: string;
-      /**
-       * @description The comment text.
-       * @example Body of the attachment
-       */
-      body: string;
-      user: components["schemas"]["nullable-simple-user"];
-      /**
-       * Format: date-time
-       * @example 2011-04-18T23:23:56Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-04-18T23:23:56Z
-       */
-      updated_at: string;
-      author_association: components["schemas"]["author-association"];
-    };
-    /**
-     * Gist Commit
-     * @description Gist Commit
-     */
-    "gist-commit": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/gists/aa5a315d61ae9438b18d/57a7f021a713b1c5a6a199b54cc514735d2d462f
-       */
-      url: string;
-      /** @example 57a7f021a713b1c5a6a199b54cc514735d2d462f */
-      version: string;
-      user: components["schemas"]["nullable-simple-user"];
-      change_status: {
-        total?: number;
-        additions?: number;
-        deletions?: number;
-      };
-      /**
-       * Format: date-time
-       * @example 2010-04-14T02:15:15Z
-       */
-      committed_at: string;
-    };
-    /**
-     * Gitignore Template
-     * @description Gitignore Template
-     */
-    "gitignore-template": {
-      /** @example C */
-      name: string;
-      /**
-       * @example # Object files
-       * *.o
-       *
-       * # Libraries
-       * *.lib
-       * *.a
-       *
-       * # Shared objects (inc. Windows DLLs)
-       * *.dll
-       * *.so
-       * *.so.*
-       * *.dylib
-       *
-       * # Executables
-       * *.exe
-       * *.out
-       * *.app
-       */
-      source: string;
-    };
-    /**
-     * License Simple
-     * @description License Simple
-     */
-    "license-simple": {
-      /** @example mit */
-      key: string;
-      /** @example MIT License */
-      name: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/licenses/mit
-       */
-      url: string | null;
-      /** @example MIT */
-      spdx_id: string | null;
-      /** @example MDc6TGljZW5zZW1pdA== */
-      node_id: string;
-      /** Format: uri */
-      html_url?: string;
-    };
-    /**
-     * License
-     * @description License
-     */
-    license: {
-      /** @example mit */
-      key: string;
-      /** @example MIT License */
-      name: string;
-      /** @example MIT */
-      spdx_id: string | null;
-      /**
-       * Format: uri
-       * @example https://api.github.com/licenses/mit
-       */
-      url: string | null;
-      /** @example MDc6TGljZW5zZW1pdA== */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example http://choosealicense.com/licenses/mit/
-       */
-      html_url: string;
-      /** @example A permissive license that is short and to the point. It lets people do anything with your code with proper attribution and without warranty. */
-      description: string;
-      /** @example Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. */
-      implementation: string;
-      /**
-       * @example [
-       *   "commercial-use",
-       *   "modifications",
-       *   "distribution",
-       *   "sublicense",
-       *   "private-use"
-       * ]
-       */
-      permissions: string[];
-      /**
-       * @example [
-       *   "include-copyright"
-       * ]
-       */
-      conditions: string[];
-      /**
-       * @example [
-       *   "no-liability"
-       * ]
-       */
-      limitations: string[];
-      /**
-       * @example
-       *
-       * The MIT License (MIT)
-       *
-       * Copyright (c) [year] [fullname]
-       *
-       * Permission is hereby granted, free of charge, to any person obtaining a copy
-       * of this software and associated documentation files (the "Software"), to deal
-       * in the Software without restriction, including without limitation the rights
-       * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-       * copies of the Software, and to permit persons to whom the Software is
-       * furnished to do so, subject to the following conditions:
-       *
-       * The above copyright notice and this permission notice shall be included in all
-       * copies or substantial portions of the Software.
-       *
-       * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-       * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-       * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-       * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-       * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-       * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-       * SOFTWARE.
-       */
-      body: string;
-      /** @example true */
-      featured: boolean;
-    };
-    /**
-     * Marketplace Listing Plan
-     * @description Marketplace Listing Plan
-     */
-    "marketplace-listing-plan": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/marketplace_listing/plans/1313
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/marketplace_listing/plans/1313/accounts
-       */
-      accounts_url: string;
-      /** @example 1313 */
-      id: number;
-      /** @example 3 */
-      number: number;
-      /** @example Pro */
-      name: string;
-      /** @example A professional-grade CI solution */
-      description: string;
-      /** @example 1099 */
-      monthly_price_in_cents: number;
-      /** @example 11870 */
-      yearly_price_in_cents: number;
-      /**
-       * @example FLAT_RATE
-       * @enum {string}
-       */
-      price_model: "FREE" | "FLAT_RATE" | "PER_UNIT";
-      /** @example true */
-      has_free_trial: boolean;
-      unit_name: string | null;
-      /** @example published */
-      state: string;
-      /**
-       * @example [
-       *   "Up to 25 private repositories",
-       *   "11 concurrent builds"
-       * ]
-       */
-      bullets: string[];
-    };
-    /**
-     * Marketplace Purchase
-     * @description Marketplace Purchase
-     */
-    "marketplace-purchase": {
-      url: string;
-      type: string;
-      id: number;
-      login: string;
-      organization_billing_email?: string;
-      email?: string | null;
-      marketplace_pending_change?: {
-        is_installed?: boolean;
-        effective_date?: string;
-        unit_count?: number | null;
-        id?: number;
-        plan?: components["schemas"]["marketplace-listing-plan"];
-      } | null;
-      marketplace_purchase: {
-        billing_cycle?: string;
-        next_billing_date?: string | null;
-        is_installed?: boolean;
-        unit_count?: number | null;
-        on_free_trial?: boolean;
-        free_trial_ends_on?: string | null;
-        updated_at?: string;
-        plan?: components["schemas"]["marketplace-listing-plan"];
-      };
-    };
-    /**
-     * Api Overview
-     * @description Api Overview
-     */
-    "api-overview": {
-      /** @example true */
-      verifiable_password_authentication: boolean;
-      ssh_key_fingerprints?: {
-        SHA256_RSA?: string;
-        SHA256_DSA?: string;
-        SHA256_ECDSA?: string;
-        SHA256_ED25519?: string;
-      };
-      /**
-       * @example [
-       *   "ssh-ed25519 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-       * ]
-       */
-      ssh_keys?: string[];
-      /**
-       * @example [
-       *   "192.0.2.1"
-       * ]
-       */
-      hooks?: string[];
-      /**
-       * @example [
-       *   "192.0.2.1"
-       * ]
-       */
-      github_enterprise_importer?: string[];
-      /**
-       * @example [
-       *   "192.0.2.1"
-       * ]
-       */
-      web?: string[];
-      /**
-       * @example [
-       *   "192.0.2.1"
-       * ]
-       */
-      api?: string[];
-      /**
-       * @example [
-       *   "192.0.2.1"
-       * ]
-       */
-      git?: string[];
-      /**
-       * @example [
-       *   "192.0.2.1"
-       * ]
-       */
-      packages?: string[];
-      /**
-       * @example [
-       *   "192.0.2.1"
-       * ]
-       */
-      pages?: string[];
-      /**
-       * @example [
-       *   "192.0.2.1"
-       * ]
-       */
-      importer?: string[];
-      /**
-       * @example [
-       *   "192.0.2.1"
-       * ]
-       */
-      actions?: string[];
-      /**
-       * @example [
-       *   "192.0.2.1"
-       * ]
-       */
-      dependabot?: string[];
-      domains?: {
-        website?: string[];
-        codespaces?: string[];
-        copilot?: string[];
-        packages?: string[];
-      };
-    };
-    "security-and-analysis": {
-      advanced_security?: {
-        /** @enum {string} */
-        status?: "enabled" | "disabled";
-      };
-      /** @description Enable or disable Dependabot security updates for the repository. */
-      dependabot_security_updates?: {
-        /**
-         * @description The enablement status of Dependabot security updates for the repository.
-         * @enum {string}
-         */
-        status?: "enabled" | "disabled";
-      };
-      secret_scanning?: {
-        /** @enum {string} */
-        status?: "enabled" | "disabled";
-      };
-      secret_scanning_push_protection?: {
-        /** @enum {string} */
-        status?: "enabled" | "disabled";
-      };
-    } | null;
-    /**
-     * Minimal Repository
-     * @description Minimal Repository
-     */
-    "minimal-repository": {
-      /** @example 1296269 */
-      id: number;
-      /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */
-      node_id: string;
-      /** @example Hello-World */
-      name: string;
-      /** @example octocat/Hello-World */
-      full_name: string;
-      owner: components["schemas"]["simple-user"];
-      private: boolean;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World
-       */
-      html_url: string;
-      /** @example This your first repo! */
-      description: string | null;
-      fork: boolean;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World
-       */
-      url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */
-      archive_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */
-      assignees_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */
-      blobs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */
-      branches_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */
-      collaborators_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */
-      comments_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */
-      commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */
-      compare_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */
-      contents_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/contributors
-       */
-      contributors_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/deployments
-       */
-      deployments_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/downloads
-       */
-      downloads_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/events
-       */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/forks
-       */
-      forks_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */
-      git_commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */
-      git_refs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */
-      git_tags_url: string;
-      git_url?: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */
-      issue_comment_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */
-      issue_events_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */
-      issues_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */
-      keys_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */
-      labels_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/languages
-       */
-      languages_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/merges
-       */
-      merges_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */
-      milestones_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */
-      notifications_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */
-      pulls_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */
-      releases_url: string;
-      ssh_url?: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/stargazers
-       */
-      stargazers_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */
-      statuses_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscribers
-       */
-      subscribers_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscription
-       */
-      subscription_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/tags
-       */
-      tags_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/teams
-       */
-      teams_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */
-      trees_url: string;
-      clone_url?: string;
-      mirror_url?: string | null;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/hooks
-       */
-      hooks_url: string;
-      svn_url?: string;
-      homepage?: string | null;
-      language?: string | null;
-      forks_count?: number;
-      stargazers_count?: number;
-      watchers_count?: number;
-      /** @description The size of the repository. Size is calculated hourly. When a repository is initially created, the size is 0. */
-      size?: number;
-      default_branch?: string;
-      open_issues_count?: number;
-      is_template?: boolean;
-      topics?: string[];
-      has_issues?: boolean;
-      has_projects?: boolean;
-      has_wiki?: boolean;
-      has_pages?: boolean;
-      has_downloads?: boolean;
-      has_discussions?: boolean;
-      archived?: boolean;
-      disabled?: boolean;
-      visibility?: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:06:43Z
-       */
-      pushed_at?: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      created_at?: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:14:43Z
-       */
-      updated_at?: string | null;
-      permissions?: {
-        admin?: boolean;
-        maintain?: boolean;
-        push?: boolean;
-        triage?: boolean;
-        pull?: boolean;
-      };
-      /** @example admin */
-      role_name?: string;
-      temp_clone_token?: string;
-      delete_branch_on_merge?: boolean;
-      subscribers_count?: number;
-      network_count?: number;
-      code_of_conduct?: components["schemas"]["code-of-conduct"];
-      license?: {
-        key?: string;
-        name?: string;
-        spdx_id?: string;
-        url?: string;
-        node_id?: string;
-      } | null;
-      /** @example 0 */
-      forks?: number;
-      /** @example 0 */
-      open_issues?: number;
-      /** @example 0 */
-      watchers?: number;
-      allow_forking?: boolean;
-      /** @example false */
-      web_commit_signoff_required?: boolean;
-      security_and_analysis?: components["schemas"]["security-and-analysis"];
-    };
-    /**
-     * Thread
-     * @description Thread
-     */
-    thread: {
-      id: string;
-      repository: components["schemas"]["minimal-repository"];
-      subject: {
-        title: string;
-        url: string;
-        latest_comment_url: string;
-        type: string;
-      };
-      reason: string;
-      unread: boolean;
-      updated_at: string;
-      last_read_at: string | null;
-      url: string;
-      /** @example https://api.github.com/notifications/threads/2/subscription */
-      subscription_url: string;
-    };
-    /**
-     * Thread Subscription
-     * @description Thread Subscription
-     */
-    "thread-subscription": {
-      /** @example true */
-      subscribed: boolean;
-      ignored: boolean;
-      reason: string | null;
-      /**
-       * Format: date-time
-       * @example 2012-10-06T21:34:12Z
-       */
-      created_at: string | null;
-      /**
-       * Format: uri
-       * @example https://api.github.com/notifications/threads/1/subscription
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/notifications/threads/1
-       */
-      thread_url?: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/1
-       */
-      repository_url?: string;
-    };
-    /**
-     * Organization Simple
-     * @description A GitHub organization.
-     */
-    "organization-simple": {
-      /** @example github */
-      login: string;
-      /** @example 1 */
-      id: number;
-      /** @example MDEyOk9yZ2FuaXphdGlvbjE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/github
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/github/repos
-       */
-      repos_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/github/events
-       */
-      events_url: string;
-      /** @example https://api.github.com/orgs/github/hooks */
-      hooks_url: string;
-      /** @example https://api.github.com/orgs/github/issues */
-      issues_url: string;
-      /** @example https://api.github.com/orgs/github/members{/member} */
-      members_url: string;
-      /** @example https://api.github.com/orgs/github/public_members{/member} */
-      public_members_url: string;
-      /** @example https://github.com/images/error/octocat_happy.gif */
-      avatar_url: string;
-      /** @example A great organization */
-      description: string | null;
-    };
-    /**
-     * Organization Full
-     * @description Organization Full
-     */
-    "organization-full": {
-      /** @example github */
-      login: string;
-      /** @example 1 */
-      id: number;
-      /** @example MDEyOk9yZ2FuaXphdGlvbjE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/github
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/github/repos
-       */
-      repos_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/github/events
-       */
-      events_url: string;
-      /** @example https://api.github.com/orgs/github/hooks */
-      hooks_url: string;
-      /** @example https://api.github.com/orgs/github/issues */
-      issues_url: string;
-      /** @example https://api.github.com/orgs/github/members{/member} */
-      members_url: string;
-      /** @example https://api.github.com/orgs/github/public_members{/member} */
-      public_members_url: string;
-      /** @example https://github.com/images/error/octocat_happy.gif */
-      avatar_url: string;
-      /** @example A great organization */
-      description: string | null;
-      /** @example github */
-      name?: string;
-      /** @example GitHub */
-      company?: string;
-      /**
-       * Format: uri
-       * @example https://github.com/blog
-       */
-      blog?: string;
-      /** @example San Francisco */
-      location?: string;
-      /**
-       * Format: email
-       * @example octocat@github.com
-       */
-      email?: string;
-      /** @example github */
-      twitter_username?: string | null;
-      /** @example true */
-      is_verified?: boolean;
-      /** @example true */
-      has_organization_projects: boolean;
-      /** @example true */
-      has_repository_projects: boolean;
-      /** @example 2 */
-      public_repos: number;
-      /** @example 1 */
-      public_gists: number;
-      /** @example 20 */
-      followers: number;
-      /** @example 0 */
-      following: number;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat
-       */
-      html_url: string;
-      /** @example Organization */
-      type: string;
-      /** @example 100 */
-      total_private_repos?: number;
-      /** @example 100 */
-      owned_private_repos?: number;
-      /** @example 81 */
-      private_gists?: number | null;
-      /** @example 10000 */
-      disk_usage?: number | null;
-      /** @example 8 */
-      collaborators?: number | null;
-      /**
-       * Format: email
-       * @example org@example.com
-       */
-      billing_email?: string | null;
-      plan?: {
-        name: string;
-        space: number;
-        private_repos: number;
-        filled_seats?: number;
-        seats?: number;
-      };
-      default_repository_permission?: string | null;
-      /** @example true */
-      members_can_create_repositories?: boolean | null;
-      /** @example true */
-      two_factor_requirement_enabled?: boolean | null;
-      /** @example all */
-      members_allowed_repository_creation_type?: string;
-      /** @example true */
-      members_can_create_public_repositories?: boolean;
-      /** @example true */
-      members_can_create_private_repositories?: boolean;
-      /** @example true */
-      members_can_create_internal_repositories?: boolean;
-      /** @example true */
-      members_can_create_pages?: boolean;
-      /** @example true */
-      members_can_create_public_pages?: boolean;
-      /** @example true */
-      members_can_create_private_pages?: boolean;
-      /** @example false */
-      members_can_fork_private_repositories?: boolean | null;
-      /** @example false */
-      web_commit_signoff_required?: boolean;
-      /**
-       * @description Whether GitHub Advanced Security is enabled for new repositories and repositories transferred to this organization.
-       *
-       * This field is only visible to organization owners or members of a team with the security manager role.
-       * @example false
-       */
-      advanced_security_enabled_for_new_repositories?: boolean;
-      /**
-       * @description Whether GitHub Advanced Security is automatically enabled for new repositories and repositories transferred to
-       * this organization.
-       *
-       * This field is only visible to organization owners or members of a team with the security manager role.
-       * @example false
-       */
-      dependabot_alerts_enabled_for_new_repositories?: boolean;
-      /**
-       * @description Whether dependabot security updates are automatically enabled for new repositories and repositories transferred
-       * to this organization.
-       *
-       * This field is only visible to organization owners or members of a team with the security manager role.
-       * @example false
-       */
-      dependabot_security_updates_enabled_for_new_repositories?: boolean;
-      /**
-       * @description Whether dependency graph is automatically enabled for new repositories and repositories transferred to this
-       * organization.
-       *
-       * This field is only visible to organization owners or members of a team with the security manager role.
-       * @example false
-       */
-      dependency_graph_enabled_for_new_repositories?: boolean;
-      /**
-       * @description Whether secret scanning is automatically enabled for new repositories and repositories transferred to this
-       * organization.
-       *
-       * This field is only visible to organization owners or members of a team with the security manager role.
-       * @example false
-       */
-      secret_scanning_enabled_for_new_repositories?: boolean;
-      /**
-       * @description Whether secret scanning push protection is automatically enabled for new repositories and repositories
-       * transferred to this organization.
-       *
-       * This field is only visible to organization owners or members of a team with the security manager role.
-       * @example false
-       */
-      secret_scanning_push_protection_enabled_for_new_repositories?: boolean;
-      /**
-       * @description Whether a custom link is shown to contributors who are blocked from pushing a secret by push protection.
-       * @example false
-       */
-      secret_scanning_push_protection_custom_link_enabled?: boolean;
-      /**
-       * @description An optional URL string to display to contributors who are blocked from pushing a secret.
-       * @example https://github.com/test-org/test-repo/blob/main/README.md
-       */
-      secret_scanning_push_protection_custom_link?: string | null;
-      /**
-       * Format: date-time
-       * @example 2008-01-14T04:33:35Z
-       */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      /** Format: date-time */
-      archived_at: string | null;
-    };
-    "actions-cache-usage-org-enterprise": {
-      /** @description The count of active caches across all repositories of an enterprise or an organization. */
-      total_active_caches_count: number;
-      /** @description The total size in bytes of all active cache items across all repositories of an enterprise or an organization. */
-      total_active_caches_size_in_bytes: number;
-    };
-    /**
-     * Actions Cache Usage by repository
-     * @description GitHub Actions Cache Usage by repository.
-     */
-    "actions-cache-usage-by-repository": {
-      /**
-       * @description The repository owner and name for the cache usage being shown.
-       * @example octo-org/Hello-World
-       */
-      full_name: string;
-      /**
-       * @description The sum of the size in bytes of all the active cache items in the repository.
-       * @example 2322142
-       */
-      active_caches_size_in_bytes: number;
-      /**
-       * @description The number of active caches in the repository.
-       * @example 3
-       */
-      active_caches_count: number;
-    };
-    /**
-     * Actions OIDC Subject customization
-     * @description Actions OIDC Subject customization
-     */
-    "oidc-custom-sub": {
-      /** @description Array of unique strings. Each claim key can only contain alphanumeric characters and underscores. */
-      include_claim_keys: string[];
-    };
-    /**
-     * Empty Object
-     * @description An object without any properties.
-     */
-    "empty-object": Record<string, never>;
-    /**
-     * @description The policy that controls the repositories in the organization that are allowed to run GitHub Actions.
-     * @enum {string}
-     */
-    "enabled-repositories": "all" | "none" | "selected";
-    /**
-     * @description The permissions policy that controls the actions and reusable workflows that are allowed to run.
-     * @enum {string}
-     */
-    "allowed-actions": "all" | "local_only" | "selected";
-    /** @description The API URL to use to get or set the actions and reusable workflows that are allowed to run, when `allowed_actions` is set to `selected`. */
-    "selected-actions-url": string;
-    "actions-organization-permissions": {
-      enabled_repositories: components["schemas"]["enabled-repositories"];
-      /** @description The API URL to use to get or set the selected repositories that are allowed to run GitHub Actions, when `enabled_repositories` is set to `selected`. */
-      selected_repositories_url?: string;
-      allowed_actions?: components["schemas"]["allowed-actions"];
-      selected_actions_url?: components["schemas"]["selected-actions-url"];
-    };
-    "selected-actions": {
-      /** @description Whether GitHub-owned actions are allowed. For example, this includes the actions in the `actions` organization. */
-      github_owned_allowed?: boolean;
-      /** @description Whether actions from GitHub Marketplace verified creators are allowed. Set to `true` to allow all actions by GitHub Marketplace verified creators. */
-      verified_allowed?: boolean;
-      /**
-       * @description Specifies a list of string-matching patterns to allow specific action(s) and reusable workflow(s). Wildcards, tags, and SHAs are allowed. For example, `monalisa/octocat@*`, `monalisa/octocat@v2`, `monalisa/*`.
-       *
-       * **Note**: The `patterns_allowed` setting only applies to public repositories.
-       */
-      patterns_allowed?: string[];
-    };
-    /**
-     * @description The default workflow permissions granted to the GITHUB_TOKEN when running workflows.
-     * @enum {string}
-     */
-    "actions-default-workflow-permissions": "read" | "write";
-    /** @description Whether GitHub Actions can approve pull requests. Enabling this can be a security risk. */
-    "actions-can-approve-pull-request-reviews": boolean;
-    "actions-get-default-workflow-permissions": {
-      default_workflow_permissions: components["schemas"]["actions-default-workflow-permissions"];
-      can_approve_pull_request_reviews: components["schemas"]["actions-can-approve-pull-request-reviews"];
-    };
-    "actions-set-default-workflow-permissions": {
-      default_workflow_permissions?: components["schemas"]["actions-default-workflow-permissions"];
-      can_approve_pull_request_reviews?: components["schemas"]["actions-can-approve-pull-request-reviews"];
-    };
-    /**
-     * Self hosted runner label
-     * @description A label for a self hosted runner
-     */
-    "runner-label": {
-      /** @description Unique identifier of the label. */
-      id?: number;
-      /** @description Name of the label. */
-      name: string;
-      /**
-       * @description The type of label. Read-only labels are applied automatically when the runner is configured.
-       * @enum {string}
-       */
-      type?: "read-only" | "custom";
-    };
-    /**
-     * Self hosted runners
-     * @description A self hosted runner
-     */
-    runner: {
-      /**
-       * @description The id of the runner.
-       * @example 5
-       */
-      id: number;
-      /**
-       * @description The id of the runner group.
-       * @example 1
-       */
-      runner_group_id?: number;
-      /**
-       * @description The name of the runner.
-       * @example iMac
-       */
-      name: string;
-      /**
-       * @description The Operating System of the runner.
-       * @example macos
-       */
-      os: string;
-      /**
-       * @description The status of the runner.
-       * @example online
-       */
-      status: string;
-      busy: boolean;
-      labels: components["schemas"]["runner-label"][];
-    };
-    /**
-     * Runner Application
-     * @description Runner Application
-     */
-    "runner-application": {
-      os: string;
-      architecture: string;
-      download_url: string;
-      filename: string;
-      /** @description A short lived bearer token used to download the runner, if needed. */
-      temp_download_token?: string;
-      sha256_checksum?: string;
-    };
-    /**
-     * Authentication Token
-     * @description Authentication Token
-     */
-    "authentication-token": {
-      /**
-       * @description The token used for authentication
-       * @example v1.1f699f1069f60xxx
-       */
-      token: string;
-      /**
-       * Format: date-time
-       * @description The time this token expires
-       * @example 2016-07-11T22:14:10Z
-       */
-      expires_at: string;
-      /**
-       * @example {
-       *   "issues": "read",
-       *   "deployments": "write"
-       * }
-       */
-      permissions?: Record<string, never>;
-      /** @description The repositories this token has access to */
-      repositories?: components["schemas"]["repository"][];
-      /** @example config.yaml */
-      single_file?: string | null;
-      /**
-       * @description Describe whether all repositories have been selected or there's a selection involved
-       * @enum {string}
-       */
-      repository_selection?: "all" | "selected";
-    };
-    /**
-     * Actions Secret for an Organization
-     * @description Secrets for GitHub Actions for an organization.
-     */
-    "organization-actions-secret": {
-      /**
-       * @description The name of the secret.
-       * @example SECRET_TOKEN
-       */
-      name: string;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      /**
-       * @description Visibility of a secret
-       * @enum {string}
-       */
-      visibility: "all" | "private" | "selected";
-      /**
-       * Format: uri
-       * @example https://api.github.com/organizations/org/secrets/my_secret/repositories
-       */
-      selected_repositories_url?: string;
-    };
-    /**
-     * ActionsPublicKey
-     * @description The public key used for setting Actions Secrets.
-     */
-    "actions-public-key": {
-      /**
-       * @description The identifier for the key.
-       * @example 1234567
-       */
-      key_id: string;
-      /**
-       * @description The Base64 encoded public key.
-       * @example hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs=
-       */
-      key: string;
-      /** @example 2 */
-      id?: number;
-      /** @example https://api.github.com/user/keys/2 */
-      url?: string;
-      /** @example ssh-rsa AAAAB3NzaC1yc2EAAA */
-      title?: string;
-      /** @example 2011-01-26T19:01:12Z */
-      created_at?: string;
-    };
-    /**
-     * Actions Variable for an Organization
-     * @description Organization variable for GitHub Actions.
-     */
-    "organization-actions-variable": {
-      /**
-       * @description The name of the variable.
-       * @example USERNAME
-       */
-      name: string;
-      /**
-       * @description The value of the variable.
-       * @example octocat
-       */
-      value: string;
-      /**
-       * Format: date-time
-       * @description The date and time at which the variable was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ.
-       * @example 2019-01-24T22:45:36.000Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @description The date and time at which the variable was last updated, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ.
-       * @example 2019-01-24T22:45:36.000Z
-       */
-      updated_at: string;
-      /**
-       * @description Visibility of a variable
-       * @enum {string}
-       */
-      visibility: "all" | "private" | "selected";
-      /**
-       * Format: uri
-       * @example https://api.github.com/organizations/org/variables/USERNAME/repositories
-       */
-      selected_repositories_url?: string;
-    };
-    /** @description The name of the tool used to generate the code scanning analysis. */
-    "code-scanning-analysis-tool-name": string;
-    /** @description The GUID of the tool used to generate the code scanning analysis, if provided in the uploaded SARIF data. */
-    "code-scanning-analysis-tool-guid": string | null;
-    /**
-     * @description State of a code scanning alert.
-     * @enum {string}
-     */
-    "code-scanning-alert-state-query":
-      | "open"
-      | "closed"
-      | "dismissed"
-      | "fixed";
-    /**
-     * @description Severity of a code scanning alert.
-     * @enum {string}
-     */
-    "code-scanning-alert-severity":
-      | "critical"
-      | "high"
-      | "medium"
-      | "low"
-      | "warning"
-      | "note"
-      | "error";
-    /**
-     * Format: uri
-     * @description The REST API URL for fetching the list of instances for an alert.
-     */
-    readonly "alert-instances-url": string;
-    /**
-     * @description State of a code scanning alert.
-     * @enum {string}
-     */
-    "code-scanning-alert-state": "open" | "dismissed" | "fixed";
-    /**
-     * @description **Required when the state is dismissed.** The reason for dismissing or closing the alert.
-     * @enum {string|null}
-     */
-    "code-scanning-alert-dismissed-reason":
-      | null
-      | "false positive"
-      | "won't fix"
-      | "used in tests";
-    /** @description The dismissal comment associated with the dismissal of the alert. */
-    "code-scanning-alert-dismissed-comment": string | null;
-    "code-scanning-alert-rule": {
-      /** @description A unique identifier for the rule used to detect the alert. */
-      id?: string | null;
-      /** @description The name of the rule used to detect the alert. */
-      name?: string;
-      /**
-       * @description The severity of the alert.
-       * @enum {string|null}
-       */
-      severity?: "none" | "note" | "warning" | "error" | null;
-      /**
-       * @description The security severity of the alert.
-       * @enum {string|null}
-       */
-      security_severity_level?: "low" | "medium" | "high" | "critical" | null;
-      /** @description A short description of the rule used to detect the alert. */
-      description?: string;
-      /** @description description of the rule used to detect the alert. */
-      full_description?: string;
-      /** @description A set of tags applicable for the rule. */
-      tags?: string[] | null;
-      /** @description Detailed documentation for the rule as GitHub Flavored Markdown. */
-      help?: string | null;
-      /** @description A link to the documentation for the rule used to detect the alert. */
-      help_uri?: string | null;
-    };
-    /** @description The version of the tool used to generate the code scanning analysis. */
-    "code-scanning-analysis-tool-version": string | null;
-    "code-scanning-analysis-tool": {
-      name?: components["schemas"]["code-scanning-analysis-tool-name"];
-      version?: components["schemas"]["code-scanning-analysis-tool-version"];
-      guid?: components["schemas"]["code-scanning-analysis-tool-guid"];
-    };
-    /**
-     * @description The full Git reference, formatted as `refs/heads/<branch name>`,
-     * `refs/pull/<number>/merge`, or `refs/pull/<number>/head`.
-     */
-    "code-scanning-ref": string;
-    /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */
-    "code-scanning-analysis-analysis-key": string;
-    /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */
-    "code-scanning-alert-environment": string;
-    /** @description Identifies the configuration under which the analysis was executed. Used to distinguish between multiple analyses for the same tool and commit, but performed on different languages or different parts of the code. */
-    "code-scanning-analysis-category": string;
-    /** @description Describe a region within a file for the alert. */
-    "code-scanning-alert-location": {
-      path?: string;
-      start_line?: number;
-      end_line?: number;
-      start_column?: number;
-      end_column?: number;
-    };
-    /**
-     * @description A classification of the file. For example to identify it as generated.
-     * @enum {string|null}
-     */
-    "code-scanning-alert-classification":
-      | "source"
-      | "generated"
-      | "test"
-      | "library"
-      | null;
-    "code-scanning-alert-instance": {
-      ref?: components["schemas"]["code-scanning-ref"];
-      analysis_key?: components["schemas"]["code-scanning-analysis-analysis-key"];
-      environment?: components["schemas"]["code-scanning-alert-environment"];
-      category?: components["schemas"]["code-scanning-analysis-category"];
-      state?: components["schemas"]["code-scanning-alert-state"];
-      commit_sha?: string;
-      message?: {
-        text?: string;
-      };
-      location?: components["schemas"]["code-scanning-alert-location"];
-      html_url?: string;
-      /**
-       * @description Classifications that have been applied to the file that triggered the alert.
-       * For example identifying it as documentation, or a generated file.
-       */
-      classifications?: components["schemas"]["code-scanning-alert-classification"][];
-    };
-    "code-scanning-organization-alert-items": {
-      number: components["schemas"]["alert-number"];
-      created_at: components["schemas"]["alert-created-at"];
-      updated_at?: components["schemas"]["alert-updated-at"];
-      url: components["schemas"]["alert-url"];
-      html_url: components["schemas"]["alert-html-url"];
-      instances_url: components["schemas"]["alert-instances-url"];
-      state: components["schemas"]["code-scanning-alert-state"];
-      fixed_at?: components["schemas"]["alert-fixed-at"];
-      dismissed_by: components["schemas"]["nullable-simple-user"];
-      dismissed_at: components["schemas"]["alert-dismissed-at"];
-      dismissed_reason: components["schemas"]["code-scanning-alert-dismissed-reason"];
-      dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"];
-      rule: components["schemas"]["code-scanning-alert-rule"];
-      tool: components["schemas"]["code-scanning-analysis-tool"];
-      most_recent_instance: components["schemas"]["code-scanning-alert-instance"];
-      repository: components["schemas"]["simple-repository"];
-    };
-    /**
-     * Codespace machine
-     * @description A description of the machine powering a codespace.
-     */
-    "nullable-codespace-machine": {
-      /**
-       * @description The name of the machine.
-       * @example standardLinux
-       */
-      name: string;
-      /**
-       * @description The display name of the machine includes cores, memory, and storage.
-       * @example 4 cores, 16 GB RAM, 64 GB storage
-       */
-      display_name: string;
-      /**
-       * @description The operating system of the machine.
-       * @example linux
-       */
-      operating_system: string;
-      /**
-       * @description How much storage is available to the codespace.
-       * @example 68719476736
-       */
-      storage_in_bytes: number;
-      /**
-       * @description How much memory is available to the codespace.
-       * @example 17179869184
-       */
-      memory_in_bytes: number;
-      /**
-       * @description How many cores are available to the codespace.
-       * @example 4
-       */
-      cpus: number;
-      /**
-       * @description Whether a prebuild is currently available when creating a codespace for this machine and repository. If a branch was not specified as a ref, the default branch will be assumed. Value will be "null" if prebuilds are not supported or prebuild availability could not be determined. Value will be "none" if no prebuild is available. Latest values "ready" and "in_progress" indicate the prebuild availability status.
-       * @example ready
-       * @enum {string|null}
-       */
-      prebuild_availability: "none" | "ready" | "in_progress" | null;
-    } | null;
-    /**
-     * Codespace
-     * @description A codespace.
-     */
-    codespace: {
-      /** @example 1 */
-      id: number;
-      /**
-       * @description Automatically generated name of this codespace.
-       * @example monalisa-octocat-hello-world-g4wpq6h95q
-       */
-      name: string;
-      /**
-       * @description Display name for this codespace.
-       * @example bookish space pancake
-       */
-      display_name?: string | null;
-      /**
-       * @description UUID identifying this codespace's environment.
-       * @example 26a7c758-7299-4a73-b978-5a92a7ae98a0
-       */
-      environment_id: string | null;
-      owner: components["schemas"]["simple-user"];
-      billable_owner: components["schemas"]["simple-user"];
-      repository: components["schemas"]["minimal-repository"];
-      machine: components["schemas"]["nullable-codespace-machine"];
-      /**
-       * @description Path to devcontainer.json from repo root used to create Codespace.
-       * @example .devcontainer/example/devcontainer.json
-       */
-      devcontainer_path?: string | null;
-      /**
-       * @description Whether the codespace was created from a prebuild.
-       * @example false
-       */
-      prebuild: boolean | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      updated_at: string;
-      /**
-       * Format: date-time
-       * @description Last known time this codespace was started.
-       * @example 2011-01-26T19:01:12Z
-       */
-      last_used_at: string;
-      /**
-       * @description State of this codespace.
-       * @example Available
-       * @enum {string}
-       */
-      state:
-        | "Unknown"
-        | "Created"
-        | "Queued"
-        | "Provisioning"
-        | "Available"
-        | "Awaiting"
-        | "Unavailable"
-        | "Deleted"
-        | "Moved"
-        | "Shutdown"
-        | "Archived"
-        | "Starting"
-        | "ShuttingDown"
-        | "Failed"
-        | "Exporting"
-        | "Updating"
-        | "Rebuilding";
-      /**
-       * Format: uri
-       * @description API URL for this codespace.
-       */
-      url: string;
-      /** @description Details about the codespace's git repository. */
-      git_status: {
-        /**
-         * @description The number of commits the local repository is ahead of the remote.
-         * @example 0
-         */
-        ahead?: number;
-        /**
-         * @description The number of commits the local repository is behind the remote.
-         * @example 0
-         */
-        behind?: number;
-        /** @description Whether the local repository has unpushed changes. */
-        has_unpushed_changes?: boolean;
-        /** @description Whether the local repository has uncommitted changes. */
-        has_uncommitted_changes?: boolean;
-        /**
-         * @description The current branch (or SHA if in detached HEAD state) of the local repository.
-         * @example main
-         */
-        ref?: string;
-      };
-      /**
-       * @description The initally assigned location of a new codespace.
-       * @example WestUs2
-       * @enum {string}
-       */
-      location: "EastUs" | "SouthEastAsia" | "WestEurope" | "WestUs2";
-      /**
-       * @description The number of minutes of inactivity after which this codespace will be automatically stopped.
-       * @example 60
-       */
-      idle_timeout_minutes: number | null;
-      /**
-       * Format: uri
-       * @description URL to access this codespace on the web.
-       */
-      web_url: string;
-      /**
-       * Format: uri
-       * @description API URL to access available alternate machine types for this codespace.
-       */
-      machines_url: string;
-      /**
-       * Format: uri
-       * @description API URL to start this codespace.
-       */
-      start_url: string;
-      /**
-       * Format: uri
-       * @description API URL to stop this codespace.
-       */
-      stop_url: string;
-      /**
-       * Format: uri
-       * @description API URL to publish this codespace to a new repository.
-       */
-      publish_url?: string | null;
-      /**
-       * Format: uri
-       * @description API URL for the Pull Request associated with this codespace, if any.
-       */
-      pulls_url: string | null;
-      recent_folders: string[];
-      runtime_constraints?: {
-        /** @description The privacy settings a user can select from when forwarding a port. */
-        allowed_port_privacy_settings?: string[] | null;
-      };
-      /** @description Whether or not a codespace has a pending async operation. This would mean that the codespace is temporarily unavailable. The only thing that you can do with a codespace in this state is delete it. */
-      pending_operation?: boolean | null;
-      /** @description Text to show user when codespace is disabled by a pending operation */
-      pending_operation_disabled_reason?: string | null;
-      /** @description Text to show user when codespace idle timeout minutes has been overriden by an organization policy */
-      idle_timeout_notice?: string | null;
-      /**
-       * @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days).
-       * @example 60
-       */
-      retention_period_minutes?: number | null;
-      /**
-       * Format: date-time
-       * @description When a codespace will be auto-deleted based on the "retention_period_minutes" and "last_used_at"
-       * @example 2011-01-26T20:01:12Z
-       */
-      retention_expires_at?: string | null;
-      /**
-       * @description The text to display to a user when a codespace has been stopped for a potentially actionable reason.
-       * @example you've used 100% of your spending limit for Codespaces
-       */
-      last_known_stop_notice?: string | null;
-    };
-    /**
-     * Codespaces Secret
-     * @description Secrets for a GitHub Codespace.
-     */
-    "codespaces-org-secret": {
-      /**
-       * @description The name of the secret
-       * @example SECRET_NAME
-       */
-      name: string;
-      /**
-       * Format: date-time
-       * @description The date and time at which the secret was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ.
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @description The date and time at which the secret was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ.
-       */
-      updated_at: string;
-      /**
-       * @description The type of repositories in the organization that the secret is visible to
-       * @enum {string}
-       */
-      visibility: "all" | "private" | "selected";
-      /**
-       * Format: uri
-       * @description The API URL at which the list of repositories this secret is visible to can be retrieved
-       * @example https://api.github.com/orgs/ORGANIZATION/codespaces/secrets/SECRET_NAME/repositories
-       */
-      selected_repositories_url?: string;
-    };
-    /**
-     * CodespacesPublicKey
-     * @description The public key used for setting Codespaces secrets.
-     */
-    "codespaces-public-key": {
-      /**
-       * @description The identifier for the key.
-       * @example 1234567
-       */
-      key_id: string;
-      /**
-       * @description The Base64 encoded public key.
-       * @example hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs=
-       */
-      key: string;
-      /** @example 2 */
-      id?: number;
-      /** @example https://api.github.com/user/keys/2 */
-      url?: string;
-      /** @example ssh-rsa AAAAB3NzaC1yc2EAAA */
-      title?: string;
-      /** @example 2011-01-26T19:01:12Z */
-      created_at?: string;
-    };
-    /**
-     * Copilot for Business Seat Breakdown
-     * @description The breakdown of Copilot for Business seats for the organization.
-     */
-    "copilot-seat-breakdown": {
-      /** @description The total number of seats being billed for the organization as of the current billing cycle. */
-      total?: number;
-      /** @description Seats added during the current billing cycle. */
-      added_this_cycle?: number;
-      /** @description The number of seats that are pending cancellation at the end of the current billing cycle. */
-      pending_cancellation?: number;
-      /** @description The number of seats that have been assigned to users that have not yet accepted an invitation to this organization. */
-      pending_invitation?: number;
-      /** @description The number of seats that have used Copilot during the current billing cycle. */
-      active_this_cycle?: number;
-      /** @description The number of seats that have not used Copilot during the current billing cycle. */
-      inactive_this_cycle?: number;
-    };
-    /**
-     * Copilot for Business Organization Details
-     * @description Information about the seat breakdown and policies set for an organization with a Copilot for Business subscription.
-     */
-    "copilot-organization-details": {
-      seat_breakdown: components["schemas"]["copilot-seat-breakdown"];
-      /**
-       * @description The organization policy for allowing or disallowing Copilot to make suggestions that match public code.
-       * @enum {string}
-       */
-      public_code_suggestions: "allow" | "block" | "unconfigured" | "unknown";
-      /**
-       * @description The organization policy for allowing or disallowing organization members to use Copilot Chat within their editor.
-       * @enum {string}
-       */
-      copilot_chat?: "enabled" | "disabled" | "unconfigured";
-      /**
-       * @description The mode of assigning new seats.
-       * @enum {string}
-       */
-      seat_management_setting:
-        | "assign_all"
-        | "assign_selected"
-        | "disabled"
-        | "unconfigured";
-      [key: string]: unknown;
-    };
-    /**
-     * Team Simple
-     * @description Groups of organization members that gives permissions on specified repositories.
-     */
-    "nullable-team-simple": {
-      /**
-       * @description Unique identifier of the team
-       * @example 1
-       */
-      id: number;
-      /** @example MDQ6VGVhbTE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @description URL for the team
-       * @example https://api.github.com/organizations/1/team/1
-       */
-      url: string;
-      /** @example https://api.github.com/organizations/1/team/1/members{/member} */
-      members_url: string;
-      /**
-       * @description Name of the team
-       * @example Justice League
-       */
-      name: string;
-      /**
-       * @description Description of the team
-       * @example A great team.
-       */
-      description: string | null;
-      /**
-       * @description Permission that the team will have for its repositories
-       * @example admin
-       */
-      permission: string;
-      /**
-       * @description The level of privacy this team should have
-       * @example closed
-       */
-      privacy?: string;
-      /**
-       * @description The notification setting the team has set
-       * @example notifications_enabled
-       */
-      notification_setting?: string;
-      /**
-       * Format: uri
-       * @example https://github.com/orgs/rails/teams/core
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/organizations/1/team/1/repos
-       */
-      repositories_url: string;
-      /** @example justice-league */
-      slug: string;
-      /**
-       * @description Distinguished Name (DN) that team maps to within LDAP environment
-       * @example uid=example,ou=users,dc=github,dc=com
-       */
-      ldap_dn?: string;
-    } | null;
-    /**
-     * Team
-     * @description Groups of organization members that gives permissions on specified repositories.
-     */
-    team: {
-      id: number;
-      node_id: string;
-      name: string;
-      slug: string;
-      description: string | null;
-      privacy?: string;
-      notification_setting?: string;
-      permission: string;
-      permissions?: {
-        pull: boolean;
-        triage: boolean;
-        push: boolean;
-        maintain: boolean;
-        admin: boolean;
-      };
-      /** Format: uri */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/orgs/rails/teams/core
-       */
-      html_url: string;
-      members_url: string;
-      /** Format: uri */
-      repositories_url: string;
-      parent: components["schemas"]["nullable-team-simple"];
-    };
-    /**
-     * Organization
-     * @description GitHub account for managing multiple users, teams, and repositories
-     */
-    organization: {
-      /**
-       * @description Unique login name of the organization
-       * @example new-org
-       */
-      login: string;
-      /**
-       * Format: uri
-       * @description URL for the organization
-       * @example https://api.github.com/orgs/github
-       */
-      url: string;
-      id: number;
-      node_id: string;
-      /** Format: uri */
-      repos_url: string;
-      /** Format: uri */
-      events_url: string;
-      hooks_url: string;
-      issues_url: string;
-      members_url: string;
-      public_members_url: string;
-      avatar_url: string;
-      description: string | null;
-      /**
-       * Format: uri
-       * @description Display blog url for the organization
-       * @example blog.example-org.com
-       */
-      blog?: string;
-      /** Format: uri */
-      html_url: string;
-      /**
-       * @description Display name for the organization
-       * @example New Org
-       */
-      name?: string;
-      /**
-       * @description Display company name for the organization
-       * @example Acme corporation
-       */
-      company?: string;
-      /**
-       * @description Display location for the organization
-       * @example Berlin, Germany
-       */
-      location?: string;
-      /**
-       * Format: email
-       * @description Display email for the organization
-       * @example org@example.com
-       */
-      email?: string;
-      /** @description Specifies if organization projects are enabled for this org */
-      has_organization_projects: boolean;
-      /** @description Specifies if repository projects are enabled for repositories that belong to this org */
-      has_repository_projects: boolean;
-      is_verified?: boolean;
-      public_repos: number;
-      public_gists: number;
-      followers: number;
-      following: number;
-      type: string;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      plan?: {
-        name?: string;
-        space?: number;
-        private_repos?: number;
-        filled_seats?: number;
-        seats?: number;
-      };
-    };
-    /**
-     * Copilot for Business Seat Detail
-     * @description Information about a Copilot for Business seat assignment for a user, team, or organization.
-     */
-    "copilot-seat-details": {
-      /** @description The assignee that has been granted access to GitHub Copilot. */
-      assignee: {
-        [key: string]: unknown;
-      } & (
-        | components["schemas"]["simple-user"]
-        | components["schemas"]["team"]
-        | components["schemas"]["organization"]
-      );
-      /** @description The team that granted access to GitHub Copilot to the assignee. This will be null if the user was assigned a seat individually. */
-      assigning_team?: components["schemas"]["team"] | null;
-      /**
-       * Format: date
-       * @description The pending cancellation date for the seat, in `YYYY-MM-DD` format. This will be null unless the assignee's Copilot access has been canceled during the current billing cycle. If the seat has been cancelled, this corresponds to the start of the organization's next billing cycle.
-       */
-      pending_cancellation_date?: string | null;
-      /**
-       * Format: date-time
-       * @description Timestamp of user's last GitHub Copilot activity, in ISO 8601 format.
-       */
-      last_activity_at?: string | null;
-      /** @description Last editor that was used by the user for a GitHub Copilot completion. */
-      last_activity_editor?: string | null;
-      /**
-       * Format: date-time
-       * @description Timestamp of when the assignee was last granted access to GitHub Copilot, in ISO 8601 format.
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @description Timestamp of when the assignee's GitHub Copilot access was last updated, in ISO 8601 format.
-       */
-      updated_at?: string;
-    };
-    /**
-     * Dependabot Secret for an Organization
-     * @description Secrets for GitHub Dependabot for an organization.
-     */
-    "organization-dependabot-secret": {
-      /**
-       * @description The name of the secret.
-       * @example SECRET_TOKEN
-       */
-      name: string;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      /**
-       * @description Visibility of a secret
-       * @enum {string}
-       */
-      visibility: "all" | "private" | "selected";
-      /**
-       * Format: uri
-       * @example https://api.github.com/organizations/org/dependabot/secrets/my_secret/repositories
-       */
-      selected_repositories_url?: string;
-    };
-    /**
-     * DependabotPublicKey
-     * @description The public key used for setting Dependabot Secrets.
-     */
-    "dependabot-public-key": {
-      /**
-       * @description The identifier for the key.
-       * @example 1234567
-       */
-      key_id: string;
-      /**
-       * @description The Base64 encoded public key.
-       * @example hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs=
-       */
-      key: string;
-    };
-    /**
-     * Minimal Repository
-     * @description Minimal Repository
-     */
-    "nullable-minimal-repository": {
-      /** @example 1296269 */
-      id: number;
-      /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */
-      node_id: string;
-      /** @example Hello-World */
-      name: string;
-      /** @example octocat/Hello-World */
-      full_name: string;
-      owner: components["schemas"]["simple-user"];
-      private: boolean;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World
-       */
-      html_url: string;
-      /** @example This your first repo! */
-      description: string | null;
-      fork: boolean;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World
-       */
-      url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */
-      archive_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */
-      assignees_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */
-      blobs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */
-      branches_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */
-      collaborators_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */
-      comments_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */
-      commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */
-      compare_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */
-      contents_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/contributors
-       */
-      contributors_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/deployments
-       */
-      deployments_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/downloads
-       */
-      downloads_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/events
-       */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/forks
-       */
-      forks_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */
-      git_commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */
-      git_refs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */
-      git_tags_url: string;
-      git_url?: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */
-      issue_comment_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */
-      issue_events_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */
-      issues_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */
-      keys_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */
-      labels_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/languages
-       */
-      languages_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/merges
-       */
-      merges_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */
-      milestones_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */
-      notifications_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */
-      pulls_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */
-      releases_url: string;
-      ssh_url?: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/stargazers
-       */
-      stargazers_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */
-      statuses_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscribers
-       */
-      subscribers_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscription
-       */
-      subscription_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/tags
-       */
-      tags_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/teams
-       */
-      teams_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */
-      trees_url: string;
-      clone_url?: string;
-      mirror_url?: string | null;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/hooks
-       */
-      hooks_url: string;
-      svn_url?: string;
-      homepage?: string | null;
-      language?: string | null;
-      forks_count?: number;
-      stargazers_count?: number;
-      watchers_count?: number;
-      /** @description The size of the repository. Size is calculated hourly. When a repository is initially created, the size is 0. */
-      size?: number;
-      default_branch?: string;
-      open_issues_count?: number;
-      is_template?: boolean;
-      topics?: string[];
-      has_issues?: boolean;
-      has_projects?: boolean;
-      has_wiki?: boolean;
-      has_pages?: boolean;
-      has_downloads?: boolean;
-      has_discussions?: boolean;
-      archived?: boolean;
-      disabled?: boolean;
-      visibility?: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:06:43Z
-       */
-      pushed_at?: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      created_at?: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:14:43Z
-       */
-      updated_at?: string | null;
-      permissions?: {
-        admin?: boolean;
-        maintain?: boolean;
-        push?: boolean;
-        triage?: boolean;
-        pull?: boolean;
-      };
-      /** @example admin */
-      role_name?: string;
-      temp_clone_token?: string;
-      delete_branch_on_merge?: boolean;
-      subscribers_count?: number;
-      network_count?: number;
-      code_of_conduct?: components["schemas"]["code-of-conduct"];
-      license?: {
-        key?: string;
-        name?: string;
-        spdx_id?: string;
-        url?: string;
-        node_id?: string;
-      } | null;
-      /** @example 0 */
-      forks?: number;
-      /** @example 0 */
-      open_issues?: number;
-      /** @example 0 */
-      watchers?: number;
-      allow_forking?: boolean;
-      /** @example false */
-      web_commit_signoff_required?: boolean;
-      security_and_analysis?: components["schemas"]["security-and-analysis"];
-    } | null;
-    /**
-     * Package
-     * @description A software package
-     */
-    package: {
-      /**
-       * @description Unique identifier of the package.
-       * @example 1
-       */
-      id: number;
-      /**
-       * @description The name of the package.
-       * @example super-linter
-       */
-      name: string;
-      /**
-       * @example docker
-       * @enum {string}
-       */
-      package_type:
-        | "npm"
-        | "maven"
-        | "rubygems"
-        | "docker"
-        | "nuget"
-        | "container";
-      /** @example https://api.github.com/orgs/github/packages/container/super-linter */
-      url: string;
-      /** @example https://github.com/orgs/github/packages/container/package/super-linter */
-      html_url: string;
-      /**
-       * @description The number of versions of the package.
-       * @example 1
-       */
-      version_count: number;
-      /**
-       * @example private
-       * @enum {string}
-       */
-      visibility: "private" | "public";
-      owner?: components["schemas"]["nullable-simple-user"];
-      repository?: components["schemas"]["nullable-minimal-repository"];
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-    };
-    /**
-     * Organization Invitation
-     * @description Organization Invitation
-     */
-    "organization-invitation": {
-      id: number;
-      login: string | null;
-      email: string | null;
-      role: string;
-      created_at: string;
-      failed_at?: string | null;
-      failed_reason?: string | null;
-      inviter: components["schemas"]["simple-user"];
-      team_count: number;
-      /** @example "MDIyOk9yZ2FuaXphdGlvbkludml0YXRpb24x" */
-      node_id: string;
-      /** @example "https://api.github.com/organizations/16/invitations/1/teams" */
-      invitation_teams_url: string;
-      /** @example "member" */
-      invitation_source?: string;
-    };
-    /**
-     * Org Hook
-     * @description Org Hook
-     */
-    "org-hook": {
-      /** @example 1 */
-      id: number;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/octocat/hooks/1
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/octocat/hooks/1/pings
-       */
-      ping_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/octocat/hooks/1/deliveries
-       */
-      deliveries_url?: string;
-      /** @example web */
-      name: string;
-      /**
-       * @example [
-       *   "push",
-       *   "pull_request"
-       * ]
-       */
-      events: string[];
-      /** @example true */
-      active: boolean;
-      config: {
-        /** @example "http://example.com/2" */
-        url?: string;
-        /** @example "0" */
-        insecure_ssl?: string;
-        /** @example "form" */
-        content_type?: string;
-        /** @example "********" */
-        secret?: string;
-      };
-      /**
-       * Format: date-time
-       * @example 2011-09-06T20:39:23Z
-       */
-      updated_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-09-06T17:26:27Z
-       */
-      created_at: string;
-      type: string;
-    };
-    /**
-     * @description The type of GitHub user that can comment, open issues, or create pull requests while the interaction limit is in effect.
-     * @example collaborators_only
-     * @enum {string}
-     */
-    "interaction-group":
-      | "existing_users"
-      | "contributors_only"
-      | "collaborators_only";
-    /**
-     * Interaction Limits
-     * @description Interaction limit settings.
-     */
-    "interaction-limit-response": {
-      limit: components["schemas"]["interaction-group"];
-      /** @example repository */
-      origin: string;
-      /**
-       * Format: date-time
-       * @example 2018-08-17T04:18:39Z
-       */
-      expires_at: string;
-    };
-    /**
-     * @description The duration of the interaction restriction. Default: `one_day`.
-     * @example one_month
-     * @enum {string}
-     */
-    "interaction-expiry":
-      | "one_day"
-      | "three_days"
-      | "one_week"
-      | "one_month"
-      | "six_months";
-    /**
-     * Interaction Restrictions
-     * @description Limit interactions to a specific type of user for a specified duration
-     */
-    "interaction-limit": {
-      limit: components["schemas"]["interaction-group"];
-      expiry?: components["schemas"]["interaction-expiry"];
-    };
-    /**
-     * Org Membership
-     * @description Org Membership
-     */
-    "org-membership": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/octocat/memberships/defunkt
-       */
-      url: string;
-      /**
-       * @description The state of the member in the organization. The `pending` state indicates the user has not yet accepted an invitation.
-       * @example active
-       * @enum {string}
-       */
-      state: "active" | "pending";
-      /**
-       * @description The user's membership type in the organization.
-       * @example admin
-       * @enum {string}
-       */
-      role: "admin" | "member" | "billing_manager";
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/octocat
-       */
-      organization_url: string;
-      organization: components["schemas"]["organization-simple"];
-      user: components["schemas"]["nullable-simple-user"];
-      permissions?: {
-        can_create_repository: boolean;
-      };
-    };
-    /**
-     * Migration
-     * @description A migration.
-     */
-    migration: {
-      /** @example 79 */
-      id: number;
-      owner: components["schemas"]["nullable-simple-user"];
-      /** @example 0b989ba4-242f-11e5-81e1-c7b6966d2516 */
-      guid: string;
-      /** @example pending */
-      state: string;
-      /** @example true */
-      lock_repositories: boolean;
-      exclude_metadata: boolean;
-      exclude_git_data: boolean;
-      exclude_attachments: boolean;
-      exclude_releases: boolean;
-      exclude_owner_projects: boolean;
-      org_metadata_only: boolean;
-      /** @description The repositories included in the migration. Only returned for export migrations. */
-      repositories: components["schemas"]["repository"][];
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/octo-org/migrations/79
-       */
-      url: string;
-      /**
-       * Format: date-time
-       * @example 2015-07-06T15:33:38-07:00
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2015-07-06T15:33:38-07:00
-       */
-      updated_at: string;
-      node_id: string;
-      /** Format: uri */
-      archive_url?: string;
-      /** @description Exclude related items from being returned in the response in order to improve performance of the request. The array can include any of: `"repositories"`. */
-      exclude?: string[];
-    };
-    /**
-     * Package Version
-     * @description A version of a software package
-     */
-    "package-version": {
-      /**
-       * @description Unique identifier of the package version.
-       * @example 1
-       */
-      id: number;
-      /**
-       * @description The name of the package version.
-       * @example latest
-       */
-      name: string;
-      /** @example https://api.github.com/orgs/github/packages/container/super-linter/versions/786068 */
-      url: string;
-      /** @example https://github.com/orgs/github/packages/container/package/super-linter */
-      package_html_url: string;
-      /** @example https://github.com/orgs/github/packages/container/super-linter/786068 */
-      html_url?: string;
-      /** @example MIT */
-      license?: string;
-      description?: string;
-      /**
-       * Format: date-time
-       * @example 2011-04-10T20:09:31Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2014-03-03T18:58:10Z
-       */
-      updated_at: string;
-      /**
-       * Format: date-time
-       * @example 2014-03-03T18:58:10Z
-       */
-      deleted_at?: string;
-      /** Package Version Metadata */
-      metadata?: {
-        /**
-         * @example docker
-         * @enum {string}
-         */
-        package_type:
-          | "npm"
-          | "maven"
-          | "rubygems"
-          | "docker"
-          | "nuget"
-          | "container";
-        /** Container Metadata */
-        container?: {
-          tags: string[];
-        };
-        /** Docker Metadata */
-        docker?: {
-          tag?: string[];
-        };
-      };
-    };
-    /**
-     * Simple Organization Programmatic Access Grant Request
-     * @description Minimal representation of an organization programmatic access grant request for enumerations
-     */
-    "organization-programmatic-access-grant-request": {
-      /** @description Unique identifier of the request for access via fine-grained personal access token. The `pat_request_id` used to review PAT requests. */
-      id: number;
-      /** @description Reason for requesting access. */
-      reason: string | null;
-      owner: components["schemas"]["simple-user"];
-      /**
-       * @description Type of repository selection requested.
-       * @enum {string}
-       */
-      repository_selection: "none" | "all" | "subset";
-      /** @description URL to the list of repositories requested to be accessed via fine-grained personal access token. Should only be followed when `repository_selection` is `subset`. */
-      repositories_url: string;
-      /** @description Permissions requested, categorized by type of permission. */
-      permissions: {
-        organization?: {
-          [key: string]: string;
-        };
-        repository?: {
-          [key: string]: string;
-        };
-        other?: {
-          [key: string]: string;
-        };
-      };
-      /** @description Date and time when the request for access was created. */
-      created_at: string;
-      /** @description Whether the associated fine-grained personal access token has expired. */
-      token_expired: boolean;
-      /** @description Date and time when the associated fine-grained personal access token expires. */
-      token_expires_at: string | null;
-      /** @description Date and time when the associated fine-grained personal access token was last used for authentication. */
-      token_last_used_at: string | null;
-    };
-    /**
-     * Organization Programmatic Access Grant
-     * @description Minimal representation of an organization programmatic access grant for enumerations
-     */
-    "organization-programmatic-access-grant": {
-      /** @description Unique identifier of the fine-grained personal access token. The `pat_id` used to get details about an approved fine-grained personal access token. */
-      id: number;
-      owner: components["schemas"]["simple-user"];
-      /**
-       * @description Type of repository selection requested.
-       * @enum {string}
-       */
-      repository_selection: "none" | "all" | "subset";
-      /** @description URL to the list of repositories the fine-grained personal access token can access. Only follow when `repository_selection` is `subset`. */
-      repositories_url: string;
-      /** @description Permissions requested, categorized by type of permission. */
-      permissions: {
-        organization?: {
-          [key: string]: string;
-        };
-        repository?: {
-          [key: string]: string;
-        };
-        other?: {
-          [key: string]: string;
-        };
-      };
-      /** @description Date and time when the fine-grained personal access token was approved to access the organization. */
-      access_granted_at: string;
-      /** @description Whether the associated fine-grained personal access token has expired. */
-      token_expired: boolean;
-      /** @description Date and time when the associated fine-grained personal access token expires. */
-      token_expires_at: string | null;
-      /** @description Date and time when the associated fine-grained personal access token was last used for authentication. */
-      token_last_used_at: string | null;
-    };
-    /**
-     * Project
-     * @description Projects are a way to organize columns and cards of work.
-     */
-    project: {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/api-playground/projects-test
-       */
-      owner_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/projects/1002604
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/api-playground/projects-test/projects/12
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/projects/1002604/columns
-       */
-      columns_url: string;
-      /** @example 1002604 */
-      id: number;
-      /** @example MDc6UHJvamVjdDEwMDI2MDQ= */
-      node_id: string;
-      /**
-       * @description Name of the project
-       * @example Week One Sprint
-       */
-      name: string;
-      /**
-       * @description Body of the project
-       * @example This project represents the sprint of the first week in January
-       */
-      body: string | null;
-      /** @example 1 */
-      number: number;
-      /**
-       * @description State of the project; either 'open' or 'closed'
-       * @example open
-       */
-      state: string;
-      creator: components["schemas"]["nullable-simple-user"];
-      /**
-       * Format: date-time
-       * @example 2011-04-10T20:09:31Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2014-03-03T18:58:10Z
-       */
-      updated_at: string;
-      /**
-       * @description The baseline permission that all organization members have on this project. Only present if owner is an organization.
-       * @enum {string}
-       */
-      organization_permission?: "read" | "write" | "admin" | "none";
-      /** @description Whether or not this project can be seen by everyone. Only present if owner is an organization. */
-      private?: boolean;
-    };
-    /**
-     * Organization Custom Property
-     * @description Custom property defined on an organization
-     */
-    "org-custom-property": {
-      /** @description The name of the property */
-      property_name: string;
-      /**
-       * @description The type of the value for the property
-       * @example single_select
-       * @enum {string}
-       */
-      value_type: "string" | "single_select";
-      /** @description Whether the property is required. */
-      required?: boolean;
-      /** @description Default value of the property */
-      default_value?: string | null;
-      /** @description Short description of the property */
-      description?: string | null;
-      /** @description Ordered list of allowed values of the property */
-      allowed_values?: string[] | null;
-    };
-    /**
-     * Custom Property Value
-     * @description Custom property name and associated value
-     */
-    "custom-property-value": {
-      /** @description The name of the property */
-      property_name: string;
-      /** @description The value assigned to the property */
-      value: string | null;
-    };
-    /**
-     * Organization Repository Custom Property Values
-     * @description List of custom property values for a repository
-     */
-    "org-repo-custom-property-values": {
-      /** @example 1296269 */
-      repository_id: number;
-      /** @example Hello-World */
-      repository_name: string;
-      /** @example octocat/Hello-World */
-      repository_full_name: string;
-      /** @description List of custom property names and associated values */
-      properties: components["schemas"]["custom-property-value"][];
-    };
-    /**
-     * @description The enforcement level of the ruleset. `evaluate` allows admins to test rules before enforcing them. Admins can view insights on the Rule Insights page (`evaluate` is only available with GitHub Enterprise).
-     * @enum {string}
-     */
-    "repository-rule-enforcement": "disabled" | "active" | "evaluate";
-    /**
-     * Repository Ruleset Bypass Actor
-     * @description An actor that can bypass rules in a ruleset
-     */
-    "repository-ruleset-bypass-actor": {
-      /** @description The ID of the actor that can bypass a ruleset. If `actor_type` is `OrganizationAdmin`, this should be `1`. */
-      actor_id: number;
-      /**
-       * @description The type of actor that can bypass a ruleset
-       * @enum {string}
-       */
-      actor_type:
-        | "RepositoryRole"
-        | "Team"
-        | "Integration"
-        | "OrganizationAdmin";
-      /**
-       * @description When the specified actor can bypass the ruleset. `pull_request` means that an actor can only bypass rules on pull requests.
-       * @enum {string}
-       */
-      bypass_mode: "always" | "pull_request";
-    };
-    /**
-     * Repository ruleset conditions for ref names
-     * @description Parameters for a repository ruleset ref name condition
-     */
-    "repository-ruleset-conditions": {
-      ref_name?: {
-        /** @description Array of ref names or patterns to include. One of these patterns must match for the condition to pass. Also accepts `~DEFAULT_BRANCH` to include the default branch or `~ALL` to include all branches. */
-        include?: string[];
-        /** @description Array of ref names or patterns to exclude. The condition will not pass if any of these patterns match. */
-        exclude?: string[];
-      };
-    };
-    /**
-     * Repository ruleset conditions for repository names
-     * @description Parameters for a repository name condition
-     */
-    "repository-ruleset-conditions-repository-name-target": {
-      repository_name: {
-        /** @description Array of repository names or patterns to include. One of these patterns must match for the condition to pass. Also accepts `~ALL` to include all repositories. */
-        include?: string[];
-        /** @description Array of repository names or patterns to exclude. The condition will not pass if any of these patterns match. */
-        exclude?: string[];
-        /** @description Whether renaming of target repositories is prevented. */
-        protected?: boolean;
-      };
-    };
-    /**
-     * Repository ruleset conditions for repository IDs
-     * @description Parameters for a repository ID condition
-     */
-    "repository-ruleset-conditions-repository-id-target": {
-      repository_id: {
-        /** @description The repository IDs that the ruleset applies to. One of these IDs must match for the condition to pass. */
-        repository_ids?: number[];
-      };
-    };
-    /**
-     * Organization ruleset conditions
-     * @description Conditions for an organization ruleset. The conditions object should contain both `repository_name` and `ref_name` properties or both `repository_id` and `ref_name` properties.
-     */
-    "org-ruleset-conditions":
-      | (components["schemas"]["repository-ruleset-conditions"] &
-          components["schemas"]["repository-ruleset-conditions-repository-name-target"])
-      | (components["schemas"]["repository-ruleset-conditions"] &
-          components["schemas"]["repository-ruleset-conditions-repository-id-target"]);
-    /**
-     * creation
-     * @description Only allow users with bypass permission to create matching refs.
-     */
-    "repository-rule-creation": {
-      /** @enum {string} */
-      type: "creation";
-    };
-    /**
-     * update
-     * @description Only allow users with bypass permission to update matching refs.
-     */
-    "repository-rule-update": {
-      /** @enum {string} */
-      type: "update";
-      parameters?: {
-        /** @description Branch can pull changes from its upstream repository */
-        update_allows_fetch_and_merge: boolean;
-      };
-    };
-    /**
-     * deletion
-     * @description Only allow users with bypass permissions to delete matching refs.
-     */
-    "repository-rule-deletion": {
-      /** @enum {string} */
-      type: "deletion";
-    };
-    /**
-     * required_linear_history
-     * @description Prevent merge commits from being pushed to matching refs.
-     */
-    "repository-rule-required-linear-history": {
-      /** @enum {string} */
-      type: "required_linear_history";
-    };
-    /**
-     * required_deployments
-     * @description Choose which environments must be successfully deployed to before refs can be pushed into a ref that matches this rule.
-     */
-    "repository-rule-required-deployments": {
-      /** @enum {string} */
-      type: "required_deployments";
-      parameters?: {
-        /** @description The environments that must be successfully deployed to before branches can be merged. */
-        required_deployment_environments: string[];
-      };
-    };
-    /**
-     * required_signatures
-     * @description Commits pushed to matching refs must have verified signatures.
-     */
-    "repository-rule-required-signatures": {
-      /** @enum {string} */
-      type: "required_signatures";
-    };
-    /**
-     * pull_request
-     * @description Require all commits be made to a non-target branch and submitted via a pull request before they can be merged.
-     */
-    "repository-rule-pull-request": {
-      /** @enum {string} */
-      type: "pull_request";
-      parameters?: {
-        /** @description New, reviewable commits pushed will dismiss previous pull request review approvals. */
-        dismiss_stale_reviews_on_push: boolean;
-        /** @description Require an approving review in pull requests that modify files that have a designated code owner. */
-        require_code_owner_review: boolean;
-        /** @description Whether the most recent reviewable push must be approved by someone other than the person who pushed it. */
-        require_last_push_approval: boolean;
-        /** @description The number of approving reviews that are required before a pull request can be merged. */
-        required_approving_review_count: number;
-        /** @description All conversations on code must be resolved before a pull request can be merged. */
-        required_review_thread_resolution: boolean;
-      };
-    };
-    /**
-     * StatusCheckConfiguration
-     * @description Required status check
-     */
-    "repository-rule-params-status-check-configuration": {
-      /** @description The status check context name that must be present on the commit. */
-      context: string;
-      /** @description The optional integration ID that this status check must originate from. */
-      integration_id?: number;
-    };
-    /**
-     * required_status_checks
-     * @description Choose which status checks must pass before the ref is updated. When enabled, commits must first be pushed to another ref where the checks pass.
-     */
-    "repository-rule-required-status-checks": {
-      /** @enum {string} */
-      type: "required_status_checks";
-      parameters?: {
-        /** @description Status checks that are required. */
-        required_status_checks: components["schemas"]["repository-rule-params-status-check-configuration"][];
-        /** @description Whether pull requests targeting a matching branch must be tested with the latest code. This setting will not take effect unless at least one status check is enabled. */
-        strict_required_status_checks_policy: boolean;
-      };
-    };
-    /**
-     * non_fast_forward
-     * @description Prevent users with push access from force pushing to refs.
-     */
-    "repository-rule-non-fast-forward": {
-      /** @enum {string} */
-      type: "non_fast_forward";
-    };
-    /**
-     * commit_message_pattern
-     * @description Parameters to be used for the commit_message_pattern rule
-     */
-    "repository-rule-commit-message-pattern": {
-      /** @enum {string} */
-      type: "commit_message_pattern";
-      parameters?: {
-        /** @description How this rule will appear to users. */
-        name?: string;
-        /** @description If true, the rule will fail if the pattern matches. */
-        negate?: boolean;
-        /**
-         * @description The operator to use for matching.
-         * @enum {string}
-         */
-        operator: "starts_with" | "ends_with" | "contains" | "regex";
-        /** @description The pattern to match with. */
-        pattern: string;
-      };
-    };
-    /**
-     * commit_author_email_pattern
-     * @description Parameters to be used for the commit_author_email_pattern rule
-     */
-    "repository-rule-commit-author-email-pattern": {
-      /** @enum {string} */
-      type: "commit_author_email_pattern";
-      parameters?: {
-        /** @description How this rule will appear to users. */
-        name?: string;
-        /** @description If true, the rule will fail if the pattern matches. */
-        negate?: boolean;
-        /**
-         * @description The operator to use for matching.
-         * @enum {string}
-         */
-        operator: "starts_with" | "ends_with" | "contains" | "regex";
-        /** @description The pattern to match with. */
-        pattern: string;
-      };
-    };
-    /**
-     * committer_email_pattern
-     * @description Parameters to be used for the committer_email_pattern rule
-     */
-    "repository-rule-committer-email-pattern": {
-      /** @enum {string} */
-      type: "committer_email_pattern";
-      parameters?: {
-        /** @description How this rule will appear to users. */
-        name?: string;
-        /** @description If true, the rule will fail if the pattern matches. */
-        negate?: boolean;
-        /**
-         * @description The operator to use for matching.
-         * @enum {string}
-         */
-        operator: "starts_with" | "ends_with" | "contains" | "regex";
-        /** @description The pattern to match with. */
-        pattern: string;
-      };
-    };
-    /**
-     * branch_name_pattern
-     * @description Parameters to be used for the branch_name_pattern rule
-     */
-    "repository-rule-branch-name-pattern": {
-      /** @enum {string} */
-      type: "branch_name_pattern";
-      parameters?: {
-        /** @description How this rule will appear to users. */
-        name?: string;
-        /** @description If true, the rule will fail if the pattern matches. */
-        negate?: boolean;
-        /**
-         * @description The operator to use for matching.
-         * @enum {string}
-         */
-        operator: "starts_with" | "ends_with" | "contains" | "regex";
-        /** @description The pattern to match with. */
-        pattern: string;
-      };
-    };
-    /**
-     * tag_name_pattern
-     * @description Parameters to be used for the tag_name_pattern rule
-     */
-    "repository-rule-tag-name-pattern": {
-      /** @enum {string} */
-      type: "tag_name_pattern";
-      parameters?: {
-        /** @description How this rule will appear to users. */
-        name?: string;
-        /** @description If true, the rule will fail if the pattern matches. */
-        negate?: boolean;
-        /**
-         * @description The operator to use for matching.
-         * @enum {string}
-         */
-        operator: "starts_with" | "ends_with" | "contains" | "regex";
-        /** @description The pattern to match with. */
-        pattern: string;
-      };
-    };
-    /**
-     * WorkflowFileReference
-     * @description A workflow that must run for this rule to pass
-     */
-    "repository-rule-params-workflow-file-reference": {
-      /** @description The path to the workflow file */
-      path: string;
-      /** @description The ref (branch or tag) of the workflow file to use */
-      ref?: string;
-      /** @description The ID of the repository where the workflow is defined */
-      repository_id: number;
-      /** @description The commit SHA of the workflow file to use */
-      sha?: string;
-    };
-    /**
-     * workflows
-     * @description Require all changes made to a targeted branch to pass the specified workflows before they can be merged.
-     */
-    "repository-rule-workflows": {
-      /** @enum {string} */
-      type: "workflows";
-      parameters?: {
-        /** @description Workflows that must pass for this rule to pass. */
-        workflows: components["schemas"]["repository-rule-params-workflow-file-reference"][];
-      };
-    };
-    /**
-     * Repository Rule
-     * @description A repository rule.
-     */
-    "repository-rule":
-      | components["schemas"]["repository-rule-creation"]
-      | components["schemas"]["repository-rule-update"]
-      | components["schemas"]["repository-rule-deletion"]
-      | components["schemas"]["repository-rule-required-linear-history"]
-      | components["schemas"]["repository-rule-required-deployments"]
-      | components["schemas"]["repository-rule-required-signatures"]
-      | components["schemas"]["repository-rule-pull-request"]
-      | components["schemas"]["repository-rule-required-status-checks"]
-      | components["schemas"]["repository-rule-non-fast-forward"]
-      | components["schemas"]["repository-rule-commit-message-pattern"]
-      | components["schemas"]["repository-rule-commit-author-email-pattern"]
-      | components["schemas"]["repository-rule-committer-email-pattern"]
-      | components["schemas"]["repository-rule-branch-name-pattern"]
-      | components["schemas"]["repository-rule-tag-name-pattern"]
-      | components["schemas"]["repository-rule-workflows"];
-    /**
-     * Repository ruleset
-     * @description A set of rules to apply when specified conditions are met.
-     */
-    "repository-ruleset": {
-      /** @description The ID of the ruleset */
-      id: number;
-      /** @description The name of the ruleset */
-      name: string;
-      /**
-       * @description The target of the ruleset
-       * @enum {string}
-       */
-      target?: "branch" | "tag";
-      /**
-       * @description The type of the source of the ruleset
-       * @enum {string}
-       */
-      source_type?: "Repository" | "Organization";
-      /** @description The name of the source */
-      source: string;
-      enforcement: components["schemas"]["repository-rule-enforcement"];
-      /** @description The actors that can bypass the rules in this ruleset */
-      bypass_actors?: components["schemas"]["repository-ruleset-bypass-actor"][];
-      /**
-       * @description The bypass type of the user making the API request for this ruleset. This field is only returned when
-       * querying the repository-level endpoint.
-       * @enum {string}
-       */
-      current_user_can_bypass?: "always" | "pull_requests_only" | "never";
-      node_id?: string;
-      _links?: {
-        self?: {
-          /** @description The URL of the ruleset */
-          href?: string;
-        };
-        html?: {
-          /** @description The html URL of the ruleset */
-          href?: string;
-        };
-      };
-      conditions?:
-        | components["schemas"]["repository-ruleset-conditions"]
-        | components["schemas"]["org-ruleset-conditions"];
-      rules?: components["schemas"]["repository-rule"][];
-      /** Format: date-time */
-      created_at?: string;
-      /** Format: date-time */
-      updated_at?: string;
-    };
-    /**
-     * Rule Suites
-     * @description Response
-     */
-    "rule-suites": {
-      /** @description The unique identifier of the rule insight. */
-      id?: number;
-      /** @description The number that identifies the user. */
-      actor_id?: number;
-      /** @description The handle for the GitHub user account. */
-      actor_name?: string;
-      /** @description The first commit sha before the push evaluation. */
-      before_sha?: string;
-      /** @description The last commit sha in the push evaluation. */
-      after_sha?: string;
-      /** @description The ref name that the evaluation ran on. */
-      ref?: string;
-      /** @description The ID of the repository associated with the rule evaluation. */
-      repository_id?: number;
-      /** @description The name of the repository without the `.git` extension. */
-      repository_name?: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:06:43Z
-       */
-      pushed_at?: string;
-      /**
-       * @description The result of the rule evaluations for rules with the `active` enforcement status.
-       * @enum {string}
-       */
-      result?: "pass" | "fail" | "bypass";
-      /**
-       * @description The result of the rule evaluations for rules with the `active` and `evaluate` enforcement statuses, demonstrating whether rules would pass or fail if all rules in the rule suite were `active`.
-       * @enum {string}
-       */
-      evaluation_result?: "pass" | "fail";
-    }[];
-    /**
-     * Rule Suite
-     * @description Response
-     */
-    "rule-suite": {
-      /** @description The unique identifier of the rule insight. */
-      id?: number;
-      /** @description The number that identifies the user. */
-      actor_id?: number;
-      /** @description The handle for the GitHub user account. */
-      actor_name?: string;
-      /** @description The first commit sha before the push evaluation. */
-      before_sha?: string;
-      /** @description The last commit sha in the push evaluation. */
-      after_sha?: string;
-      /** @description The ref name that the evaluation ran on. */
-      ref?: string;
-      /** @description The ID of the repository associated with the rule evaluation. */
-      repository_id?: number;
-      /** @description The name of the repository without the `.git` extension. */
-      repository_name?: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:06:43Z
-       */
-      pushed_at?: string;
-      /**
-       * @description The result of the rule evaluations for rules with the `active` enforcement status.
-       * @enum {string}
-       */
-      result?: "pass" | "fail" | "bypass";
-      /**
-       * @description The result of the rule evaluations for rules with the `active` and `evaluate` enforcement statuses, demonstrating whether rules would pass or fail if all rules in the rule suite were `active`.
-       * @enum {string}
-       */
-      evaluation_result?: "pass" | "fail";
-      /** @description Details on the evaluated rules. */
-      rule_evaluations?: {
-        rule_source?: {
-          /** @description The type of rule source. */
-          type?: string;
-          /** @description The ID of the rule source. */
-          id?: number | null;
-          /** @description The name of the rule source. */
-          name?: string | null;
-        };
-        /**
-         * @description The enforcement level of this rule source.
-         * @enum {string}
-         */
-        enforcement?: "active" | "evaluate" | "deleted ruleset";
-        /**
-         * @description The result of the evaluation of the individual rule.
-         * @enum {string}
-         */
-        result?: "pass" | "fail";
-        /** @description The type of rule. */
-        rule_type?: string;
-        /** @description Any associated details with the rule evaluation. */
-        details?: string;
-      }[];
-    };
-    /** @description A product affected by the vulnerability detailed in a repository security advisory. */
-    "repository-advisory-vulnerability": {
-      /** @description The name of the package affected by the vulnerability. */
-      package: {
-        ecosystem: components["schemas"]["security-advisory-ecosystems"];
-        /** @description The unique package name within its ecosystem. */
-        name: string | null;
-      } | null;
-      /** @description The range of the package versions affected by the vulnerability. */
-      vulnerable_version_range: string | null;
-      /** @description The package version(s) that resolve the vulnerability. */
-      patched_versions: string | null;
-      /** @description The functions in the package that are affected. */
-      vulnerable_functions: string[] | null;
-    };
-    /** @description A credit given to a user for a repository security advisory. */
-    "repository-advisory-credit": {
-      user: components["schemas"]["simple-user"];
-      type: components["schemas"]["security-advisory-credit-types"];
-      /**
-       * @description The state of the user's acceptance of the credit.
-       * @enum {string}
-       */
-      state: "accepted" | "declined" | "pending";
-    };
-    /** @description A repository security advisory. */
-    "repository-advisory": {
-      /** @description The GitHub Security Advisory ID. */
-      ghsa_id: string;
-      /** @description The Common Vulnerabilities and Exposures (CVE) ID. */
-      cve_id: string | null;
-      /**
-       * Format: uri
-       * @description The API URL for the advisory.
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @description The URL for the advisory.
-       */
-      html_url: string;
-      /** @description A short summary of the advisory. */
-      summary: string;
-      /** @description A detailed description of what the advisory entails. */
-      description: string | null;
-      /**
-       * @description The severity of the advisory.
-       * @enum {string|null}
-       */
-      severity: "critical" | "high" | "medium" | "low" | null;
-      /** @description The author of the advisory. */
-      author: components["schemas"]["simple-user"] | null;
-      /** @description The publisher of the advisory. */
-      publisher: components["schemas"]["simple-user"] | null;
-      identifiers: readonly {
-        /**
-         * @description The type of identifier.
-         * @enum {string}
-         */
-        type: "CVE" | "GHSA";
-        /** @description The identifier value. */
-        value: string;
-      }[];
-      /**
-       * @description The state of the advisory.
-       * @enum {string}
-       */
-      state: "published" | "closed" | "withdrawn" | "draft" | "triage";
-      /**
-       * Format: date-time
-       * @description The date and time of when the advisory was created, in ISO 8601 format.
-       */
-      created_at: string | null;
-      /**
-       * Format: date-time
-       * @description The date and time of when the advisory was last updated, in ISO 8601 format.
-       */
-      updated_at: string | null;
-      /**
-       * Format: date-time
-       * @description The date and time of when the advisory was published, in ISO 8601 format.
-       */
-      published_at: string | null;
-      /**
-       * Format: date-time
-       * @description The date and time of when the advisory was closed, in ISO 8601 format.
-       */
-      closed_at: string | null;
-      /**
-       * Format: date-time
-       * @description The date and time of when the advisory was withdrawn, in ISO 8601 format.
-       */
-      withdrawn_at: string | null;
-      submission: {
-        /** @description Whether a private vulnerability report was accepted by the repository's administrators. */
-        readonly accepted: boolean;
-      } | null;
-      vulnerabilities:
-        | components["schemas"]["repository-advisory-vulnerability"][]
-        | null;
-      cvss: {
-        /** @description The CVSS vector. */
-        vector_string: string | null;
-        /** @description The CVSS score. */
-        score: number | null;
-      } | null;
-      cwes:
-        | readonly {
-            /** @description The Common Weakness Enumeration (CWE) identifier. */
-            cwe_id: string;
-            /** @description The name of the CWE. */
-            name: string;
-          }[]
-        | null;
-      /** @description A list of only the CWE IDs. */
-      cwe_ids: string[] | null;
-      credits:
-        | {
-            /** @description The username of the user credited. */
-            login?: string;
-            type?: components["schemas"]["security-advisory-credit-types"];
-          }[]
-        | null;
-      credits_detailed:
-        | readonly components["schemas"]["repository-advisory-credit"][]
-        | null;
-      /** @description A list of users that collaborate on the advisory. */
-      collaborating_users: components["schemas"]["simple-user"][] | null;
-      /** @description A list of teams that collaborate on the advisory. */
-      collaborating_teams: components["schemas"]["team"][] | null;
-      /** @description A temporary private fork of the advisory's repository for collaborating on a fix. */
-      private_fork: components["schemas"]["simple-repository"] | null;
-    };
-    /**
-     * Team Simple
-     * @description Groups of organization members that gives permissions on specified repositories.
-     */
-    "team-simple": {
-      /**
-       * @description Unique identifier of the team
-       * @example 1
-       */
-      id: number;
-      /** @example MDQ6VGVhbTE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @description URL for the team
-       * @example https://api.github.com/organizations/1/team/1
-       */
-      url: string;
-      /** @example https://api.github.com/organizations/1/team/1/members{/member} */
-      members_url: string;
-      /**
-       * @description Name of the team
-       * @example Justice League
-       */
-      name: string;
-      /**
-       * @description Description of the team
-       * @example A great team.
-       */
-      description: string | null;
-      /**
-       * @description Permission that the team will have for its repositories
-       * @example admin
-       */
-      permission: string;
-      /**
-       * @description The level of privacy this team should have
-       * @example closed
-       */
-      privacy?: string;
-      /**
-       * @description The notification setting the team has set
-       * @example notifications_enabled
-       */
-      notification_setting?: string;
-      /**
-       * Format: uri
-       * @example https://github.com/orgs/rails/teams/core
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/organizations/1/team/1/repos
-       */
-      repositories_url: string;
-      /** @example justice-league */
-      slug: string;
-      /**
-       * @description Distinguished Name (DN) that team maps to within LDAP environment
-       * @example uid=example,ou=users,dc=github,dc=com
-       */
-      ldap_dn?: string;
-    };
-    "actions-billing-usage": {
-      /** @description The sum of the free and paid GitHub Actions minutes used. */
-      total_minutes_used: number;
-      /** @description The total paid GitHub Actions minutes used. */
-      total_paid_minutes_used: number;
-      /** @description The amount of free GitHub Actions minutes available. */
-      included_minutes: number;
-      minutes_used_breakdown: {
-        /** @description Total minutes used on Ubuntu runner machines. */
-        UBUNTU?: number;
-        /** @description Total minutes used on macOS runner machines. */
-        MACOS?: number;
-        /** @description Total minutes used on Windows runner machines. */
-        WINDOWS?: number;
-        /** @description Total minutes used on Ubuntu 4 core runner machines. */
-        ubuntu_4_core?: number;
-        /** @description Total minutes used on Ubuntu 8 core runner machines. */
-        ubuntu_8_core?: number;
-        /** @description Total minutes used on Ubuntu 16 core runner machines. */
-        ubuntu_16_core?: number;
-        /** @description Total minutes used on Ubuntu 32 core runner machines. */
-        ubuntu_32_core?: number;
-        /** @description Total minutes used on Ubuntu 64 core runner machines. */
-        ubuntu_64_core?: number;
-        /** @description Total minutes used on Windows 4 core runner machines. */
-        windows_4_core?: number;
-        /** @description Total minutes used on Windows 8 core runner machines. */
-        windows_8_core?: number;
-        /** @description Total minutes used on Windows 16 core runner machines. */
-        windows_16_core?: number;
-        /** @description Total minutes used on Windows 32 core runner machines. */
-        windows_32_core?: number;
-        /** @description Total minutes used on Windows 64 core runner machines. */
-        windows_64_core?: number;
-        /** @description Total minutes used on macOS 12 core runner machines. */
-        macos_12_core?: number;
-        /** @description Total minutes used on all runner machines. */
-        total?: number;
-      };
-    };
-    "packages-billing-usage": {
-      /** @description Sum of the free and paid storage space (GB) for GitHuub Packages. */
-      total_gigabytes_bandwidth_used: number;
-      /** @description Total paid storage space (GB) for GitHuub Packages. */
-      total_paid_gigabytes_bandwidth_used: number;
-      /** @description Free storage space (GB) for GitHub Packages. */
-      included_gigabytes_bandwidth: number;
-    };
-    "combined-billing-usage": {
-      /** @description Numbers of days left in billing cycle. */
-      days_left_in_billing_cycle: number;
-      /** @description Estimated storage space (GB) used in billing cycle. */
-      estimated_paid_storage_for_month: number;
-      /** @description Estimated sum of free and paid storage space (GB) used in billing cycle. */
-      estimated_storage_for_month: number;
-    };
-    /**
-     * Team Organization
-     * @description Team Organization
-     */
-    "team-organization": {
-      /** @example github */
-      login: string;
-      /** @example 1 */
-      id: number;
-      /** @example MDEyOk9yZ2FuaXphdGlvbjE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/github
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/github/repos
-       */
-      repos_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/github/events
-       */
-      events_url: string;
-      /** @example https://api.github.com/orgs/github/hooks */
-      hooks_url: string;
-      /** @example https://api.github.com/orgs/github/issues */
-      issues_url: string;
-      /** @example https://api.github.com/orgs/github/members{/member} */
-      members_url: string;
-      /** @example https://api.github.com/orgs/github/public_members{/member} */
-      public_members_url: string;
-      /** @example https://github.com/images/error/octocat_happy.gif */
-      avatar_url: string;
-      /** @example A great organization */
-      description: string | null;
-      /** @example github */
-      name?: string;
-      /** @example GitHub */
-      company?: string;
-      /**
-       * Format: uri
-       * @example https://github.com/blog
-       */
-      blog?: string;
-      /** @example San Francisco */
-      location?: string;
-      /**
-       * Format: email
-       * @example octocat@github.com
-       */
-      email?: string;
-      /** @example github */
-      twitter_username?: string | null;
-      /** @example true */
-      is_verified?: boolean;
-      /** @example true */
-      has_organization_projects: boolean;
-      /** @example true */
-      has_repository_projects: boolean;
-      /** @example 2 */
-      public_repos: number;
-      /** @example 1 */
-      public_gists: number;
-      /** @example 20 */
-      followers: number;
-      /** @example 0 */
-      following: number;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat
-       */
-      html_url: string;
-      /**
-       * Format: date-time
-       * @example 2008-01-14T04:33:35Z
-       */
-      created_at: string;
-      /** @example Organization */
-      type: string;
-      /** @example 100 */
-      total_private_repos?: number;
-      /** @example 100 */
-      owned_private_repos?: number;
-      /** @example 81 */
-      private_gists?: number | null;
-      /** @example 10000 */
-      disk_usage?: number | null;
-      /** @example 8 */
-      collaborators?: number | null;
-      /**
-       * Format: email
-       * @example org@example.com
-       */
-      billing_email?: string | null;
-      plan?: {
-        name: string;
-        space: number;
-        private_repos: number;
-        filled_seats?: number;
-        seats?: number;
-      };
-      default_repository_permission?: string | null;
-      /** @example true */
-      members_can_create_repositories?: boolean | null;
-      /** @example true */
-      two_factor_requirement_enabled?: boolean | null;
-      /** @example all */
-      members_allowed_repository_creation_type?: string;
-      /** @example true */
-      members_can_create_public_repositories?: boolean;
-      /** @example true */
-      members_can_create_private_repositories?: boolean;
-      /** @example true */
-      members_can_create_internal_repositories?: boolean;
-      /** @example true */
-      members_can_create_pages?: boolean;
-      /** @example true */
-      members_can_create_public_pages?: boolean;
-      /** @example true */
-      members_can_create_private_pages?: boolean;
-      /** @example false */
-      members_can_fork_private_repositories?: boolean | null;
-      /** @example false */
-      web_commit_signoff_required?: boolean;
-      /** Format: date-time */
-      updated_at: string;
-      /** Format: date-time */
-      archived_at: string | null;
-    };
-    /**
-     * Full Team
-     * @description Groups of organization members that gives permissions on specified repositories.
-     */
-    "team-full": {
-      /**
-       * @description Unique identifier of the team
-       * @example 42
-       */
-      id: number;
-      /** @example MDQ6VGVhbTE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @description URL for the team
-       * @example https://api.github.com/organizations/1/team/1
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/orgs/rails/teams/core
-       */
-      html_url: string;
-      /**
-       * @description Name of the team
-       * @example Developers
-       */
-      name: string;
-      /** @example justice-league */
-      slug: string;
-      /** @example A great team. */
-      description: string | null;
-      /**
-       * @description The level of privacy this team should have
-       * @example closed
-       * @enum {string}
-       */
-      privacy?: "closed" | "secret";
-      /**
-       * @description The notification setting the team has set
-       * @example notifications_enabled
-       * @enum {string}
-       */
-      notification_setting?: "notifications_enabled" | "notifications_disabled";
-      /**
-       * @description Permission that the team will have for its repositories
-       * @example push
-       */
-      permission: string;
-      /** @example https://api.github.com/organizations/1/team/1/members{/member} */
-      members_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/organizations/1/team/1/repos
-       */
-      repositories_url: string;
-      parent?: components["schemas"]["nullable-team-simple"];
-      /** @example 3 */
-      members_count: number;
-      /** @example 10 */
-      repos_count: number;
-      /**
-       * Format: date-time
-       * @example 2017-07-14T16:53:42Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2017-08-17T12:37:15Z
-       */
-      updated_at: string;
-      organization: components["schemas"]["team-organization"];
-      /**
-       * @description Distinguished Name (DN) that team maps to within LDAP environment
-       * @example uid=example,ou=users,dc=github,dc=com
-       */
-      ldap_dn?: string;
-    };
-    /**
-     * Team Discussion
-     * @description A team discussion is a persistent record of a free-form conversation within a team.
-     */
-    "team-discussion": {
-      author: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description The main text of the discussion.
-       * @example Please suggest improvements to our workflow in comments.
-       */
-      body: string;
-      /** @example <p>Hi! This is an area for us to collaborate as a team</p> */
-      body_html: string;
-      /**
-       * @description The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.
-       * @example 0307116bbf7ced493b8d8a346c650b71
-       */
-      body_version: string;
-      /** @example 0 */
-      comments_count: number;
-      /**
-       * Format: uri
-       * @example https://api.github.com/organizations/1/team/2343027/discussions/1/comments
-       */
-      comments_url: string;
-      /**
-       * Format: date-time
-       * @example 2018-01-25T18:56:31Z
-       */
-      created_at: string;
-      /** Format: date-time */
-      last_edited_at: string | null;
-      /**
-       * Format: uri
-       * @example https://github.com/orgs/github/teams/justice-league/discussions/1
-       */
-      html_url: string;
-      /** @example MDE0OlRlYW1EaXNjdXNzaW9uMQ== */
-      node_id: string;
-      /**
-       * @description The unique sequence number of a team discussion.
-       * @example 42
-       */
-      number: number;
-      /**
-       * @description Whether or not this discussion should be pinned for easy retrieval.
-       * @example true
-       */
-      pinned: boolean;
-      /**
-       * @description Whether or not this discussion should be restricted to team members and organization administrators.
-       * @example true
-       */
-      private: boolean;
-      /**
-       * Format: uri
-       * @example https://api.github.com/organizations/1/team/2343027
-       */
-      team_url: string;
-      /**
-       * @description The title of the discussion.
-       * @example How can we improve our workflow?
-       */
-      title: string;
-      /**
-       * Format: date-time
-       * @example 2018-01-25T18:56:31Z
-       */
-      updated_at: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/organizations/1/team/2343027/discussions/1
-       */
-      url: string;
-      reactions?: components["schemas"]["reaction-rollup"];
-    };
-    /**
-     * Team Discussion Comment
-     * @description A reply to a discussion within a team.
-     */
-    "team-discussion-comment": {
-      author: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description The main text of the comment.
-       * @example I agree with this suggestion.
-       */
-      body: string;
-      /** @example <p>Do you like apples?</p> */
-      body_html: string;
-      /**
-       * @description The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.
-       * @example 0307116bbf7ced493b8d8a346c650b71
-       */
-      body_version: string;
-      /**
-       * Format: date-time
-       * @example 2018-01-15T23:53:58Z
-       */
-      created_at: string;
-      /** Format: date-time */
-      last_edited_at: string | null;
-      /**
-       * Format: uri
-       * @example https://api.github.com/organizations/1/team/2403582/discussions/1
-       */
-      discussion_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1
-       */
-      html_url: string;
-      /** @example MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE= */
-      node_id: string;
-      /**
-       * @description The unique sequence number of a team discussion comment.
-       * @example 42
-       */
-      number: number;
-      /**
-       * Format: date-time
-       * @example 2018-01-15T23:53:58Z
-       */
-      updated_at: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/organizations/1/team/2403582/discussions/1/comments/1
-       */
-      url: string;
-      reactions?: components["schemas"]["reaction-rollup"];
-    };
-    /**
-     * Reaction
-     * @description Reactions to conversations provide a way to help people express their feelings more simply and effectively.
-     */
-    reaction: {
-      /** @example 1 */
-      id: number;
-      /** @example MDg6UmVhY3Rpb24x */
-      node_id: string;
-      user: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description The reaction to use
-       * @example heart
-       * @enum {string}
-       */
-      content:
-        | "+1"
-        | "-1"
-        | "laugh"
-        | "confused"
-        | "heart"
-        | "hooray"
-        | "rocket"
-        | "eyes";
-      /**
-       * Format: date-time
-       * @example 2016-05-20T20:09:31Z
-       */
-      created_at: string;
-    };
-    /**
-     * Team Membership
-     * @description Team Membership
-     */
-    "team-membership": {
-      /** Format: uri */
-      url: string;
-      /**
-       * @description The role of the user in the team.
-       * @default member
-       * @example member
-       * @enum {string}
-       */
-      role: "member" | "maintainer";
-      /**
-       * @description The state of the user's membership in the team.
-       * @enum {string}
-       */
-      state: "active" | "pending";
-    };
-    /**
-     * Team Project
-     * @description A team's access to a project.
-     */
-    "team-project": {
-      owner_url: string;
-      url: string;
-      html_url: string;
-      columns_url: string;
-      id: number;
-      node_id: string;
-      name: string;
-      body: string | null;
-      number: number;
-      state: string;
-      creator: components["schemas"]["simple-user"];
-      created_at: string;
-      updated_at: string;
-      /** @description The organization permission for this project. Only present when owner is an organization. */
-      organization_permission?: string;
-      /** @description Whether the project is private or not. Only present when owner is an organization. */
-      private?: boolean;
-      permissions: {
-        read: boolean;
-        write: boolean;
-        admin: boolean;
-      };
-    };
-    /**
-     * Team Repository
-     * @description A team's access to a repository.
-     */
-    "team-repository": {
-      /**
-       * @description Unique identifier of the repository
-       * @example 42
-       */
-      id: number;
-      /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */
-      node_id: string;
-      /**
-       * @description The name of the repository.
-       * @example Team Environment
-       */
-      name: string;
-      /** @example octocat/Hello-World */
-      full_name: string;
-      license: components["schemas"]["nullable-license-simple"];
-      forks: number;
-      permissions?: {
-        admin: boolean;
-        pull: boolean;
-        triage?: boolean;
-        push: boolean;
-        maintain?: boolean;
-      };
-      /** @example admin */
-      role_name?: string;
-      owner: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description Whether the repository is private or public.
-       * @default false
-       */
-      private: boolean;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World
-       */
-      html_url: string;
-      /** @example This your first repo! */
-      description: string | null;
-      fork: boolean;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World
-       */
-      url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */
-      archive_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */
-      assignees_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */
-      blobs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */
-      branches_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */
-      collaborators_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */
-      comments_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */
-      commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */
-      compare_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */
-      contents_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/contributors
-       */
-      contributors_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/deployments
-       */
-      deployments_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/downloads
-       */
-      downloads_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/events
-       */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/forks
-       */
-      forks_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */
-      git_commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */
-      git_refs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */
-      git_tags_url: string;
-      /** @example git:github.com/octocat/Hello-World.git */
-      git_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */
-      issue_comment_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */
-      issue_events_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */
-      issues_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */
-      keys_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */
-      labels_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/languages
-       */
-      languages_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/merges
-       */
-      merges_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */
-      milestones_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */
-      notifications_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */
-      pulls_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */
-      releases_url: string;
-      /** @example git@github.com:octocat/Hello-World.git */
-      ssh_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/stargazers
-       */
-      stargazers_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */
-      statuses_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscribers
-       */
-      subscribers_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscription
-       */
-      subscription_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/tags
-       */
-      tags_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/teams
-       */
-      teams_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */
-      trees_url: string;
-      /** @example https://github.com/octocat/Hello-World.git */
-      clone_url: string;
-      /**
-       * Format: uri
-       * @example git:git.example.com/octocat/Hello-World
-       */
-      mirror_url: string | null;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/hooks
-       */
-      hooks_url: string;
-      /**
-       * Format: uri
-       * @example https://svn.github.com/octocat/Hello-World
-       */
-      svn_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com
-       */
-      homepage: string | null;
-      language: string | null;
-      /** @example 9 */
-      forks_count: number;
-      /** @example 80 */
-      stargazers_count: number;
-      /** @example 80 */
-      watchers_count: number;
-      /** @example 108 */
-      size: number;
-      /**
-       * @description The default branch of the repository.
-       * @example master
-       */
-      default_branch: string;
-      /** @example 0 */
-      open_issues_count: number;
-      /**
-       * @description Whether this repository acts as a template that can be used to generate new repositories.
-       * @default false
-       * @example true
-       */
-      is_template?: boolean;
-      topics?: string[];
-      /**
-       * @description Whether issues are enabled.
-       * @default true
-       * @example true
-       */
-      has_issues: boolean;
-      /**
-       * @description Whether projects are enabled.
-       * @default true
-       * @example true
-       */
-      has_projects: boolean;
-      /**
-       * @description Whether the wiki is enabled.
-       * @default true
-       * @example true
-       */
-      has_wiki: boolean;
-      has_pages: boolean;
-      /**
-       * @description Whether downloads are enabled.
-       * @default true
-       * @example true
-       */
-      has_downloads: boolean;
-      /**
-       * @description Whether the repository is archived.
-       * @default false
-       */
-      archived: boolean;
-      /** @description Returns whether or not this repository disabled. */
-      disabled: boolean;
-      /**
-       * @description The repository visibility: public, private, or internal.
-       * @default public
-       */
-      visibility?: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:06:43Z
-       */
-      pushed_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      created_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:14:43Z
-       */
-      updated_at: string | null;
-      /**
-       * @description Whether to allow rebase merges for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_rebase_merge?: boolean;
-      temp_clone_token?: string;
-      /**
-       * @description Whether to allow squash merges for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_squash_merge?: boolean;
-      /**
-       * @description Whether to allow Auto-merge to be used on pull requests.
-       * @default false
-       * @example false
-       */
-      allow_auto_merge?: boolean;
-      /**
-       * @description Whether to delete head branches when pull requests are merged
-       * @default false
-       * @example false
-       */
-      delete_branch_on_merge?: boolean;
-      /**
-       * @description Whether to allow merge commits for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_merge_commit?: boolean;
-      /**
-       * @description Whether to allow forking this repo
-       * @default false
-       * @example false
-       */
-      allow_forking?: boolean;
-      /**
-       * @description Whether to require contributors to sign off on web-based commits
-       * @default false
-       * @example false
-       */
-      web_commit_signoff_required?: boolean;
-      subscribers_count?: number;
-      network_count?: number;
-      open_issues: number;
-      watchers: number;
-      master_branch?: string;
-    };
-    /**
-     * Project Card
-     * @description Project cards represent a scope of work.
-     */
-    "project-card": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/projects/columns/cards/1478
-       */
-      url: string;
-      /**
-       * @description The project card's ID
-       * @example 42
-       */
-      id: number;
-      /** @example MDExOlByb2plY3RDYXJkMTQ3OA== */
-      node_id: string;
-      /** @example Add payload for delete Project column */
-      note: string | null;
-      creator: components["schemas"]["nullable-simple-user"];
-      /**
-       * Format: date-time
-       * @example 2016-09-05T14:21:06Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2016-09-05T14:20:22Z
-       */
-      updated_at: string;
-      /**
-       * @description Whether or not the card is archived
-       * @example false
-       */
-      archived?: boolean;
-      column_name?: string;
-      project_id?: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/projects/columns/367
-       */
-      column_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/api-playground/projects-test/issues/3
-       */
-      content_url?: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/projects/120
-       */
-      project_url: string;
-    };
-    /**
-     * Project Column
-     * @description Project columns contain cards of work.
-     */
-    "project-column": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/projects/columns/367
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/projects/120
-       */
-      project_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/projects/columns/367/cards
-       */
-      cards_url: string;
-      /**
-       * @description The unique identifier of the project column
-       * @example 42
-       */
-      id: number;
-      /** @example MDEzOlByb2plY3RDb2x1bW4zNjc= */
-      node_id: string;
-      /**
-       * @description Name of the project column
-       * @example Remaining tasks
-       */
-      name: string;
-      /**
-       * Format: date-time
-       * @example 2016-09-05T14:18:44Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2016-09-05T14:22:28Z
-       */
-      updated_at: string;
-    };
-    /**
-     * Project Collaborator Permission
-     * @description Project Collaborator Permission
-     */
-    "project-collaborator-permission": {
-      permission: string;
-      user: components["schemas"]["nullable-simple-user"];
-    };
-    /** Rate Limit */
-    "rate-limit": {
-      limit: number;
-      remaining: number;
-      reset: number;
-      used: number;
-    };
-    /**
-     * Rate Limit Overview
-     * @description Rate Limit Overview
-     */
-    "rate-limit-overview": {
-      resources: {
-        core: components["schemas"]["rate-limit"];
-        graphql?: components["schemas"]["rate-limit"];
-        search: components["schemas"]["rate-limit"];
-        code_search?: components["schemas"]["rate-limit"];
-        source_import?: components["schemas"]["rate-limit"];
-        integration_manifest?: components["schemas"]["rate-limit"];
-        code_scanning_upload?: components["schemas"]["rate-limit"];
-        actions_runner_registration?: components["schemas"]["rate-limit"];
-        scim?: components["schemas"]["rate-limit"];
-        dependency_snapshots?: components["schemas"]["rate-limit"];
-      };
-      rate: components["schemas"]["rate-limit"];
-    };
-    /**
-     * Repository
-     * @description A repository on GitHub.
-     */
-    "nullable-repository": {
-      /**
-       * @description Unique identifier of the repository
-       * @example 42
-       */
-      id: number;
-      /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */
-      node_id: string;
-      /**
-       * @description The name of the repository.
-       * @example Team Environment
-       */
-      name: string;
-      /** @example octocat/Hello-World */
-      full_name: string;
-      license: components["schemas"]["nullable-license-simple"];
-      organization?: components["schemas"]["nullable-simple-user"];
-      forks: number;
-      permissions?: {
-        admin: boolean;
-        pull: boolean;
-        triage?: boolean;
-        push: boolean;
-        maintain?: boolean;
-      };
-      owner: components["schemas"]["simple-user"];
-      /**
-       * @description Whether the repository is private or public.
-       * @default false
-       */
-      private: boolean;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World
-       */
-      html_url: string;
-      /** @example This your first repo! */
-      description: string | null;
-      fork: boolean;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World
-       */
-      url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */
-      archive_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */
-      assignees_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */
-      blobs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */
-      branches_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */
-      collaborators_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */
-      comments_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */
-      commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */
-      compare_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */
-      contents_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/contributors
-       */
-      contributors_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/deployments
-       */
-      deployments_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/downloads
-       */
-      downloads_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/events
-       */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/forks
-       */
-      forks_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */
-      git_commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */
-      git_refs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */
-      git_tags_url: string;
-      /** @example git:github.com/octocat/Hello-World.git */
-      git_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */
-      issue_comment_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */
-      issue_events_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */
-      issues_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */
-      keys_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */
-      labels_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/languages
-       */
-      languages_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/merges
-       */
-      merges_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */
-      milestones_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */
-      notifications_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */
-      pulls_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */
-      releases_url: string;
-      /** @example git@github.com:octocat/Hello-World.git */
-      ssh_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/stargazers
-       */
-      stargazers_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */
-      statuses_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscribers
-       */
-      subscribers_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscription
-       */
-      subscription_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/tags
-       */
-      tags_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/teams
-       */
-      teams_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */
-      trees_url: string;
-      /** @example https://github.com/octocat/Hello-World.git */
-      clone_url: string;
-      /**
-       * Format: uri
-       * @example git:git.example.com/octocat/Hello-World
-       */
-      mirror_url: string | null;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/hooks
-       */
-      hooks_url: string;
-      /**
-       * Format: uri
-       * @example https://svn.github.com/octocat/Hello-World
-       */
-      svn_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com
-       */
-      homepage: string | null;
-      language: string | null;
-      /** @example 9 */
-      forks_count: number;
-      /** @example 80 */
-      stargazers_count: number;
-      /** @example 80 */
-      watchers_count: number;
-      /**
-       * @description The size of the repository. Size is calculated hourly. When a repository is initially created, the size is 0.
-       * @example 108
-       */
-      size: number;
-      /**
-       * @description The default branch of the repository.
-       * @example master
-       */
-      default_branch: string;
-      /** @example 0 */
-      open_issues_count: number;
-      /**
-       * @description Whether this repository acts as a template that can be used to generate new repositories.
-       * @default false
-       * @example true
-       */
-      is_template?: boolean;
-      topics?: string[];
-      /**
-       * @description Whether issues are enabled.
-       * @default true
-       * @example true
-       */
-      has_issues: boolean;
-      /**
-       * @description Whether projects are enabled.
-       * @default true
-       * @example true
-       */
-      has_projects: boolean;
-      /**
-       * @description Whether the wiki is enabled.
-       * @default true
-       * @example true
-       */
-      has_wiki: boolean;
-      has_pages: boolean;
-      /**
-       * @deprecated
-       * @description Whether downloads are enabled.
-       * @default true
-       * @example true
-       */
-      has_downloads: boolean;
-      /**
-       * @description Whether discussions are enabled.
-       * @default false
-       * @example true
-       */
-      has_discussions?: boolean;
-      /**
-       * @description Whether the repository is archived.
-       * @default false
-       */
-      archived: boolean;
-      /** @description Returns whether or not this repository disabled. */
-      disabled: boolean;
-      /**
-       * @description The repository visibility: public, private, or internal.
-       * @default public
-       */
-      visibility?: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:06:43Z
-       */
-      pushed_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      created_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:14:43Z
-       */
-      updated_at: string | null;
-      /**
-       * @description Whether to allow rebase merges for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_rebase_merge?: boolean;
-      template_repository?: {
-        id?: number;
-        node_id?: string;
-        name?: string;
-        full_name?: string;
-        owner?: {
-          login?: string;
-          id?: number;
-          node_id?: string;
-          avatar_url?: string;
-          gravatar_id?: string;
-          url?: string;
-          html_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          starred_url?: string;
-          subscriptions_url?: string;
-          organizations_url?: string;
-          repos_url?: string;
-          events_url?: string;
-          received_events_url?: string;
-          type?: string;
-          site_admin?: boolean;
-        };
-        private?: boolean;
-        html_url?: string;
-        description?: string;
-        fork?: boolean;
-        url?: string;
-        archive_url?: string;
-        assignees_url?: string;
-        blobs_url?: string;
-        branches_url?: string;
-        collaborators_url?: string;
-        comments_url?: string;
-        commits_url?: string;
-        compare_url?: string;
-        contents_url?: string;
-        contributors_url?: string;
-        deployments_url?: string;
-        downloads_url?: string;
-        events_url?: string;
-        forks_url?: string;
-        git_commits_url?: string;
-        git_refs_url?: string;
-        git_tags_url?: string;
-        git_url?: string;
-        issue_comment_url?: string;
-        issue_events_url?: string;
-        issues_url?: string;
-        keys_url?: string;
-        labels_url?: string;
-        languages_url?: string;
-        merges_url?: string;
-        milestones_url?: string;
-        notifications_url?: string;
-        pulls_url?: string;
-        releases_url?: string;
-        ssh_url?: string;
-        stargazers_url?: string;
-        statuses_url?: string;
-        subscribers_url?: string;
-        subscription_url?: string;
-        tags_url?: string;
-        teams_url?: string;
-        trees_url?: string;
-        clone_url?: string;
-        mirror_url?: string;
-        hooks_url?: string;
-        svn_url?: string;
-        homepage?: string;
-        language?: string;
-        forks_count?: number;
-        stargazers_count?: number;
-        watchers_count?: number;
-        size?: number;
-        default_branch?: string;
-        open_issues_count?: number;
-        is_template?: boolean;
-        topics?: string[];
-        has_issues?: boolean;
-        has_projects?: boolean;
-        has_wiki?: boolean;
-        has_pages?: boolean;
-        has_downloads?: boolean;
-        archived?: boolean;
-        disabled?: boolean;
-        visibility?: string;
-        pushed_at?: string;
-        created_at?: string;
-        updated_at?: string;
-        permissions?: {
-          admin?: boolean;
-          maintain?: boolean;
-          push?: boolean;
-          triage?: boolean;
-          pull?: boolean;
-        };
-        allow_rebase_merge?: boolean;
-        temp_clone_token?: string;
-        allow_squash_merge?: boolean;
-        allow_auto_merge?: boolean;
-        delete_branch_on_merge?: boolean;
-        allow_update_branch?: boolean;
-        use_squash_pr_title_as_default?: boolean;
-        /**
-         * @description The default value for a squash merge commit title:
-         *
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-         * @enum {string}
-         */
-        squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-        /**
-         * @description The default value for a squash merge commit message:
-         *
-         * - `PR_BODY` - default to the pull request's body.
-         * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-        /**
-         * @description The default value for a merge commit title.
-         *
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-         * @enum {string}
-         */
-        merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-        /**
-         * @description The default value for a merge commit message.
-         *
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `PR_BODY` - default to the pull request's body.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-        allow_merge_commit?: boolean;
-        subscribers_count?: number;
-        network_count?: number;
-      } | null;
-      temp_clone_token?: string;
-      /**
-       * @description Whether to allow squash merges for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_squash_merge?: boolean;
-      /**
-       * @description Whether to allow Auto-merge to be used on pull requests.
-       * @default false
-       * @example false
-       */
-      allow_auto_merge?: boolean;
-      /**
-       * @description Whether to delete head branches when pull requests are merged
-       * @default false
-       * @example false
-       */
-      delete_branch_on_merge?: boolean;
-      /**
-       * @description Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging.
-       * @default false
-       * @example false
-       */
-      allow_update_branch?: boolean;
-      /**
-       * @deprecated
-       * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-       * @default false
-       */
-      use_squash_pr_title_as_default?: boolean;
-      /**
-       * @description The default value for a squash merge commit title:
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-       * @enum {string}
-       */
-      squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-      /**
-       * @description The default value for a squash merge commit message:
-       *
-       * - `PR_BODY` - default to the pull request's body.
-       * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-       * - `BLANK` - default to a blank commit message.
-       * @enum {string}
-       */
-      squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-      /**
-       * @description The default value for a merge commit title.
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-       * @enum {string}
-       */
-      merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-      /**
-       * @description The default value for a merge commit message.
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `PR_BODY` - default to the pull request's body.
-       * - `BLANK` - default to a blank commit message.
-       * @enum {string}
-       */
-      merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-      /**
-       * @description Whether to allow merge commits for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_merge_commit?: boolean;
-      /** @description Whether to allow forking this repo */
-      allow_forking?: boolean;
-      /**
-       * @description Whether to require contributors to sign off on web-based commits
-       * @default false
-       */
-      web_commit_signoff_required?: boolean;
-      subscribers_count?: number;
-      network_count?: number;
-      open_issues: number;
-      watchers: number;
-      master_branch?: string;
-      /** @example "2020-07-09T00:17:42Z" */
-      starred_at?: string;
-      /** @description Whether anonymous git access is enabled for this repository */
-      anonymous_access_enabled?: boolean;
-    } | null;
-    /**
-     * Code Of Conduct Simple
-     * @description Code of Conduct Simple
-     */
-    "code-of-conduct-simple": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/github/docs/community/code_of_conduct
-       */
-      url: string;
-      /** @example citizen_code_of_conduct */
-      key: string;
-      /** @example Citizen Code of Conduct */
-      name: string;
-      /**
-       * Format: uri
-       * @example https://github.com/github/docs/blob/main/CODE_OF_CONDUCT.md
-       */
-      html_url: string | null;
-    };
-    /**
-     * Full Repository
-     * @description Full Repository
-     */
-    "full-repository": {
-      /** @example 1296269 */
-      id: number;
-      /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */
-      node_id: string;
-      /** @example Hello-World */
-      name: string;
-      /** @example octocat/Hello-World */
-      full_name: string;
-      owner: components["schemas"]["simple-user"];
-      private: boolean;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World
-       */
-      html_url: string;
-      /** @example This your first repo! */
-      description: string | null;
-      fork: boolean;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World
-       */
-      url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */
-      archive_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */
-      assignees_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */
-      blobs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */
-      branches_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */
-      collaborators_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */
-      comments_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */
-      commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */
-      compare_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */
-      contents_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/contributors
-       */
-      contributors_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/deployments
-       */
-      deployments_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/downloads
-       */
-      downloads_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/events
-       */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/forks
-       */
-      forks_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */
-      git_commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */
-      git_refs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */
-      git_tags_url: string;
-      /** @example git:github.com/octocat/Hello-World.git */
-      git_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */
-      issue_comment_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */
-      issue_events_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */
-      issues_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */
-      keys_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */
-      labels_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/languages
-       */
-      languages_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/merges
-       */
-      merges_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */
-      milestones_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */
-      notifications_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */
-      pulls_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */
-      releases_url: string;
-      /** @example git@github.com:octocat/Hello-World.git */
-      ssh_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/stargazers
-       */
-      stargazers_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */
-      statuses_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscribers
-       */
-      subscribers_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscription
-       */
-      subscription_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/tags
-       */
-      tags_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/teams
-       */
-      teams_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */
-      trees_url: string;
-      /** @example https://github.com/octocat/Hello-World.git */
-      clone_url: string;
-      /**
-       * Format: uri
-       * @example git:git.example.com/octocat/Hello-World
-       */
-      mirror_url: string | null;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/hooks
-       */
-      hooks_url: string;
-      /**
-       * Format: uri
-       * @example https://svn.github.com/octocat/Hello-World
-       */
-      svn_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com
-       */
-      homepage: string | null;
-      language: string | null;
-      /** @example 9 */
-      forks_count: number;
-      /** @example 80 */
-      stargazers_count: number;
-      /** @example 80 */
-      watchers_count: number;
-      /**
-       * @description The size of the repository. Size is calculated hourly. When a repository is initially created, the size is 0.
-       * @example 108
-       */
-      size: number;
-      /** @example master */
-      default_branch: string;
-      /** @example 0 */
-      open_issues_count: number;
-      /** @example true */
-      is_template?: boolean;
-      /**
-       * @example [
-       *   "octocat",
-       *   "atom",
-       *   "electron",
-       *   "API"
-       * ]
-       */
-      topics?: string[];
-      /** @example true */
-      has_issues: boolean;
-      /** @example true */
-      has_projects: boolean;
-      /** @example true */
-      has_wiki: boolean;
-      has_pages: boolean;
-      /** @example true */
-      has_downloads?: boolean;
-      /** @example true */
-      has_discussions: boolean;
-      archived: boolean;
-      /** @description Returns whether or not this repository disabled. */
-      disabled: boolean;
-      /**
-       * @description The repository visibility: public, private, or internal.
-       * @example public
-       */
-      visibility?: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:06:43Z
-       */
-      pushed_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:14:43Z
-       */
-      updated_at: string;
-      permissions?: {
-        admin: boolean;
-        maintain?: boolean;
-        push: boolean;
-        triage?: boolean;
-        pull: boolean;
-      };
-      /** @example true */
-      allow_rebase_merge?: boolean;
-      template_repository?: components["schemas"]["nullable-repository"];
-      temp_clone_token?: string | null;
-      /** @example true */
-      allow_squash_merge?: boolean;
-      /** @example false */
-      allow_auto_merge?: boolean;
-      /** @example false */
-      delete_branch_on_merge?: boolean;
-      /** @example true */
-      allow_merge_commit?: boolean;
-      /** @example true */
-      allow_update_branch?: boolean;
-      /** @example false */
-      use_squash_pr_title_as_default?: boolean;
-      /**
-       * @description The default value for a squash merge commit title:
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-       * @example PR_TITLE
-       * @enum {string}
-       */
-      squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-      /**
-       * @description The default value for a squash merge commit message:
-       *
-       * - `PR_BODY` - default to the pull request's body.
-       * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-       * - `BLANK` - default to a blank commit message.
-       * @example PR_BODY
-       * @enum {string}
-       */
-      squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-      /**
-       * @description The default value for a merge commit title.
-       *
-       *   - `PR_TITLE` - default to the pull request's title.
-       *   - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-       * @example PR_TITLE
-       * @enum {string}
-       */
-      merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-      /**
-       * @description The default value for a merge commit message.
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `PR_BODY` - default to the pull request's body.
-       * - `BLANK` - default to a blank commit message.
-       * @example PR_BODY
-       * @enum {string}
-       */
-      merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-      /** @example true */
-      allow_forking?: boolean;
-      /** @example false */
-      web_commit_signoff_required?: boolean;
-      /** @example 42 */
-      subscribers_count: number;
-      /** @example 0 */
-      network_count: number;
-      license: components["schemas"]["nullable-license-simple"];
-      organization?: components["schemas"]["nullable-simple-user"];
-      parent?: components["schemas"]["repository"];
-      source?: components["schemas"]["repository"];
-      forks: number;
-      master_branch?: string;
-      open_issues: number;
-      watchers: number;
-      /**
-       * @description Whether anonymous git access is allowed.
-       * @default true
-       */
-      anonymous_access_enabled?: boolean;
-      code_of_conduct?: components["schemas"]["code-of-conduct-simple"];
-      security_and_analysis?: components["schemas"]["security-and-analysis"];
-    };
-    /**
-     * Artifact
-     * @description An artifact
-     */
-    artifact: {
-      /** @example 5 */
-      id: number;
-      /** @example MDEwOkNoZWNrU3VpdGU1 */
-      node_id: string;
-      /**
-       * @description The name of the artifact.
-       * @example AdventureWorks.Framework
-       */
-      name: string;
-      /**
-       * @description The size in bytes of the artifact.
-       * @example 12345
-       */
-      size_in_bytes: number;
-      /** @example https://api.github.com/repos/github/hello-world/actions/artifacts/5 */
-      url: string;
-      /** @example https://api.github.com/repos/github/hello-world/actions/artifacts/5/zip */
-      archive_download_url: string;
-      /** @description Whether or not the artifact has expired. */
-      expired: boolean;
-      /** Format: date-time */
-      created_at: string | null;
-      /** Format: date-time */
-      expires_at: string | null;
-      /** Format: date-time */
-      updated_at: string | null;
-      workflow_run?: {
-        /** @example 10 */
-        id?: number;
-        /** @example 42 */
-        repository_id?: number;
-        /** @example 42 */
-        head_repository_id?: number;
-        /** @example main */
-        head_branch?: string;
-        /** @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d */
-        head_sha?: string;
-      } | null;
-    };
-    /**
-     * Repository actions caches
-     * @description Repository actions caches
-     */
-    "actions-cache-list": {
-      /**
-       * @description Total number of caches
-       * @example 2
-       */
-      total_count: number;
-      /** @description Array of caches */
-      actions_caches: {
-        /** @example 2 */
-        id?: number;
-        /** @example refs/heads/main */
-        ref?: string;
-        /** @example Linux-node-958aff96db2d75d67787d1e634ae70b659de937b */
-        key?: string;
-        /** @example 73885106f58cc52a7df9ec4d4a5622a5614813162cb516c759a30af6bf56e6f0 */
-        version?: string;
-        /**
-         * Format: date-time
-         * @example 2019-01-24T22:45:36.000Z
-         */
-        last_accessed_at?: string;
-        /**
-         * Format: date-time
-         * @example 2019-01-24T22:45:36.000Z
-         */
-        created_at?: string;
-        /** @example 1024 */
-        size_in_bytes?: number;
-      }[];
-    };
-    /**
-     * Job
-     * @description Information of a job execution in a workflow run
-     */
-    job: {
-      /**
-       * @description The id of the job.
-       * @example 21
-       */
-      id: number;
-      /**
-       * @description The id of the associated workflow run.
-       * @example 5
-       */
-      run_id: number;
-      /** @example https://api.github.com/repos/github/hello-world/actions/runs/5 */
-      run_url: string;
-      /**
-       * @description Attempt number of the associated workflow run, 1 for first attempt and higher if the workflow was re-run.
-       * @example 1
-       */
-      run_attempt?: number;
-      /** @example MDg6Q2hlY2tSdW40 */
-      node_id: string;
-      /**
-       * @description The SHA of the commit that is being run.
-       * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d
-       */
-      head_sha: string;
-      /** @example https://api.github.com/repos/github/hello-world/actions/jobs/21 */
-      url: string;
-      /** @example https://github.com/github/hello-world/runs/4 */
-      html_url: string | null;
-      /**
-       * @description The phase of the lifecycle that the job is currently in.
-       * @example queued
-       * @enum {string}
-       */
-      status: "queued" | "in_progress" | "completed" | "waiting";
-      /**
-       * @description The outcome of the job.
-       * @example success
-       * @enum {string|null}
-       */
-      conclusion:
-        | "success"
-        | "failure"
-        | "neutral"
-        | "cancelled"
-        | "skipped"
-        | "timed_out"
-        | "action_required"
-        | null;
-      /**
-       * Format: date-time
-       * @description The time that the job created, in ISO 8601 format.
-       * @example 2019-08-08T08:00:00-07:00
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @description The time that the job started, in ISO 8601 format.
-       * @example 2019-08-08T08:00:00-07:00
-       */
-      started_at: string;
-      /**
-       * Format: date-time
-       * @description The time that the job finished, in ISO 8601 format.
-       * @example 2019-08-08T08:00:00-07:00
-       */
-      completed_at: string | null;
-      /**
-       * @description The name of the job.
-       * @example test-coverage
-       */
-      name: string;
-      /** @description Steps in this job. */
-      steps?: {
-        /**
-         * @description The phase of the lifecycle that the job is currently in.
-         * @example queued
-         * @enum {string}
-         */
-        status: "queued" | "in_progress" | "completed";
-        /**
-         * @description The outcome of the job.
-         * @example success
-         */
-        conclusion: string | null;
-        /**
-         * @description The name of the job.
-         * @example test-coverage
-         */
-        name: string;
-        /** @example 1 */
-        number: number;
-        /**
-         * Format: date-time
-         * @description The time that the step started, in ISO 8601 format.
-         * @example 2019-08-08T08:00:00-07:00
-         */
-        started_at?: string | null;
-        /**
-         * Format: date-time
-         * @description The time that the job finished, in ISO 8601 format.
-         * @example 2019-08-08T08:00:00-07:00
-         */
-        completed_at?: string | null;
-      }[];
-      /** @example https://api.github.com/repos/github/hello-world/check-runs/4 */
-      check_run_url: string;
-      /**
-       * @description Labels for the workflow job. Specified by the "runs_on" attribute in the action's workflow file.
-       * @example [
-       *   "self-hosted",
-       *   "foo",
-       *   "bar"
-       * ]
-       */
-      labels: string[];
-      /**
-       * @description The ID of the runner to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.)
-       * @example 1
-       */
-      runner_id: number | null;
-      /**
-       * @description The name of the runner to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.)
-       * @example my runner
-       */
-      runner_name: string | null;
-      /**
-       * @description The ID of the runner group to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.)
-       * @example 2
-       */
-      runner_group_id: number | null;
-      /**
-       * @description The name of the runner group to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.)
-       * @example my runner group
-       */
-      runner_group_name: string | null;
-      /**
-       * @description The name of the workflow.
-       * @example Build
-       */
-      workflow_name: string | null;
-      /**
-       * @description The name of the current branch.
-       * @example main
-       */
-      head_branch: string | null;
-    };
-    /**
-     * Actions OIDC subject customization for a repository
-     * @description Actions OIDC subject customization for a repository
-     */
-    "oidc-custom-sub-repo": {
-      /** @description Whether to use the default template or not. If `true`, the `include_claim_keys` field is ignored. */
-      use_default: boolean;
-      /** @description Array of unique strings. Each claim key can only contain alphanumeric characters and underscores. */
-      include_claim_keys?: string[];
-    };
-    /**
-     * Actions Secret
-     * @description Set secrets for GitHub Actions.
-     */
-    "actions-secret": {
-      /**
-       * @description The name of the secret.
-       * @example SECRET_TOKEN
-       */
-      name: string;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-    };
-    /** Actions Variable */
-    "actions-variable": {
-      /**
-       * @description The name of the variable.
-       * @example USERNAME
-       */
-      name: string;
-      /**
-       * @description The value of the variable.
-       * @example octocat
-       */
-      value: string;
-      /**
-       * Format: date-time
-       * @description The date and time at which the variable was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ.
-       * @example 2019-01-24T22:45:36.000Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @description The date and time at which the variable was last updated, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ.
-       * @example 2019-01-24T22:45:36.000Z
-       */
-      updated_at: string;
-    };
-    /** @description Whether GitHub Actions is enabled on the repository. */
-    "actions-enabled": boolean;
-    "actions-repository-permissions": {
-      enabled: components["schemas"]["actions-enabled"];
-      allowed_actions?: components["schemas"]["allowed-actions"];
-      selected_actions_url?: components["schemas"]["selected-actions-url"];
-    };
-    "actions-workflow-access-to-repository": {
-      /**
-       * @description Defines the level of access that workflows outside of the repository have to actions and reusable workflows within the
-       * repository.
-       *
-       * `none` means the access is only possible from workflows in this repository. `user` level access allows sharing across user owned private repos only. `organization` level access allows sharing across the organization.
-       * @enum {string}
-       */
-      access_level: "none" | "user" | "organization";
-    };
-    /**
-     * Referenced workflow
-     * @description A workflow referenced/reused by the initial caller workflow
-     */
-    "referenced-workflow": {
-      path: string;
-      sha: string;
-      ref?: string;
-    };
-    /** Pull Request Minimal */
-    "pull-request-minimal": {
-      id: number;
-      number: number;
-      url: string;
-      head: {
-        ref: string;
-        sha: string;
-        repo: {
-          id: number;
-          url: string;
-          name: string;
-        };
-      };
-      base: {
-        ref: string;
-        sha: string;
-        repo: {
-          id: number;
-          url: string;
-          name: string;
-        };
-      };
-    };
-    /**
-     * Simple Commit
-     * @description A commit.
-     */
-    "nullable-simple-commit": {
-      /**
-       * @description SHA for the commit
-       * @example 7638417db6d59f3c431d3e1f261cc637155684cd
-       */
-      id: string;
-      /** @description SHA for the commit's tree */
-      tree_id: string;
-      /**
-       * @description Message describing the purpose of the commit
-       * @example Fix #42
-       */
-      message: string;
-      /**
-       * Format: date-time
-       * @description Timestamp of the commit
-       * @example 2014-08-09T08:02:04+12:00
-       */
-      timestamp: string;
-      /** @description Information about the Git author */
-      author: {
-        /**
-         * @description Name of the commit's author
-         * @example Monalisa Octocat
-         */
-        name: string;
-        /**
-         * Format: email
-         * @description Git email address of the commit's author
-         * @example monalisa.octocat@example.com
-         */
-        email: string;
-      } | null;
-      /** @description Information about the Git committer */
-      committer: {
-        /**
-         * @description Name of the commit's committer
-         * @example Monalisa Octocat
-         */
-        name: string;
-        /**
-         * Format: email
-         * @description Git email address of the commit's committer
-         * @example monalisa.octocat@example.com
-         */
-        email: string;
-      } | null;
-    } | null;
-    /**
-     * Workflow Run
-     * @description An invocation of a workflow
-     */
-    "workflow-run": {
-      /**
-       * @description The ID of the workflow run.
-       * @example 5
-       */
-      id: number;
-      /**
-       * @description The name of the workflow run.
-       * @example Build
-       */
-      name?: string | null;
-      /** @example MDEwOkNoZWNrU3VpdGU1 */
-      node_id: string;
-      /**
-       * @description The ID of the associated check suite.
-       * @example 42
-       */
-      check_suite_id?: number;
-      /**
-       * @description The node ID of the associated check suite.
-       * @example MDEwOkNoZWNrU3VpdGU0Mg==
-       */
-      check_suite_node_id?: string;
-      /** @example master */
-      head_branch: string | null;
-      /**
-       * @description The SHA of the head commit that points to the version of the workflow being run.
-       * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d
-       */
-      head_sha: string;
-      /**
-       * @description The full path of the workflow
-       * @example octocat/octo-repo/.github/workflows/ci.yml@main
-       */
-      path: string;
-      /**
-       * @description The auto incrementing run number for the workflow run.
-       * @example 106
-       */
-      run_number: number;
-      /**
-       * @description Attempt number of the run, 1 for first attempt and higher if the workflow was re-run.
-       * @example 1
-       */
-      run_attempt?: number;
-      referenced_workflows?:
-        | components["schemas"]["referenced-workflow"][]
-        | null;
-      /** @example push */
-      event: string;
-      /** @example completed */
-      status: string | null;
-      /** @example neutral */
-      conclusion: string | null;
-      /**
-       * @description The ID of the parent workflow.
-       * @example 5
-       */
-      workflow_id: number;
-      /**
-       * @description The URL to the workflow run.
-       * @example https://api.github.com/repos/github/hello-world/actions/runs/5
-       */
-      url: string;
-      /** @example https://github.com/github/hello-world/suites/4 */
-      html_url: string;
-      /** @description Pull requests that are open with a `head_sha` or `head_branch` that matches the workflow run. The returned pull requests do not necessarily indicate pull requests that triggered the run. */
-      pull_requests: components["schemas"]["pull-request-minimal"][] | null;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      actor?: components["schemas"]["simple-user"];
-      triggering_actor?: components["schemas"]["simple-user"];
-      /**
-       * Format: date-time
-       * @description The start time of the latest run. Resets on re-run.
-       */
-      run_started_at?: string;
-      /**
-       * @description The URL to the jobs for the workflow run.
-       * @example https://api.github.com/repos/github/hello-world/actions/runs/5/jobs
-       */
-      jobs_url: string;
-      /**
-       * @description The URL to download the logs for the workflow run.
-       * @example https://api.github.com/repos/github/hello-world/actions/runs/5/logs
-       */
-      logs_url: string;
-      /**
-       * @description The URL to the associated check suite.
-       * @example https://api.github.com/repos/github/hello-world/check-suites/12
-       */
-      check_suite_url: string;
-      /**
-       * @description The URL to the artifacts for the workflow run.
-       * @example https://api.github.com/repos/github/hello-world/actions/runs/5/rerun/artifacts
-       */
-      artifacts_url: string;
-      /**
-       * @description The URL to cancel the workflow run.
-       * @example https://api.github.com/repos/github/hello-world/actions/runs/5/cancel
-       */
-      cancel_url: string;
-      /**
-       * @description The URL to rerun the workflow run.
-       * @example https://api.github.com/repos/github/hello-world/actions/runs/5/rerun
-       */
-      rerun_url: string;
-      /**
-       * @description The URL to the previous attempted run of this workflow, if one exists.
-       * @example https://api.github.com/repos/github/hello-world/actions/runs/5/attempts/3
-       */
-      previous_attempt_url?: string | null;
-      /**
-       * @description The URL to the workflow.
-       * @example https://api.github.com/repos/github/hello-world/actions/workflows/main.yaml
-       */
-      workflow_url: string;
-      head_commit: components["schemas"]["nullable-simple-commit"];
-      repository: components["schemas"]["minimal-repository"];
-      head_repository: components["schemas"]["minimal-repository"];
-      /** @example 5 */
-      head_repository_id?: number;
-      /**
-       * @description The event-specific title associated with the run or the run-name if set, or the value of `run-name` if it is set in the workflow.
-       * @example Simple Workflow
-       */
-      display_title: string;
-    };
-    /**
-     * Environment Approval
-     * @description An entry in the reviews log for environment deployments
-     */
-    "environment-approvals": {
-      /** @description The list of environments that were approved or rejected */
-      environments: {
-        /**
-         * @description The id of the environment.
-         * @example 56780428
-         */
-        id?: number;
-        /** @example MDExOkVudmlyb25tZW50NTY3ODA0Mjg= */
-        node_id?: string;
-        /**
-         * @description The name of the environment.
-         * @example staging
-         */
-        name?: string;
-        /** @example https://api.github.com/repos/github/hello-world/environments/staging */
-        url?: string;
-        /** @example https://github.com/github/hello-world/deployments/activity_log?environments_filter=staging */
-        html_url?: string;
-        /**
-         * Format: date-time
-         * @description The time that the environment was created, in ISO 8601 format.
-         * @example 2020-11-23T22:00:40Z
-         */
-        created_at?: string;
-        /**
-         * Format: date-time
-         * @description The time that the environment was last updated, in ISO 8601 format.
-         * @example 2020-11-23T22:00:40Z
-         */
-        updated_at?: string;
-      }[];
-      /**
-       * @description Whether deployment to the environment(s) was approved or rejected or pending (with comments)
-       * @example approved
-       * @enum {string}
-       */
-      state: "approved" | "rejected" | "pending";
-      user: components["schemas"]["simple-user"];
-      /**
-       * @description The comment submitted with the deployment review
-       * @example Ship it!
-       */
-      comment: string;
-    };
-    "review-custom-gates-comment-required": {
-      /** @description The name of the environment to approve or reject. */
-      environment_name: string;
-      /** @description Comment associated with the pending deployment protection rule. **Required when state is not provided.** */
-      comment: string;
-    };
-    "review-custom-gates-state-required": {
-      /** @description The name of the environment to approve or reject. */
-      environment_name: string;
-      /**
-       * @description Whether to approve or reject deployment to the specified environments.
-       * @enum {string}
-       */
-      state: "approved" | "rejected";
-      /** @description Optional comment to include with the review. */
-      comment?: string;
-    };
-    /**
-     * @description The type of reviewer.
-     * @example User
-     * @enum {string}
-     */
-    "deployment-reviewer-type": "User" | "Team";
-    /**
-     * Pending Deployment
-     * @description Details of a deployment that is waiting for protection rules to pass
-     */
-    "pending-deployment": {
-      environment: {
-        /**
-         * @description The id of the environment.
-         * @example 56780428
-         */
-        id?: number;
-        /** @example MDExOkVudmlyb25tZW50NTY3ODA0Mjg= */
-        node_id?: string;
-        /**
-         * @description The name of the environment.
-         * @example staging
-         */
-        name?: string;
-        /** @example https://api.github.com/repos/github/hello-world/environments/staging */
-        url?: string;
-        /** @example https://github.com/github/hello-world/deployments/activity_log?environments_filter=staging */
-        html_url?: string;
-      };
-      /**
-       * @description The set duration of the wait timer
-       * @example 30
-       */
-      wait_timer: number;
-      /**
-       * Format: date-time
-       * @description The time that the wait timer began.
-       * @example 2020-11-23T22:00:40Z
-       */
-      wait_timer_started_at: string | null;
-      /**
-       * @description Whether the currently authenticated user can approve the deployment
-       * @example true
-       */
-      current_user_can_approve: boolean;
-      /** @description The people or teams that may approve jobs that reference the environment. You can list up to six users or teams as reviewers. The reviewers must have at least read access to the repository. Only one of the required reviewers needs to approve the job for it to proceed. */
-      reviewers: {
-        type?: components["schemas"]["deployment-reviewer-type"];
-        reviewer?:
-          | components["schemas"]["simple-user"]
-          | components["schemas"]["team"];
-      }[];
-    };
-    /**
-     * Deployment
-     * @description A request for a specific ref(branch,sha,tag) to be deployed
-     */
-    deployment: {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/example/deployments/1
-       */
-      url: string;
-      /**
-       * @description Unique identifier of the deployment
-       * @example 42
-       */
-      id: number;
-      /** @example MDEwOkRlcGxveW1lbnQx */
-      node_id: string;
-      /** @example a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d */
-      sha: string;
-      /**
-       * @description The ref to deploy. This can be a branch, tag, or sha.
-       * @example topic-branch
-       */
-      ref: string;
-      /**
-       * @description Parameter to specify a task to execute
-       * @example deploy
-       */
-      task: string;
-      payload: OneOf<
-        [
-          {
-            [key: string]: unknown;
-          },
-          string,
-        ]
-      >;
-      /** @example staging */
-      original_environment?: string;
-      /**
-       * @description Name for the target deployment environment.
-       * @example production
-       */
-      environment: string;
-      /** @example Deploy request from hubot */
-      description: string | null;
-      creator: components["schemas"]["nullable-simple-user"];
-      /**
-       * Format: date-time
-       * @example 2012-07-20T01:19:13Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2012-07-20T01:19:13Z
-       */
-      updated_at: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/example/deployments/1/statuses
-       */
-      statuses_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/example
-       */
-      repository_url: string;
-      /**
-       * @description Specifies if the given environment is will no longer exist at some point in the future. Default: false.
-       * @example true
-       */
-      transient_environment?: boolean;
-      /**
-       * @description Specifies if the given environment is one that end-users directly interact with. Default: false.
-       * @example true
-       */
-      production_environment?: boolean;
-      performed_via_github_app?: components["schemas"]["nullable-integration"];
-    };
-    /**
-     * Workflow Run Usage
-     * @description Workflow Run Usage
-     */
-    "workflow-run-usage": {
-      billable: {
-        UBUNTU?: {
-          total_ms: number;
-          jobs: number;
-          job_runs?: {
-            job_id: number;
-            duration_ms: number;
-          }[];
-        };
-        MACOS?: {
-          total_ms: number;
-          jobs: number;
-          job_runs?: {
-            job_id: number;
-            duration_ms: number;
-          }[];
-        };
-        WINDOWS?: {
-          total_ms: number;
-          jobs: number;
-          job_runs?: {
-            job_id: number;
-            duration_ms: number;
-          }[];
-        };
-      };
-      run_duration_ms?: number;
-    };
-    /**
-     * Workflow
-     * @description A GitHub Actions workflow
-     */
-    workflow: {
-      /** @example 5 */
-      id: number;
-      /** @example MDg6V29ya2Zsb3cxMg== */
-      node_id: string;
-      /** @example CI */
-      name: string;
-      /** @example ruby.yaml */
-      path: string;
-      /**
-       * @example active
-       * @enum {string}
-       */
-      state:
-        | "active"
-        | "deleted"
-        | "disabled_fork"
-        | "disabled_inactivity"
-        | "disabled_manually";
-      /**
-       * Format: date-time
-       * @example 2019-12-06T14:20:20.000Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2019-12-06T14:20:20.000Z
-       */
-      updated_at: string;
-      /** @example https://api.github.com/repos/actions/setup-ruby/workflows/5 */
-      url: string;
-      /** @example https://github.com/actions/setup-ruby/blob/master/.github/workflows/ruby.yaml */
-      html_url: string;
-      /** @example https://github.com/actions/setup-ruby/workflows/CI/badge.svg */
-      badge_url: string;
-      /**
-       * Format: date-time
-       * @example 2019-12-06T14:20:20.000Z
-       */
-      deleted_at?: string;
-    };
-    /**
-     * Workflow Usage
-     * @description Workflow Usage
-     */
-    "workflow-usage": {
-      billable: {
-        UBUNTU?: {
-          total_ms?: number;
-        };
-        MACOS?: {
-          total_ms?: number;
-        };
-        WINDOWS?: {
-          total_ms?: number;
-        };
-      };
-    };
-    /**
-     * Activity
-     * @description Activity
-     */
-    activity: {
-      /** @example 1296269 */
-      id: number;
-      /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */
-      node_id: string;
-      /**
-       * @description The SHA of the commit before the activity.
-       * @example 6dcb09b5b57875f334f61aebed695e2e4193db5e
-       */
-      before: string;
-      /**
-       * @description The SHA of the commit after the activity.
-       * @example 827efc6d56897b048c772eb4087f854f46256132
-       */
-      after: string;
-      /**
-       * @description The full Git reference, formatted as `refs/heads/<branch name>`.
-       * @example refs/heads/main
-       */
-      ref: string;
-      /**
-       * Format: date-time
-       * @description The time when the activity occurred.
-       * @example 2011-01-26T19:06:43Z
-       */
-      timestamp: string;
-      /**
-       * @description The type of the activity that was performed.
-       * @example force_push
-       * @enum {string}
-       */
-      activity_type:
-        | "push"
-        | "force_push"
-        | "branch_deletion"
-        | "branch_creation"
-        | "pr_merge"
-        | "merge_queue_merge";
-      actor: components["schemas"]["nullable-simple-user"];
-    };
-    /**
-     * Autolink reference
-     * @description An autolink reference.
-     */
-    autolink: {
-      /** @example 3 */
-      id: number;
-      /**
-       * @description The prefix of a key that is linkified.
-       * @example TICKET-
-       */
-      key_prefix: string;
-      /**
-       * @description A template for the target URL that is generated if a key was found.
-       * @example https://example.com/TICKET?query=<num>
-       */
-      url_template: string;
-      /**
-       * @description Whether this autolink reference matches alphanumeric characters. If false, this autolink reference only matches numeric characters.
-       * @example true
-       */
-      is_alphanumeric: boolean;
-    };
-    /**
-     * Check Automated Security Fixes
-     * @description Check Automated Security Fixes
-     */
-    "check-automated-security-fixes": {
-      /**
-       * @description Whether automated security fixes are enabled for the repository.
-       * @example true
-       */
-      enabled: boolean;
-      /**
-       * @description Whether automated security fixes are paused for the repository.
-       * @example false
-       */
-      paused: boolean;
-    };
-    /**
-     * Protected Branch Required Status Check
-     * @description Protected Branch Required Status Check
-     */
-    "protected-branch-required-status-check": {
-      url?: string;
-      enforcement_level?: string;
-      contexts: string[];
-      checks: {
-        context: string;
-        app_id: number | null;
-      }[];
-      contexts_url?: string;
-      strict?: boolean;
-    };
-    /**
-     * Protected Branch Admin Enforced
-     * @description Protected Branch Admin Enforced
-     */
-    "protected-branch-admin-enforced": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins
-       */
-      url: string;
-      /** @example true */
-      enabled: boolean;
-    };
-    /**
-     * Protected Branch Pull Request Review
-     * @description Protected Branch Pull Request Review
-     */
-    "protected-branch-pull-request-review": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions
-       */
-      url?: string;
-      dismissal_restrictions?: {
-        /** @description The list of users with review dismissal access. */
-        users?: components["schemas"]["simple-user"][];
-        /** @description The list of teams with review dismissal access. */
-        teams?: components["schemas"]["team"][];
-        /** @description The list of apps with review dismissal access. */
-        apps?: components["schemas"]["integration"][];
-        /** @example "https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions" */
-        url?: string;
-        /** @example "https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/users" */
-        users_url?: string;
-        /** @example "https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/teams" */
-        teams_url?: string;
-      };
-      /** @description Allow specific users, teams, or apps to bypass pull request requirements. */
-      bypass_pull_request_allowances?: {
-        /** @description The list of users allowed to bypass pull request requirements. */
-        users?: components["schemas"]["simple-user"][];
-        /** @description The list of teams allowed to bypass pull request requirements. */
-        teams?: components["schemas"]["team"][];
-        /** @description The list of apps allowed to bypass pull request requirements. */
-        apps?: components["schemas"]["integration"][];
-      };
-      /** @example true */
-      dismiss_stale_reviews: boolean;
-      /** @example true */
-      require_code_owner_reviews: boolean;
-      /** @example 2 */
-      required_approving_review_count?: number;
-      /**
-       * @description Whether the most recent push must be approved by someone other than the person who pushed it.
-       * @default false
-       * @example true
-       */
-      require_last_push_approval?: boolean;
-    };
-    /**
-     * Branch Restriction Policy
-     * @description Branch Restriction Policy
-     */
-    "branch-restriction-policy": {
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      users_url: string;
-      /** Format: uri */
-      teams_url: string;
-      /** Format: uri */
-      apps_url: string;
-      users: {
-        login?: string;
-        id?: number;
-        node_id?: string;
-        avatar_url?: string;
-        gravatar_id?: string;
-        url?: string;
-        html_url?: string;
-        followers_url?: string;
-        following_url?: string;
-        gists_url?: string;
-        starred_url?: string;
-        subscriptions_url?: string;
-        organizations_url?: string;
-        repos_url?: string;
-        events_url?: string;
-        received_events_url?: string;
-        type?: string;
-        site_admin?: boolean;
-      }[];
-      teams: {
-        id?: number;
-        node_id?: string;
-        url?: string;
-        html_url?: string;
-        name?: string;
-        slug?: string;
-        description?: string | null;
-        privacy?: string;
-        notification_setting?: string;
-        permission?: string;
-        members_url?: string;
-        repositories_url?: string;
-        parent?: string | null;
-      }[];
-      apps: {
-        id?: number;
-        slug?: string;
-        node_id?: string;
-        owner?: {
-          login?: string;
-          id?: number;
-          node_id?: string;
-          url?: string;
-          repos_url?: string;
-          events_url?: string;
-          hooks_url?: string;
-          issues_url?: string;
-          members_url?: string;
-          public_members_url?: string;
-          avatar_url?: string;
-          description?: string;
-          /** @example "" */
-          gravatar_id?: string;
-          /** @example "https://github.com/testorg-ea8ec76d71c3af4b" */
-          html_url?: string;
-          /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers" */
-          followers_url?: string;
-          /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}" */
-          following_url?: string;
-          /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}" */
-          gists_url?: string;
-          /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}" */
-          starred_url?: string;
-          /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions" */
-          subscriptions_url?: string;
-          /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs" */
-          organizations_url?: string;
-          /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events" */
-          received_events_url?: string;
-          /** @example "Organization" */
-          type?: string;
-          /** @example false */
-          site_admin?: boolean;
-        };
-        name?: string;
-        description?: string;
-        external_url?: string;
-        html_url?: string;
-        created_at?: string;
-        updated_at?: string;
-        permissions?: {
-          metadata?: string;
-          contents?: string;
-          issues?: string;
-          single_file?: string;
-        };
-        events?: string[];
-      }[];
-    };
-    /**
-     * Branch Protection
-     * @description Branch Protection
-     */
-    "branch-protection": {
-      url?: string;
-      enabled?: boolean;
-      required_status_checks?: components["schemas"]["protected-branch-required-status-check"];
-      enforce_admins?: components["schemas"]["protected-branch-admin-enforced"];
-      required_pull_request_reviews?: components["schemas"]["protected-branch-pull-request-review"];
-      restrictions?: components["schemas"]["branch-restriction-policy"];
-      required_linear_history?: {
-        enabled?: boolean;
-      };
-      allow_force_pushes?: {
-        enabled?: boolean;
-      };
-      allow_deletions?: {
-        enabled?: boolean;
-      };
-      block_creations?: {
-        enabled?: boolean;
-      };
-      required_conversation_resolution?: {
-        enabled?: boolean;
-      };
-      /** @example "branch/with/protection" */
-      name?: string;
-      /** @example "https://api.github.com/repos/owner-79e94e2d36b3fd06a32bb213/AAA_Public_Repo/branches/branch/with/protection/protection" */
-      protection_url?: string;
-      required_signatures?: {
-        /**
-         * Format: uri
-         * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures
-         */
-        url: string;
-        /** @example true */
-        enabled: boolean;
-      };
-      /** @description Whether to set the branch as read-only. If this is true, users will not be able to push to the branch. */
-      lock_branch?: {
-        /** @default false */
-        enabled?: boolean;
-      };
-      /** @description Whether users can pull changes from upstream when the branch is locked. Set to `true` to allow fork syncing. Set to `false` to prevent fork syncing. */
-      allow_fork_syncing?: {
-        /** @default false */
-        enabled?: boolean;
-      };
-    };
-    /**
-     * Short Branch
-     * @description Short Branch
-     */
-    "short-branch": {
-      name: string;
-      commit: {
-        sha: string;
-        /** Format: uri */
-        url: string;
-      };
-      protected: boolean;
-      protection?: components["schemas"]["branch-protection"];
-      /** Format: uri */
-      protection_url?: string;
-    };
-    /**
-     * Git User
-     * @description Metaproperties for Git author/committer information.
-     */
-    "nullable-git-user": {
-      /** @example "Chris Wanstrath" */
-      name?: string;
-      /** @example "chris@ozmm.org" */
-      email?: string;
-      /** @example "2007-10-29T02:42:39.000-07:00" */
-      date?: string;
-    } | null;
-    /** Verification */
-    verification: {
-      verified: boolean;
-      reason: string;
-      payload: string | null;
-      signature: string | null;
-    };
-    /**
-     * Diff Entry
-     * @description Diff Entry
-     */
-    "diff-entry": {
-      /** @example bbcd538c8e72b8c175046e27cc8f907076331401 */
-      sha: string;
-      /** @example file1.txt */
-      filename: string;
-      /**
-       * @example added
-       * @enum {string}
-       */
-      status:
-        | "added"
-        | "removed"
-        | "modified"
-        | "renamed"
-        | "copied"
-        | "changed"
-        | "unchanged";
-      /** @example 103 */
-      additions: number;
-      /** @example 21 */
-      deletions: number;
-      /** @example 124 */
-      changes: number;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/blob/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt
-       */
-      blob_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/raw/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt
-       */
-      raw_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/contents/file1.txt?ref=6dcb09b5b57875f334f61aebed695e2e4193db5e
-       */
-      contents_url: string;
-      /** @example @@ -132,7 +132,7 @@ module Test @@ -1000,7 +1000,7 @@ module Test */
-      patch?: string;
-      /** @example file.txt */
-      previous_filename?: string;
-    };
-    /**
-     * Commit
-     * @description Commit
-     */
-    commit: {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e
-       */
-      url: string;
-      /** @example 6dcb09b5b57875f334f61aebed695e2e4193db5e */
-      sha: string;
-      /** @example MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ== */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments
-       */
-      comments_url: string;
-      commit: {
-        /**
-         * Format: uri
-         * @example https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e
-         */
-        url: string;
-        author: components["schemas"]["nullable-git-user"];
-        committer: components["schemas"]["nullable-git-user"];
-        /** @example Fix all the bugs */
-        message: string;
-        /** @example 0 */
-        comment_count: number;
-        tree: {
-          /** @example 827efc6d56897b048c772eb4087f854f46256132 */
-          sha: string;
-          /**
-           * Format: uri
-           * @example https://api.github.com/repos/octocat/Hello-World/tree/827efc6d56897b048c772eb4087f854f46256132
-           */
-          url: string;
-        };
-        verification?: components["schemas"]["verification"];
-      };
-      author: components["schemas"]["nullable-simple-user"];
-      committer: components["schemas"]["nullable-simple-user"];
-      parents: {
-        /** @example 7638417db6d59f3c431d3e1f261cc637155684cd */
-        sha: string;
-        /**
-         * Format: uri
-         * @example https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd
-         */
-        url: string;
-        /**
-         * Format: uri
-         * @example https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd
-         */
-        html_url?: string;
-      }[];
-      stats?: {
-        additions?: number;
-        deletions?: number;
-        total?: number;
-      };
-      files?: components["schemas"]["diff-entry"][];
-    };
-    /**
-     * Branch With Protection
-     * @description Branch With Protection
-     */
-    "branch-with-protection": {
-      name: string;
-      commit: components["schemas"]["commit"];
-      _links: {
-        html: string;
-        /** Format: uri */
-        self: string;
-      };
-      protected: boolean;
-      protection: components["schemas"]["branch-protection"];
-      /** Format: uri */
-      protection_url: string;
-      /** @example "mas*" */
-      pattern?: string;
-      /** @example 1 */
-      required_approving_review_count?: number;
-    };
-    /**
-     * Status Check Policy
-     * @description Status Check Policy
-     */
-    "status-check-policy": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks
-       */
-      url: string;
-      /** @example true */
-      strict: boolean;
-      /**
-       * @example [
-       *   "continuous-integration/travis-ci"
-       * ]
-       */
-      contexts: string[];
-      checks: {
-        /** @example continuous-integration/travis-ci */
-        context: string;
-        app_id: number | null;
-      }[];
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts
-       */
-      contexts_url: string;
-    };
-    /**
-     * Protected Branch
-     * @description Branch protections protect branches
-     */
-    "protected-branch": {
-      /** Format: uri */
-      url: string;
-      required_status_checks?: components["schemas"]["status-check-policy"];
-      required_pull_request_reviews?: {
-        /** Format: uri */
-        url: string;
-        dismiss_stale_reviews?: boolean;
-        require_code_owner_reviews?: boolean;
-        required_approving_review_count?: number;
-        /**
-         * @description Whether the most recent push must be approved by someone other than the person who pushed it.
-         * @default false
-         */
-        require_last_push_approval?: boolean;
-        dismissal_restrictions?: {
-          /** Format: uri */
-          url: string;
-          /** Format: uri */
-          users_url: string;
-          /** Format: uri */
-          teams_url: string;
-          users: components["schemas"]["simple-user"][];
-          teams: components["schemas"]["team"][];
-          apps?: components["schemas"]["integration"][];
-        };
-        bypass_pull_request_allowances?: {
-          users: components["schemas"]["simple-user"][];
-          teams: components["schemas"]["team"][];
-          apps?: components["schemas"]["integration"][];
-        };
-      };
-      required_signatures?: {
-        /**
-         * Format: uri
-         * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures
-         */
-        url: string;
-        /** @example true */
-        enabled: boolean;
-      };
-      enforce_admins?: {
-        /** Format: uri */
-        url: string;
-        enabled: boolean;
-      };
-      required_linear_history?: {
-        enabled: boolean;
-      };
-      allow_force_pushes?: {
-        enabled: boolean;
-      };
-      allow_deletions?: {
-        enabled: boolean;
-      };
-      restrictions?: components["schemas"]["branch-restriction-policy"];
-      required_conversation_resolution?: {
-        enabled?: boolean;
-      };
-      block_creations?: {
-        enabled: boolean;
-      };
-      /** @description Whether to set the branch as read-only. If this is true, users will not be able to push to the branch. */
-      lock_branch?: {
-        /** @default false */
-        enabled?: boolean;
-      };
-      /** @description Whether users can pull changes from upstream when the branch is locked. Set to `true` to allow fork syncing. Set to `false` to prevent fork syncing. */
-      allow_fork_syncing?: {
-        /** @default false */
-        enabled?: boolean;
-      };
-    };
-    /**
-     * Deployment
-     * @description A deployment created as the result of an Actions check run from a workflow that references an environment
-     */
-    "deployment-simple": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/example/deployments/1
-       */
-      url: string;
-      /**
-       * @description Unique identifier of the deployment
-       * @example 42
-       */
-      id: number;
-      /** @example MDEwOkRlcGxveW1lbnQx */
-      node_id: string;
-      /**
-       * @description Parameter to specify a task to execute
-       * @example deploy
-       */
-      task: string;
-      /** @example staging */
-      original_environment?: string;
-      /**
-       * @description Name for the target deployment environment.
-       * @example production
-       */
-      environment: string;
-      /** @example Deploy request from hubot */
-      description: string | null;
-      /**
-       * Format: date-time
-       * @example 2012-07-20T01:19:13Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2012-07-20T01:19:13Z
-       */
-      updated_at: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/example/deployments/1/statuses
-       */
-      statuses_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/example
-       */
-      repository_url: string;
-      /**
-       * @description Specifies if the given environment is will no longer exist at some point in the future. Default: false.
-       * @example true
-       */
-      transient_environment?: boolean;
-      /**
-       * @description Specifies if the given environment is one that end-users directly interact with. Default: false.
-       * @example true
-       */
-      production_environment?: boolean;
-      performed_via_github_app?: components["schemas"]["nullable-integration"];
-    };
-    /**
-     * CheckRun
-     * @description A check performed on the code of a given code change
-     */
-    "check-run": {
-      /**
-       * @description The id of the check.
-       * @example 21
-       */
-      id: number;
-      /**
-       * @description The SHA of the commit that is being checked.
-       * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d
-       */
-      head_sha: string;
-      /** @example MDg6Q2hlY2tSdW40 */
-      node_id: string;
-      /** @example 42 */
-      external_id: string | null;
-      /** @example https://api.github.com/repos/github/hello-world/check-runs/4 */
-      url: string;
-      /** @example https://github.com/github/hello-world/runs/4 */
-      html_url: string | null;
-      /** @example https://example.com */
-      details_url: string | null;
-      /**
-       * @description The phase of the lifecycle that the check is currently in.
-       * @example queued
-       * @enum {string}
-       */
-      status: "queued" | "in_progress" | "completed";
-      /**
-       * @example neutral
-       * @enum {string|null}
-       */
-      conclusion:
-        | "success"
-        | "failure"
-        | "neutral"
-        | "cancelled"
-        | "skipped"
-        | "timed_out"
-        | "action_required"
-        | null;
-      /**
-       * Format: date-time
-       * @example 2018-05-04T01:14:52Z
-       */
-      started_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2018-05-04T01:14:52Z
-       */
-      completed_at: string | null;
-      output: {
-        title: string | null;
-        summary: string | null;
-        text: string | null;
-        annotations_count: number;
-        /** Format: uri */
-        annotations_url: string;
-      };
-      /**
-       * @description The name of the check.
-       * @example test-coverage
-       */
-      name: string;
-      check_suite: {
-        id: number;
-      } | null;
-      app: components["schemas"]["nullable-integration"];
-      /** @description Pull requests that are open with a `head_sha` or `head_branch` that matches the check. The returned pull requests do not necessarily indicate pull requests that triggered the check. */
-      pull_requests: components["schemas"]["pull-request-minimal"][];
-      deployment?: components["schemas"]["deployment-simple"];
-    };
-    /**
-     * Check Annotation
-     * @description Check Annotation
-     */
-    "check-annotation": {
-      /** @example README.md */
-      path: string;
-      /** @example 2 */
-      start_line: number;
-      /** @example 2 */
-      end_line: number;
-      /** @example 5 */
-      start_column: number | null;
-      /** @example 10 */
-      end_column: number | null;
-      /** @example warning */
-      annotation_level: string | null;
-      /** @example Spell Checker */
-      title: string | null;
-      /** @example Check your spelling for 'banaas'. */
-      message: string | null;
-      /** @example Do you mean 'bananas' or 'banana'? */
-      raw_details: string | null;
-      blob_href: string;
-    };
-    /**
-     * Simple Commit
-     * @description A commit.
-     */
-    "simple-commit": {
-      /**
-       * @description SHA for the commit
-       * @example 7638417db6d59f3c431d3e1f261cc637155684cd
-       */
-      id: string;
-      /** @description SHA for the commit's tree */
-      tree_id: string;
-      /**
-       * @description Message describing the purpose of the commit
-       * @example Fix #42
-       */
-      message: string;
-      /**
-       * Format: date-time
-       * @description Timestamp of the commit
-       * @example 2014-08-09T08:02:04+12:00
-       */
-      timestamp: string;
-      /** @description Information about the Git author */
-      author: {
-        /**
-         * @description Name of the commit's author
-         * @example Monalisa Octocat
-         */
-        name: string;
-        /**
-         * Format: email
-         * @description Git email address of the commit's author
-         * @example monalisa.octocat@example.com
-         */
-        email: string;
-      } | null;
-      /** @description Information about the Git committer */
-      committer: {
-        /**
-         * @description Name of the commit's committer
-         * @example Monalisa Octocat
-         */
-        name: string;
-        /**
-         * Format: email
-         * @description Git email address of the commit's committer
-         * @example monalisa.octocat@example.com
-         */
-        email: string;
-      } | null;
-    };
-    /**
-     * CheckSuite
-     * @description A suite of checks performed on the code of a given code change
-     */
-    "check-suite": {
-      /** @example 5 */
-      id: number;
-      /** @example MDEwOkNoZWNrU3VpdGU1 */
-      node_id: string;
-      /** @example master */
-      head_branch: string | null;
-      /**
-       * @description The SHA of the head commit that is being checked.
-       * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d
-       */
-      head_sha: string;
-      /**
-       * @example completed
-       * @enum {string|null}
-       */
-      status: "queued" | "in_progress" | "completed" | null;
-      /**
-       * @example neutral
-       * @enum {string|null}
-       */
-      conclusion:
-        | "success"
-        | "failure"
-        | "neutral"
-        | "cancelled"
-        | "skipped"
-        | "timed_out"
-        | "action_required"
-        | "startup_failure"
-        | "stale"
-        | null;
-      /** @example https://api.github.com/repos/github/hello-world/check-suites/5 */
-      url: string | null;
-      /** @example 146e867f55c26428e5f9fade55a9bbf5e95a7912 */
-      before: string | null;
-      /** @example d6fde92930d4715a2b49857d24b940956b26d2d3 */
-      after: string | null;
-      pull_requests: components["schemas"]["pull-request-minimal"][] | null;
-      app: components["schemas"]["nullable-integration"];
-      repository: components["schemas"]["minimal-repository"];
-      /** Format: date-time */
-      created_at: string | null;
-      /** Format: date-time */
-      updated_at: string | null;
-      head_commit: components["schemas"]["simple-commit"];
-      latest_check_runs_count: number;
-      check_runs_url: string;
-      rerequestable?: boolean;
-      runs_rerequestable?: boolean;
-    };
-    /**
-     * Check Suite Preference
-     * @description Check suite configuration preferences for a repository.
-     */
-    "check-suite-preference": {
-      preferences: {
-        auto_trigger_checks?: {
-          app_id: number;
-          setting: boolean;
-        }[];
-      };
-      repository: components["schemas"]["minimal-repository"];
-    };
-    "code-scanning-alert-rule-summary": {
-      /** @description A unique identifier for the rule used to detect the alert. */
-      id?: string | null;
-      /** @description The name of the rule used to detect the alert. */
-      name?: string;
-      /** @description A set of tags applicable for the rule. */
-      tags?: string[] | null;
-      /**
-       * @description The severity of the alert.
-       * @enum {string|null}
-       */
-      severity?: "none" | "note" | "warning" | "error" | null;
-      /** @description A short description of the rule used to detect the alert. */
-      description?: string;
-    };
-    "code-scanning-alert-items": {
-      number: components["schemas"]["alert-number"];
-      created_at: components["schemas"]["alert-created-at"];
-      updated_at?: components["schemas"]["alert-updated-at"];
-      url: components["schemas"]["alert-url"];
-      html_url: components["schemas"]["alert-html-url"];
-      instances_url: components["schemas"]["alert-instances-url"];
-      state: components["schemas"]["code-scanning-alert-state"];
-      fixed_at?: components["schemas"]["alert-fixed-at"];
-      dismissed_by: components["schemas"]["nullable-simple-user"];
-      dismissed_at: components["schemas"]["alert-dismissed-at"];
-      dismissed_reason: components["schemas"]["code-scanning-alert-dismissed-reason"];
-      dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"];
-      rule: components["schemas"]["code-scanning-alert-rule-summary"];
-      tool: components["schemas"]["code-scanning-analysis-tool"];
-      most_recent_instance: components["schemas"]["code-scanning-alert-instance"];
-    };
-    "code-scanning-alert": {
-      number: components["schemas"]["alert-number"];
-      created_at: components["schemas"]["alert-created-at"];
-      updated_at?: components["schemas"]["alert-updated-at"];
-      url: components["schemas"]["alert-url"];
-      html_url: components["schemas"]["alert-html-url"];
-      instances_url: components["schemas"]["alert-instances-url"];
-      state: components["schemas"]["code-scanning-alert-state"];
-      fixed_at?: components["schemas"]["alert-fixed-at"];
-      dismissed_by: components["schemas"]["nullable-simple-user"];
-      dismissed_at: components["schemas"]["alert-dismissed-at"];
-      dismissed_reason: components["schemas"]["code-scanning-alert-dismissed-reason"];
-      dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"];
-      rule: components["schemas"]["code-scanning-alert-rule"];
-      tool: components["schemas"]["code-scanning-analysis-tool"];
-      most_recent_instance: components["schemas"]["code-scanning-alert-instance"];
-    };
-    /**
-     * @description Sets the state of the code scanning alert. You must provide `dismissed_reason` when you set the state to `dismissed`.
-     * @enum {string}
-     */
-    "code-scanning-alert-set-state": "open" | "dismissed";
-    /**
-     * @description An identifier for the upload.
-     * @example 6c81cd8e-b078-4ac3-a3be-1dad7dbd0b53
-     */
-    "code-scanning-analysis-sarif-id": string;
-    /** @description The SHA of the commit to which the analysis you are uploading relates. */
-    "code-scanning-analysis-commit-sha": string;
-    /** @description Identifies the variable values associated with the environment in which this analysis was performed. */
-    "code-scanning-analysis-environment": string;
-    /**
-     * Format: date-time
-     * @description The time that the analysis was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-     */
-    readonly "code-scanning-analysis-created-at": string;
-    /**
-     * Format: uri
-     * @description The REST API URL of the analysis resource.
-     */
-    readonly "code-scanning-analysis-url": string;
-    "code-scanning-analysis": {
-      ref: components["schemas"]["code-scanning-ref"];
-      commit_sha: components["schemas"]["code-scanning-analysis-commit-sha"];
-      analysis_key: components["schemas"]["code-scanning-analysis-analysis-key"];
-      environment: components["schemas"]["code-scanning-analysis-environment"];
-      category?: components["schemas"]["code-scanning-analysis-category"];
-      /** @example error reading field xyz */
-      error: string;
-      created_at: components["schemas"]["code-scanning-analysis-created-at"];
-      /** @description The total number of results in the analysis. */
-      results_count: number;
-      /** @description The total number of rules used in the analysis. */
-      rules_count: number;
-      /** @description Unique identifier for this analysis. */
-      id: number;
-      url: components["schemas"]["code-scanning-analysis-url"];
-      sarif_id: components["schemas"]["code-scanning-analysis-sarif-id"];
-      tool: components["schemas"]["code-scanning-analysis-tool"];
-      deletable: boolean;
-      /**
-       * @description Warning generated when processing the analysis
-       * @example 123 results were ignored
-       */
-      warning: string;
-    };
-    /**
-     * Analysis deletion
-     * @description Successful deletion of a code scanning analysis
-     */
-    "code-scanning-analysis-deletion": {
-      /**
-       * Format: uri
-       * @description Next deletable analysis in chain, without last analysis deletion confirmation
-       */
-      next_analysis_url: string | null;
-      /**
-       * Format: uri
-       * @description Next deletable analysis in chain, with last analysis deletion confirmation
-       */
-      confirm_delete_url: string | null;
-    };
-    /**
-     * CodeQL Database
-     * @description A CodeQL database.
-     */
-    "code-scanning-codeql-database": {
-      /** @description The ID of the CodeQL database. */
-      id: number;
-      /** @description The name of the CodeQL database. */
-      name: string;
-      /** @description The language of the CodeQL database. */
-      language: string;
-      uploader: components["schemas"]["simple-user"];
-      /** @description The MIME type of the CodeQL database file. */
-      content_type: string;
-      /** @description The size of the CodeQL database file in bytes. */
-      size: number;
-      /**
-       * Format: date-time
-       * @description The date and time at which the CodeQL database was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ.
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @description The date and time at which the CodeQL database was last updated, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ.
-       */
-      updated_at: string;
-      /**
-       * Format: uri
-       * @description The URL at which to download the CodeQL database. The `Accept` header must be set to the value of the `content_type` property.
-       */
-      url: string;
-      /** @description The commit SHA of the repository at the time the CodeQL database was created. */
-      commit_oid?: string | null;
-    };
-    /** @description Configuration for code scanning default setup. */
-    "code-scanning-default-setup": {
-      /**
-       * @description Code scanning default setup has been configured or not.
-       * @enum {string}
-       */
-      state?: "configured" | "not-configured";
-      /** @description Languages to be analyzed. */
-      languages?: (
-        | "c-cpp"
-        | "csharp"
-        | "go"
-        | "java-kotlin"
-        | "javascript-typescript"
-        | "javascript"
-        | "python"
-        | "ruby"
-        | "typescript"
-        | "swift"
-      )[];
-      /**
-       * @description CodeQL query suite to be used.
-       * @enum {string}
-       */
-      query_suite?: "default" | "extended";
-      /**
-       * Format: date-time
-       * @description Timestamp of latest configuration update.
-       * @example 2023-12-06T14:20:20.000Z
-       */
-      updated_at?: string | null;
-      /**
-       * @description The frequency of the periodic analysis.
-       * @enum {string|null}
-       */
-      schedule?: "weekly" | null;
-    };
-    /** @description Configuration for code scanning default setup. */
-    "code-scanning-default-setup-update": {
-      /**
-       * @description Whether code scanning default setup has been configured or not.
-       * @enum {string}
-       */
-      state: "configured" | "not-configured";
-      /**
-       * @description CodeQL query suite to be used.
-       * @enum {string}
-       */
-      query_suite?: "default" | "extended";
-      /** @description CodeQL languages to be analyzed. */
-      languages?: (
-        | "c-cpp"
-        | "csharp"
-        | "go"
-        | "java-kotlin"
-        | "javascript-typescript"
-        | "python"
-        | "ruby"
-        | "swift"
-      )[];
-    };
-    /**
-     * @description You can use `run_url` to track the status of the run. This includes a property status and conclusion.
-     * You should not rely on this always being an actions workflow run object.
-     */
-    "code-scanning-default-setup-update-response": {
-      /** @description ID of the corresponding run. */
-      run_id?: number;
-      /** @description URL of the corresponding run. */
-      run_url?: string;
-    };
-    /** @description A Base64 string representing the SARIF file to upload. You must first compress your SARIF file using [`gzip`](http://www.gnu.org/software/gzip/manual/gzip.html) and then translate the contents of the file into a Base64 encoding string. For more information, see "[SARIF support for code scanning](https://docs.github.com/code-security/secure-coding/sarif-support-for-code-scanning)." */
-    "code-scanning-analysis-sarif-file": string;
-    "code-scanning-sarifs-receipt": {
-      id?: components["schemas"]["code-scanning-analysis-sarif-id"];
-      /**
-       * Format: uri
-       * @description The REST API URL for checking the status of the upload.
-       */
-      url?: string;
-    };
-    "code-scanning-sarifs-status": {
-      /**
-       * @description `pending` files have not yet been processed, while `complete` means results from the SARIF have been stored. `failed` files have either not been processed at all, or could only be partially processed.
-       * @enum {string}
-       */
-      processing_status?: "pending" | "complete" | "failed";
-      /**
-       * Format: uri
-       * @description The REST API URL for getting the analyses associated with the upload.
-       */
-      analyses_url?: string | null;
-      /** @description Any errors that ocurred during processing of the delivery. */
-      errors?: readonly string[] | null;
-    };
-    /**
-     * CODEOWNERS errors
-     * @description A list of errors found in a repo's CODEOWNERS file
-     */
-    "codeowners-errors": {
-      errors: {
-        /**
-         * @description The line number where this errors occurs.
-         * @example 7
-         */
-        line: number;
-        /**
-         * @description The column number where this errors occurs.
-         * @example 3
-         */
-        column: number;
-        /**
-         * @description The contents of the line where the error occurs.
-         * @example * user
-         */
-        source?: string;
-        /**
-         * @description The type of error.
-         * @example Invalid owner
-         */
-        kind: string;
-        /**
-         * @description Suggested action to fix the error. This will usually be `null`, but is provided for some common errors.
-         * @example The pattern `/` will never match anything, did you mean `*` instead?
-         */
-        suggestion?: string | null;
-        /**
-         * @description A human-readable description of the error, combining information from multiple fields, laid out for display in a monospaced typeface (for example, a command-line setting).
-         * @example Invalid owner on line 7:
-         *
-         *   * user
-         *     ^
-         */
-        message: string;
-        /**
-         * @description The path of the file where the error occured.
-         * @example .github/CODEOWNERS
-         */
-        path: string;
-      }[];
-    };
-    /**
-     * Codespace machine
-     * @description A description of the machine powering a codespace.
-     */
-    "codespace-machine": {
-      /**
-       * @description The name of the machine.
-       * @example standardLinux
-       */
-      name: string;
-      /**
-       * @description The display name of the machine includes cores, memory, and storage.
-       * @example 4 cores, 16 GB RAM, 64 GB storage
-       */
-      display_name: string;
-      /**
-       * @description The operating system of the machine.
-       * @example linux
-       */
-      operating_system: string;
-      /**
-       * @description How much storage is available to the codespace.
-       * @example 68719476736
-       */
-      storage_in_bytes: number;
-      /**
-       * @description How much memory is available to the codespace.
-       * @example 17179869184
-       */
-      memory_in_bytes: number;
-      /**
-       * @description How many cores are available to the codespace.
-       * @example 4
-       */
-      cpus: number;
-      /**
-       * @description Whether a prebuild is currently available when creating a codespace for this machine and repository. If a branch was not specified as a ref, the default branch will be assumed. Value will be "null" if prebuilds are not supported or prebuild availability could not be determined. Value will be "none" if no prebuild is available. Latest values "ready" and "in_progress" indicate the prebuild availability status.
-       * @example ready
-       * @enum {string|null}
-       */
-      prebuild_availability: "none" | "ready" | "in_progress" | null;
-    };
-    /**
-     * Codespaces Permissions Check
-     * @description Permission check result for a given devcontainer config.
-     */
-    "codespaces-permissions-check-for-devcontainer": {
-      /**
-       * @description Whether the user has accepted the permissions defined by the devcontainer config
-       * @example true
-       */
-      accepted: boolean;
-    };
-    /**
-     * Codespaces Secret
-     * @description Set repository secrets for GitHub Codespaces.
-     */
-    "repo-codespaces-secret": {
-      /**
-       * @description The name of the secret.
-       * @example SECRET_TOKEN
-       */
-      name: string;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-    };
-    /**
-     * Collaborator
-     * @description Collaborator
-     */
-    collaborator: {
-      /** @example octocat */
-      login: string;
-      /** @example 1 */
-      id: number;
-      email?: string | null;
-      name?: string | null;
-      /** @example MDQ6VXNlcjE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://github.com/images/error/octocat_happy.gif
-       */
-      avatar_url: string;
-      /** @example 41d064eb2195891e12d0413f63227ea7 */
-      gravatar_id: string | null;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/followers
-       */
-      followers_url: string;
-      /** @example https://api.github.com/users/octocat/following{/other_user} */
-      following_url: string;
-      /** @example https://api.github.com/users/octocat/gists{/gist_id} */
-      gists_url: string;
-      /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */
-      starred_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/subscriptions
-       */
-      subscriptions_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/orgs
-       */
-      organizations_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/repos
-       */
-      repos_url: string;
-      /** @example https://api.github.com/users/octocat/events{/privacy} */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/received_events
-       */
-      received_events_url: string;
-      /** @example User */
-      type: string;
-      site_admin: boolean;
-      permissions?: {
-        pull: boolean;
-        triage?: boolean;
-        push: boolean;
-        maintain?: boolean;
-        admin: boolean;
-      };
-      /** @example admin */
-      role_name: string;
-    };
-    /**
-     * Repository Invitation
-     * @description Repository invitations let you manage who you collaborate with.
-     */
-    "repository-invitation": {
-      /**
-       * @description Unique identifier of the repository invitation.
-       * @example 42
-       */
-      id: number;
-      repository: components["schemas"]["minimal-repository"];
-      invitee: components["schemas"]["nullable-simple-user"];
-      inviter: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description The permission associated with the invitation.
-       * @example read
-       * @enum {string}
-       */
-      permissions: "read" | "write" | "admin" | "triage" | "maintain";
-      /**
-       * Format: date-time
-       * @example 2016-06-13T14:52:50-05:00
-       */
-      created_at: string;
-      /** @description Whether or not the invitation has expired */
-      expired?: boolean;
-      /**
-       * @description URL for the repository invitation
-       * @example https://api.github.com/user/repository-invitations/1
-       */
-      url: string;
-      /** @example https://github.com/octocat/Hello-World/invitations */
-      html_url: string;
-      node_id: string;
-    };
-    /**
-     * Collaborator
-     * @description Collaborator
-     */
-    "nullable-collaborator": {
-      /** @example octocat */
-      login: string;
-      /** @example 1 */
-      id: number;
-      email?: string | null;
-      name?: string | null;
-      /** @example MDQ6VXNlcjE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://github.com/images/error/octocat_happy.gif
-       */
-      avatar_url: string;
-      /** @example 41d064eb2195891e12d0413f63227ea7 */
-      gravatar_id: string | null;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/followers
-       */
-      followers_url: string;
-      /** @example https://api.github.com/users/octocat/following{/other_user} */
-      following_url: string;
-      /** @example https://api.github.com/users/octocat/gists{/gist_id} */
-      gists_url: string;
-      /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */
-      starred_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/subscriptions
-       */
-      subscriptions_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/orgs
-       */
-      organizations_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/repos
-       */
-      repos_url: string;
-      /** @example https://api.github.com/users/octocat/events{/privacy} */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/received_events
-       */
-      received_events_url: string;
-      /** @example User */
-      type: string;
-      site_admin: boolean;
-      permissions?: {
-        pull: boolean;
-        triage?: boolean;
-        push: boolean;
-        maintain?: boolean;
-        admin: boolean;
-      };
-      /** @example admin */
-      role_name: string;
-    } | null;
-    /**
-     * Repository Collaborator Permission
-     * @description Repository Collaborator Permission
-     */
-    "repository-collaborator-permission": {
-      permission: string;
-      /** @example admin */
-      role_name: string;
-      user: components["schemas"]["nullable-collaborator"];
-    };
-    /**
-     * Commit Comment
-     * @description Commit Comment
-     */
-    "commit-comment": {
-      /** Format: uri */
-      html_url: string;
-      /** Format: uri */
-      url: string;
-      id: number;
-      node_id: string;
-      body: string;
-      path: string | null;
-      position: number | null;
-      line: number | null;
-      commit_id: string;
-      user: components["schemas"]["nullable-simple-user"];
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      author_association: components["schemas"]["author-association"];
-      reactions?: components["schemas"]["reaction-rollup"];
-    };
-    /**
-     * Branch Short
-     * @description Branch Short
-     */
-    "branch-short": {
-      name: string;
-      commit: {
-        sha: string;
-        url: string;
-      };
-      protected: boolean;
-    };
-    /**
-     * Link
-     * @description Hypermedia Link
-     */
-    link: {
-      href: string;
-    };
-    /**
-     * Auto merge
-     * @description The status of auto merging a pull request.
-     */
-    "auto-merge": {
-      enabled_by: components["schemas"]["simple-user"];
-      /**
-       * @description The merge method to use.
-       * @enum {string}
-       */
-      merge_method: "merge" | "squash" | "rebase";
-      /** @description Title for the merge commit message. */
-      commit_title: string;
-      /** @description Commit message for the merge commit. */
-      commit_message: string;
-    } | null;
-    /**
-     * Pull Request Simple
-     * @description Pull Request Simple
-     */
-    "pull-request-simple": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347
-       */
-      url: string;
-      /** @example 1 */
-      id: number;
-      /** @example MDExOlB1bGxSZXF1ZXN0MQ== */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/pull/1347
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/pull/1347.diff
-       */
-      diff_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/pull/1347.patch
-       */
-      patch_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/issues/1347
-       */
-      issue_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits
-       */
-      commits_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments
-       */
-      review_comments_url: string;
-      /** @example https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number} */
-      review_comment_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/issues/1347/comments
-       */
-      comments_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e
-       */
-      statuses_url: string;
-      /** @example 1347 */
-      number: number;
-      /** @example open */
-      state: string;
-      /** @example true */
-      locked: boolean;
-      /** @example new-feature */
-      title: string;
-      user: components["schemas"]["nullable-simple-user"];
-      /** @example Please pull these awesome changes */
-      body: string | null;
-      labels: {
-        /** Format: int64 */
-        id: number;
-        node_id: string;
-        url: string;
-        name: string;
-        description: string;
-        color: string;
-        default: boolean;
-      }[];
-      milestone: components["schemas"]["nullable-milestone"];
-      /** @example too heated */
-      active_lock_reason?: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      updated_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      closed_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      merged_at: string | null;
-      /** @example e5bd3914e2e596debea16f433f57875b5b90bcd6 */
-      merge_commit_sha: string | null;
-      assignee: components["schemas"]["nullable-simple-user"];
-      assignees?: components["schemas"]["simple-user"][] | null;
-      requested_reviewers?: components["schemas"]["simple-user"][] | null;
-      requested_teams?: components["schemas"]["team"][] | null;
-      head: {
-        label: string;
-        ref: string;
-        repo: components["schemas"]["repository"];
-        sha: string;
-        user: components["schemas"]["nullable-simple-user"];
-      };
-      base: {
-        label: string;
-        ref: string;
-        repo: components["schemas"]["repository"];
-        sha: string;
-        user: components["schemas"]["nullable-simple-user"];
-      };
-      _links: {
-        comments: components["schemas"]["link"];
-        commits: components["schemas"]["link"];
-        statuses: components["schemas"]["link"];
-        html: components["schemas"]["link"];
-        issue: components["schemas"]["link"];
-        review_comments: components["schemas"]["link"];
-        review_comment: components["schemas"]["link"];
-        self: components["schemas"]["link"];
-      };
-      author_association: components["schemas"]["author-association"];
-      auto_merge: components["schemas"]["auto-merge"];
-      /**
-       * @description Indicates whether or not the pull request is a draft.
-       * @example false
-       */
-      draft?: boolean;
-    };
-    /** Simple Commit Status */
-    "simple-commit-status": {
-      description: string | null;
-      id: number;
-      node_id: string;
-      state: string;
-      context: string;
-      /** Format: uri */
-      target_url: string | null;
-      required?: boolean | null;
-      /** Format: uri */
-      avatar_url: string | null;
-      /** Format: uri */
-      url: string;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-    };
-    /**
-     * Combined Commit Status
-     * @description Combined Commit Status
-     */
-    "combined-commit-status": {
-      state: string;
-      statuses: components["schemas"]["simple-commit-status"][];
-      sha: string;
-      total_count: number;
-      repository: components["schemas"]["minimal-repository"];
-      /** Format: uri */
-      commit_url: string;
-      /** Format: uri */
-      url: string;
-    };
-    /**
-     * Status
-     * @description The status of a commit.
-     */
-    status: {
-      url: string;
-      avatar_url: string | null;
-      id: number;
-      node_id: string;
-      state: string;
-      description: string | null;
-      target_url: string | null;
-      context: string;
-      created_at: string;
-      updated_at: string;
-      creator: components["schemas"]["nullable-simple-user"];
-    };
-    /**
-     * Code Of Conduct Simple
-     * @description Code of Conduct Simple
-     */
-    "nullable-code-of-conduct-simple": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/github/docs/community/code_of_conduct
-       */
-      url: string;
-      /** @example citizen_code_of_conduct */
-      key: string;
-      /** @example Citizen Code of Conduct */
-      name: string;
-      /**
-       * Format: uri
-       * @example https://github.com/github/docs/blob/main/CODE_OF_CONDUCT.md
-       */
-      html_url: string | null;
-    } | null;
-    /** Community Health File */
-    "nullable-community-health-file": {
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      html_url: string;
-    } | null;
-    /**
-     * Community Profile
-     * @description Community Profile
-     */
-    "community-profile": {
-      /** @example 100 */
-      health_percentage: number;
-      /** @example My first repository on GitHub! */
-      description: string | null;
-      /** @example example.com */
-      documentation: string | null;
-      files: {
-        code_of_conduct: components["schemas"]["nullable-code-of-conduct-simple"];
-        code_of_conduct_file: components["schemas"]["nullable-community-health-file"];
-        license: components["schemas"]["nullable-license-simple"];
-        contributing: components["schemas"]["nullable-community-health-file"];
-        readme: components["schemas"]["nullable-community-health-file"];
-        issue_template: components["schemas"]["nullable-community-health-file"];
-        pull_request_template: components["schemas"]["nullable-community-health-file"];
-      };
-      /**
-       * Format: date-time
-       * @example 2017-02-28T19:09:29Z
-       */
-      updated_at: string | null;
-      /** @example true */
-      content_reports_enabled?: boolean;
-    };
-    /**
-     * Commit Comparison
-     * @description Commit Comparison
-     */
-    "commit-comparison": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/compare/master...topic
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/compare/master...topic
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/compare/octocat:bbcd538c8e72b8c175046e27cc8f907076331401...octocat:0328041d1152db8ae77652d1618a02e57f745f17
-       */
-      permalink_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/compare/master...topic.diff
-       */
-      diff_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/compare/master...topic.patch
-       */
-      patch_url: string;
-      base_commit: components["schemas"]["commit"];
-      merge_base_commit: components["schemas"]["commit"];
-      /**
-       * @example ahead
-       * @enum {string}
-       */
-      status: "diverged" | "ahead" | "behind" | "identical";
-      /** @example 4 */
-      ahead_by: number;
-      /** @example 5 */
-      behind_by: number;
-      /** @example 6 */
-      total_commits: number;
-      commits: components["schemas"]["commit"][];
-      files?: components["schemas"]["diff-entry"][];
-    };
-    /**
-     * Content Tree
-     * @description Content Tree
-     */
-    "content-tree": {
-      type: string;
-      size: number;
-      name: string;
-      path: string;
-      sha: string;
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      git_url: string | null;
-      /** Format: uri */
-      html_url: string | null;
-      /** Format: uri */
-      download_url: string | null;
-      entries?: {
-        type: string;
-        size: number;
-        name: string;
-        path: string;
-        content?: string;
-        sha: string;
-        /** Format: uri */
-        url: string;
-        /** Format: uri */
-        git_url: string | null;
-        /** Format: uri */
-        html_url: string | null;
-        /** Format: uri */
-        download_url: string | null;
-        _links: {
-          /** Format: uri */
-          git: string | null;
-          /** Format: uri */
-          html: string | null;
-          /** Format: uri */
-          self: string;
-        };
-      }[];
-      _links: {
-        /** Format: uri */
-        git: string | null;
-        /** Format: uri */
-        html: string | null;
-        /** Format: uri */
-        self: string;
-      };
-    };
-    /**
-     * Content Directory
-     * @description A list of directory items
-     */
-    "content-directory": {
-      /** @enum {string} */
-      type: "dir" | "file" | "submodule" | "symlink";
-      size: number;
-      name: string;
-      path: string;
-      content?: string;
-      sha: string;
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      git_url: string | null;
-      /** Format: uri */
-      html_url: string | null;
-      /** Format: uri */
-      download_url: string | null;
-      _links: {
-        /** Format: uri */
-        git: string | null;
-        /** Format: uri */
-        html: string | null;
-        /** Format: uri */
-        self: string;
-      };
-    }[];
-    /**
-     * Content File
-     * @description Content File
-     */
-    "content-file": {
-      /** @enum {string} */
-      type: "file";
-      encoding: string;
-      size: number;
-      name: string;
-      path: string;
-      content: string;
-      sha: string;
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      git_url: string | null;
-      /** Format: uri */
-      html_url: string | null;
-      /** Format: uri */
-      download_url: string | null;
-      _links: {
-        /** Format: uri */
-        git: string | null;
-        /** Format: uri */
-        html: string | null;
-        /** Format: uri */
-        self: string;
-      };
-      /** @example "actual/actual.md" */
-      target?: string;
-      /** @example "git://example.com/defunkt/dotjs.git" */
-      submodule_git_url?: string;
-    };
-    /**
-     * Symlink Content
-     * @description An object describing a symlink
-     */
-    "content-symlink": {
-      /** @enum {string} */
-      type: "symlink";
-      target: string;
-      size: number;
-      name: string;
-      path: string;
-      sha: string;
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      git_url: string | null;
-      /** Format: uri */
-      html_url: string | null;
-      /** Format: uri */
-      download_url: string | null;
-      _links: {
-        /** Format: uri */
-        git: string | null;
-        /** Format: uri */
-        html: string | null;
-        /** Format: uri */
-        self: string;
-      };
-    };
-    /**
-     * Submodule Content
-     * @description An object describing a submodule
-     */
-    "content-submodule": {
-      /** @enum {string} */
-      type: "submodule";
-      /** Format: uri */
-      submodule_git_url: string;
-      size: number;
-      name: string;
-      path: string;
-      sha: string;
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      git_url: string | null;
-      /** Format: uri */
-      html_url: string | null;
-      /** Format: uri */
-      download_url: string | null;
-      _links: {
-        /** Format: uri */
-        git: string | null;
-        /** Format: uri */
-        html: string | null;
-        /** Format: uri */
-        self: string;
-      };
-    };
-    /**
-     * File Commit
-     * @description File Commit
-     */
-    "file-commit": {
-      content: {
-        name?: string;
-        path?: string;
-        sha?: string;
-        size?: number;
-        url?: string;
-        html_url?: string;
-        git_url?: string;
-        download_url?: string;
-        type?: string;
-        _links?: {
-          self?: string;
-          git?: string;
-          html?: string;
-        };
-      } | null;
-      commit: {
-        sha?: string;
-        node_id?: string;
-        url?: string;
-        html_url?: string;
-        author?: {
-          date?: string;
-          name?: string;
-          email?: string;
-        };
-        committer?: {
-          date?: string;
-          name?: string;
-          email?: string;
-        };
-        message?: string;
-        tree?: {
-          url?: string;
-          sha?: string;
-        };
-        parents?: {
-          url?: string;
-          html_url?: string;
-          sha?: string;
-        }[];
-        verification?: {
-          verified?: boolean;
-          reason?: string;
-          signature?: string | null;
-          payload?: string | null;
-        };
-      };
-    };
-    /**
-     * Contributor
-     * @description Contributor
-     */
-    contributor: {
-      login?: string;
-      id?: number;
-      node_id?: string;
-      /** Format: uri */
-      avatar_url?: string;
-      gravatar_id?: string | null;
-      /** Format: uri */
-      url?: string;
-      /** Format: uri */
-      html_url?: string;
-      /** Format: uri */
-      followers_url?: string;
-      following_url?: string;
-      gists_url?: string;
-      starred_url?: string;
-      /** Format: uri */
-      subscriptions_url?: string;
-      /** Format: uri */
-      organizations_url?: string;
-      /** Format: uri */
-      repos_url?: string;
-      events_url?: string;
-      /** Format: uri */
-      received_events_url?: string;
-      type: string;
-      site_admin?: boolean;
-      contributions: number;
-      email?: string;
-      name?: string;
-    };
-    /** @description A Dependabot alert. */
-    "dependabot-alert": {
-      number: components["schemas"]["alert-number"];
-      /**
-       * @description The state of the Dependabot alert.
-       * @enum {string}
-       */
-      state: "auto_dismissed" | "dismissed" | "fixed" | "open";
-      /** @description Details for the vulnerable dependency. */
-      dependency: {
-        readonly package?: components["schemas"]["dependabot-alert-package"];
-        /** @description The full path to the dependency manifest file, relative to the root of the repository. */
-        readonly manifest_path?: string;
-        /**
-         * @description The execution scope of the vulnerable dependency.
-         * @enum {string|null}
-         */
-        readonly scope?: "development" | "runtime" | null;
-      };
-      security_advisory: components["schemas"]["dependabot-alert-security-advisory"];
-      security_vulnerability: components["schemas"]["dependabot-alert-security-vulnerability"];
-      url: components["schemas"]["alert-url"];
-      html_url: components["schemas"]["alert-html-url"];
-      created_at: components["schemas"]["alert-created-at"];
-      updated_at: components["schemas"]["alert-updated-at"];
-      dismissed_at: components["schemas"]["alert-dismissed-at"];
-      dismissed_by: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description The reason that the alert was dismissed.
-       * @enum {string|null}
-       */
-      dismissed_reason:
-        | "fix_started"
-        | "inaccurate"
-        | "no_bandwidth"
-        | "not_used"
-        | "tolerable_risk"
-        | null;
-      /** @description An optional comment associated with the alert's dismissal. */
-      dismissed_comment: string | null;
-      fixed_at: components["schemas"]["alert-fixed-at"];
-      auto_dismissed_at?: components["schemas"]["alert-auto-dismissed-at"];
-    };
-    /**
-     * Dependabot Secret
-     * @description Set secrets for Dependabot.
-     */
-    "dependabot-secret": {
-      /**
-       * @description The name of the secret.
-       * @example MY_ARTIFACTORY_PASSWORD
-       */
-      name: string;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-    };
-    /**
-     * Dependency Graph Diff
-     * @description A diff of the dependencies between two commits.
-     */
-    "dependency-graph-diff": {
-      /** @enum {string} */
-      change_type: "added" | "removed";
-      /** @example path/to/package-lock.json */
-      manifest: string;
-      /** @example npm */
-      ecosystem: string;
-      /** @example @actions/core */
-      name: string;
-      /** @example 1.0.0 */
-      version: string;
-      /** @example pkg:/npm/%40actions/core@1.1.0 */
-      package_url: string | null;
-      /** @example MIT */
-      license: string | null;
-      /** @example https://github.com/github/actions */
-      source_repository_url: string | null;
-      vulnerabilities: {
-        /** @example critical */
-        severity: string;
-        /** @example GHSA-rf4j-j272-fj86 */
-        advisory_ghsa_id: string;
-        /** @example A summary of the advisory. */
-        advisory_summary: string;
-        /** @example https://github.com/advisories/GHSA-rf4j-j272-fj86 */
-        advisory_url: string;
-      }[];
-      /**
-       * @description Where the dependency is utilized. `development` means that the dependency is only utilized in the development environment. `runtime` means that the dependency is utilized at runtime and in the development environment.
-       * @enum {string}
-       */
-      scope: "unknown" | "runtime" | "development";
-    }[];
-    /**
-     * Dependency Graph SPDX SBOM
-     * @description A schema for the SPDX JSON format returned by the Dependency Graph.
-     */
-    "dependency-graph-spdx-sbom": {
-      sbom: {
-        /**
-         * @description The SPDX identifier for the SPDX document.
-         * @example SPDXRef-DOCUMENT
-         */
-        SPDXID: string;
-        /**
-         * @description The version of the SPDX specification that this document conforms to.
-         * @example SPDX-2.3
-         */
-        spdxVersion: string;
-        creationInfo: {
-          /**
-           * @description The date and time the SPDX document was created.
-           * @example 2021-11-03T00:00:00Z
-           */
-          created: string;
-          /** @description The tools that were used to generate the SPDX document. */
-          creators: string[];
-        };
-        /**
-         * @description The name of the SPDX document.
-         * @example github/github
-         */
-        name: string;
-        /**
-         * @description The license under which the SPDX document is licensed.
-         * @example CC0-1.0
-         */
-        dataLicense: string;
-        /** @description The name of the repository that the SPDX document describes. */
-        documentDescribes: string[];
-        /**
-         * @description The namespace for the SPDX document.
-         * @example https://github.com/example/dependency_graph/sbom-123
-         */
-        documentNamespace: string;
-        packages: {
-          /**
-           * @description A unique SPDX identifier for the package.
-           * @example SPDXRef-Package
-           */
-          SPDXID?: string;
-          /**
-           * @description The name of the package.
-           * @example rubygems:github/github
-           */
-          name?: string;
-          /**
-           * @description The version of the package. If the package does not have an exact version specified,
-           * a version range is given.
-           * @example 1.0.0
-           */
-          versionInfo?: string;
-          /**
-           * @description The location where the package can be downloaded,
-           * or NOASSERTION if this has not been determined.
-           * @example NOASSERTION
-           */
-          downloadLocation?: string;
-          /**
-           * @description Whether the package's file content has been subjected to
-           * analysis during the creation of the SPDX document.
-           * @example false
-           */
-          filesAnalyzed?: boolean;
-          /**
-           * @description The license of the package as determined while creating the SPDX document.
-           * @example MIT
-           */
-          licenseConcluded?: string;
-          /**
-           * @description The license of the package as declared by its author, or NOASSERTION if this information
-           * was not available when the SPDX document was created.
-           * @example NOASSERTION
-           */
-          licenseDeclared?: string;
-          /**
-           * @description The distribution source of this package, or NOASSERTION if this was not determined.
-           * @example NOASSERTION
-           */
-          supplier?: string;
-          externalRefs?: {
-            /**
-             * @description The category of reference to an external resource this reference refers to.
-             * @example PACKAGE-MANAGER
-             */
-            referenceCategory: string;
-            /**
-             * @description A locator for the particular external resource this reference refers to.
-             * @example pkg:gem/rails@6.0.1
-             */
-            referenceLocator: string;
-            /**
-             * @description The category of reference to an external resource this reference refers to.
-             * @example purl
-             */
-            referenceType: string;
-          }[];
-        }[];
-      };
-    };
-    /**
-     * metadata
-     * @description User-defined metadata to store domain-specific information limited to 8 keys with scalar values.
-     */
-    metadata: {
-      [key: string]: (string | number | boolean) | null;
-    };
-    dependency: {
-      /**
-       * @description Package-url (PURL) of dependency. See https://github.com/package-url/purl-spec for more details.
-       * @example pkg:/npm/%40actions/http-client@1.0.11
-       */
-      package_url?: string;
-      metadata?: components["schemas"]["metadata"];
-      /**
-       * @description A notation of whether a dependency is requested directly by this manifest or is a dependency of another dependency.
-       * @example direct
-       * @enum {string}
-       */
-      relationship?: "direct" | "indirect";
-      /**
-       * @description A notation of whether the dependency is required for the primary build artifact (runtime) or is only used for development. Future versions of this specification may allow for more granular scopes.
-       * @example runtime
-       * @enum {string}
-       */
-      scope?: "runtime" | "development";
-      /**
-       * @description Array of package-url (PURLs) of direct child dependencies.
-       * @example @actions/http-client
-       */
-      dependencies?: string[];
-    };
-    manifest: {
-      /**
-       * @description The name of the manifest.
-       * @example package-lock.json
-       */
-      name: string;
-      file?: {
-        /**
-         * @description The path of the manifest file relative to the root of the Git repository.
-         * @example /src/build/package-lock.json
-         */
-        source_location?: string;
-      };
-      metadata?: components["schemas"]["metadata"];
-      /** @description A collection of resolved package dependencies. */
-      resolved?: {
-        [key: string]: components["schemas"]["dependency"];
-      };
-    };
-    /**
-     * snapshot
-     * @description Create a new snapshot of a repository's dependencies.
-     */
-    snapshot: {
-      /** @description The version of the repository snapshot submission. */
-      version: number;
-      job: {
-        /**
-         * @description The external ID of the job.
-         * @example 5622a2b0-63f6-4732-8c34-a1ab27e102a11
-         */
-        id: string;
-        /**
-         * @description Correlator provides a key that is used to group snapshots submitted over time. Only the "latest" submitted snapshot for a given combination of `job.correlator` and `detector.name` will be considered when calculating a repository's current dependencies. Correlator should be as unique as it takes to distinguish all detection runs for a given "wave" of CI workflow you run. If you're using GitHub Actions, a good default value for this could be the environment variables GITHUB_WORKFLOW and GITHUB_JOB concatenated together. If you're using a build matrix, then you'll also need to add additional key(s) to distinguish between each submission inside a matrix variation.
-         * @example yourworkflowname_yourjobname
-         */
-        correlator: string;
-        /**
-         * @description The url for the job.
-         * @example http://example.com/build
-         */
-        html_url?: string;
-      };
-      /**
-       * @description The commit SHA associated with this dependency snapshot. Maximum length: 40 characters.
-       * @example ddc951f4b1293222421f2c8df679786153acf689
-       */
-      sha: string;
-      /**
-       * @description The repository branch that triggered this snapshot.
-       * @example refs/heads/main
-       */
-      ref: string;
-      /** @description A description of the detector used. */
-      detector: {
-        /**
-         * @description The name of the detector used.
-         * @example docker buildtime detector
-         */
-        name: string;
-        /**
-         * @description The version of the detector used.
-         * @example 1.0.0
-         */
-        version: string;
-        /**
-         * @description The url of the detector used.
-         * @example http://example.com/docker-buildtimer-detector
-         */
-        url: string;
-      };
-      metadata?: components["schemas"]["metadata"];
-      /** @description A collection of package manifests, which are a collection of related dependencies declared in a file or representing a logical group of dependencies. */
-      manifests?: {
-        [key: string]: components["schemas"]["manifest"];
-      };
-      /**
-       * Format: date-time
-       * @description The time at which the snapshot was scanned.
-       * @example 2020-06-13T14:52:50-05:00
-       */
-      scanned: string;
-    };
-    /**
-     * Deployment Status
-     * @description The status of a deployment.
-     */
-    "deployment-status": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/example/deployments/42/statuses/1
-       */
-      url: string;
-      /** @example 1 */
-      id: number;
-      /** @example MDE2OkRlcGxveW1lbnRTdGF0dXMx */
-      node_id: string;
-      /**
-       * @description The state of the status.
-       * @example success
-       * @enum {string}
-       */
-      state:
-        | "error"
-        | "failure"
-        | "inactive"
-        | "pending"
-        | "success"
-        | "queued"
-        | "in_progress";
-      creator: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description A short description of the status.
-       * @default
-       * @example Deployment finished successfully.
-       */
-      description: string;
-      /**
-       * @description The environment of the deployment that the status is for.
-       * @default
-       * @example production
-       */
-      environment?: string;
-      /**
-       * Format: uri
-       * @description Deprecated: the URL to associate with this status.
-       * @default
-       * @example https://example.com/deployment/42/output
-       */
-      target_url: string;
-      /**
-       * Format: date-time
-       * @example 2012-07-20T01:19:13Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2012-07-20T01:19:13Z
-       */
-      updated_at: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/example/deployments/42
-       */
-      deployment_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/example
-       */
-      repository_url: string;
-      /**
-       * Format: uri
-       * @description The URL for accessing your environment.
-       * @default
-       * @example https://staging.example.com/
-       */
-      environment_url?: string;
-      /**
-       * Format: uri
-       * @description The URL to associate with this status.
-       * @default
-       * @example https://example.com/deployment/42/output
-       */
-      log_url?: string;
-      performed_via_github_app?: components["schemas"]["nullable-integration"];
-    };
-    /**
-     * @description The amount of time to delay a job after the job is initially triggered. The time (in minutes) must be an integer between 0 and 43,200 (30 days).
-     * @example 30
-     */
-    "wait-timer": number;
-    /** @description The type of deployment branch policy for this environment. To allow all branches to deploy, set to `null`. */
-    "deployment-branch-policy-settings": {
-      /** @description Whether only branches with branch protection rules can deploy to this environment. If `protected_branches` is `true`, `custom_branch_policies` must be `false`; if `protected_branches` is `false`, `custom_branch_policies` must be `true`. */
-      protected_branches: boolean;
-      /** @description Whether only branches that match the specified name patterns can deploy to this environment.  If `custom_branch_policies` is `true`, `protected_branches` must be `false`; if `custom_branch_policies` is `false`, `protected_branches` must be `true`. */
-      custom_branch_policies: boolean;
-    } | null;
-    /**
-     * Environment
-     * @description Details of a deployment environment
-     */
-    environment: {
-      /**
-       * @description The id of the environment.
-       * @example 56780428
-       */
-      id: number;
-      /** @example MDExOkVudmlyb25tZW50NTY3ODA0Mjg= */
-      node_id: string;
-      /**
-       * @description The name of the environment.
-       * @example staging
-       */
-      name: string;
-      /** @example https://api.github.com/repos/github/hello-world/environments/staging */
-      url: string;
-      /** @example https://github.com/github/hello-world/deployments/activity_log?environments_filter=staging */
-      html_url: string;
-      /**
-       * Format: date-time
-       * @description The time that the environment was created, in ISO 8601 format.
-       * @example 2020-11-23T22:00:40Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @description The time that the environment was last updated, in ISO 8601 format.
-       * @example 2020-11-23T22:00:40Z
-       */
-      updated_at: string;
-      /** @description Built-in deployment protection rules for the environment. */
-      protection_rules?: (
-        | {
-            /** @example 3515 */
-            id: number;
-            /** @example MDQ6R2F0ZTM1MTU= */
-            node_id: string;
-            /** @example wait_timer */
-            type: string;
-            wait_timer?: components["schemas"]["wait-timer"];
-          }
-        | {
-            /** @example 3755 */
-            id: number;
-            /** @example MDQ6R2F0ZTM3NTU= */
-            node_id: string;
-            /**
-             * @description Whether deployments to this environment can be approved by the user who created the deployment.
-             * @example false
-             */
-            prevent_self_review?: boolean;
-            /** @example required_reviewers */
-            type: string;
-            /** @description The people or teams that may approve jobs that reference the environment. You can list up to six users or teams as reviewers. The reviewers must have at least read access to the repository. Only one of the required reviewers needs to approve the job for it to proceed. */
-            reviewers?: {
-              type?: components["schemas"]["deployment-reviewer-type"];
-              reviewer?:
-                | components["schemas"]["simple-user"]
-                | components["schemas"]["team"];
-            }[];
-          }
-        | {
-            /** @example 3515 */
-            id: number;
-            /** @example MDQ6R2F0ZTM1MTU= */
-            node_id: string;
-            /** @example branch_policy */
-            type: string;
-          }
-      )[];
-      deployment_branch_policy?: components["schemas"]["deployment-branch-policy-settings"];
-    };
-    /**
-     * @description Whether or not a user who created the job is prevented from approving their own job.
-     * @example false
-     */
-    "prevent-self-review": boolean;
-    /**
-     * Deployment branch policy
-     * @description Details of a deployment branch or tag policy.
-     */
-    "deployment-branch-policy": {
-      /**
-       * @description The unique identifier of the branch or tag policy.
-       * @example 361471
-       */
-      id?: number;
-      /** @example MDE2OkdhdGVCcmFuY2hQb2xpY3kzNjE0NzE= */
-      node_id?: string;
-      /**
-       * @description The name pattern that branches or tags must match in order to deploy to the environment.
-       * @example release/*
-       */
-      name?: string;
-      /**
-       * @description Whether this rule targets a branch or tag.
-       * @example branch
-       * @enum {string}
-       */
-      type?: "branch" | "tag";
-    };
-    /** Deployment branch and tag policy name pattern */
-    "deployment-branch-policy-name-pattern-with-type": {
-      /**
-       * @description The name pattern that branches or tags must match in order to deploy to the environment.
-       *
-       * Wildcard characters will not match `/`. For example, to match branches that begin with `release/` and contain an additional single slash, use `release/*\/*`.
-       * For more information about pattern matching syntax, see the [Ruby File.fnmatch documentation](https://ruby-doc.org/core-2.5.1/File.html#method-c-fnmatch).
-       * @example release/*
-       */
-      name: string;
-      /**
-       * @description Whether this rule targets a branch or tag
-       * @example branch
-       * @enum {string}
-       */
-      type?: "branch" | "tag";
-    };
-    /** Deployment branch policy name pattern */
-    "deployment-branch-policy-name-pattern": {
-      /**
-       * @description The name pattern that branches must match in order to deploy to the environment.
-       *
-       * Wildcard characters will not match `/`. For example, to match branches that begin with `release/` and contain an additional single slash, use `release/*\/*`.
-       * For more information about pattern matching syntax, see the [Ruby File.fnmatch documentation](https://ruby-doc.org/core-2.5.1/File.html#method-c-fnmatch).
-       * @example release/*
-       */
-      name: string;
-    };
-    /**
-     * Custom deployment protection rule app
-     * @description A GitHub App that is providing a custom deployment protection rule.
-     */
-    "custom-deployment-rule-app": {
-      /**
-       * @description The unique identifier of the deployment protection rule integration.
-       * @example 3515
-       */
-      id: number;
-      /**
-       * @description The slugified name of the deployment protection rule integration.
-       * @example my-custom-app
-       */
-      slug: string;
-      /**
-       * @description The URL for the endpoint to get details about the app.
-       * @example https://api.github.com/apps/custom-app-slug
-       */
-      integration_url: string;
-      /**
-       * @description The node ID for the deployment protection rule integration.
-       * @example MDQ6R2F0ZTM1MTU=
-       */
-      node_id: string;
-    };
-    /**
-     * Deployment protection rule
-     * @description Deployment protection rule
-     */
-    "deployment-protection-rule": {
-      /**
-       * @description The unique identifier for the deployment protection rule.
-       * @example 3515
-       */
-      id: number;
-      /**
-       * @description The node ID for the deployment protection rule.
-       * @example MDQ6R2F0ZTM1MTU=
-       */
-      node_id: string;
-      /**
-       * @description Whether the deployment protection rule is enabled for the environment.
-       * @example true
-       */
-      enabled: boolean;
-      app: components["schemas"]["custom-deployment-rule-app"];
-    };
-    /**
-     * Short Blob
-     * @description Short Blob
-     */
-    "short-blob": {
-      url: string;
-      sha: string;
-    };
-    /**
-     * Blob
-     * @description Blob
-     */
-    blob: {
-      content: string;
-      encoding: string;
-      /** Format: uri */
-      url: string;
-      sha: string;
-      size: number | null;
-      node_id: string;
-      highlighted_content?: string;
-    };
-    /**
-     * Git Commit
-     * @description Low-level Git commit operations within a repository
-     */
-    "git-commit": {
-      /**
-       * @description SHA for the commit
-       * @example 7638417db6d59f3c431d3e1f261cc637155684cd
-       */
-      sha: string;
-      node_id: string;
-      /** Format: uri */
-      url: string;
-      /** @description Identifying information for the git-user */
-      author: {
-        /**
-         * Format: date-time
-         * @description Timestamp of the commit
-         * @example 2014-08-09T08:02:04+12:00
-         */
-        date: string;
-        /**
-         * @description Git email address of the user
-         * @example monalisa.octocat@example.com
-         */
-        email: string;
-        /**
-         * @description Name of the git user
-         * @example Monalisa Octocat
-         */
-        name: string;
-      };
-      /** @description Identifying information for the git-user */
-      committer: {
-        /**
-         * Format: date-time
-         * @description Timestamp of the commit
-         * @example 2014-08-09T08:02:04+12:00
-         */
-        date: string;
-        /**
-         * @description Git email address of the user
-         * @example monalisa.octocat@example.com
-         */
-        email: string;
-        /**
-         * @description Name of the git user
-         * @example Monalisa Octocat
-         */
-        name: string;
-      };
-      /**
-       * @description Message describing the purpose of the commit
-       * @example Fix #42
-       */
-      message: string;
-      tree: {
-        /**
-         * @description SHA for the commit
-         * @example 7638417db6d59f3c431d3e1f261cc637155684cd
-         */
-        sha: string;
-        /** Format: uri */
-        url: string;
-      };
-      parents: {
-        /**
-         * @description SHA for the commit
-         * @example 7638417db6d59f3c431d3e1f261cc637155684cd
-         */
-        sha: string;
-        /** Format: uri */
-        url: string;
-        /** Format: uri */
-        html_url: string;
-      }[];
-      verification: {
-        verified: boolean;
-        reason: string;
-        signature: string | null;
-        payload: string | null;
-      };
-      /** Format: uri */
-      html_url: string;
-    };
-    /**
-     * Git Reference
-     * @description Git references within a repository
-     */
-    "git-ref": {
-      ref: string;
-      node_id: string;
-      /** Format: uri */
-      url: string;
-      object: {
-        type: string;
-        /**
-         * @description SHA for the reference
-         * @example 7638417db6d59f3c431d3e1f261cc637155684cd
-         */
-        sha: string;
-        /** Format: uri */
-        url: string;
-      };
-    };
-    /**
-     * Git Tag
-     * @description Metadata for a Git tag
-     */
-    "git-tag": {
-      /** @example MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw== */
-      node_id: string;
-      /**
-       * @description Name of the tag
-       * @example v0.0.1
-       */
-      tag: string;
-      /** @example 940bd336248efae0f9ee5bc7b2d5c985887b16ac */
-      sha: string;
-      /**
-       * Format: uri
-       * @description URL for the tag
-       * @example https://api.github.com/repositories/42/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac
-       */
-      url: string;
-      /**
-       * @description Message describing the purpose of the tag
-       * @example Initial public release
-       */
-      message: string;
-      tagger: {
-        date: string;
-        email: string;
-        name: string;
-      };
-      object: {
-        sha: string;
-        type: string;
-        /** Format: uri */
-        url: string;
-      };
-      verification?: components["schemas"]["verification"];
-    };
-    /**
-     * Git Tree
-     * @description The hierarchy between files in a Git repository.
-     */
-    "git-tree": {
-      sha: string;
-      /** Format: uri */
-      url: string;
-      truncated: boolean;
-      /**
-       * @description Objects specifying a tree structure
-       * @example [
-       *   {
-       *     "path": "file.rb",
-       *     "mode": "100644",
-       *     "type": "blob",
-       *     "size": 30,
-       *     "sha": "44b4fc6d56897b048c772eb4087f854f46256132",
-       *     "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132",
-       *     "properties": {
-       *       "path": {
-       *         "type": "string"
-       *       },
-       *       "mode": {
-       *         "type": "string"
-       *       },
-       *       "type": {
-       *         "type": "string"
-       *       },
-       *       "size": {
-       *         "type": "integer"
-       *       },
-       *       "sha": {
-       *         "type": "string"
-       *       },
-       *       "url": {
-       *         "type": "string"
-       *       }
-       *     },
-       *     "required": [
-       *       "path",
-       *       "mode",
-       *       "type",
-       *       "sha",
-       *       "url",
-       *       "size"
-       *     ]
-       *   }
-       * ]
-       */
-      tree: {
-        /** @example test/file.rb */
-        path?: string;
-        /** @example 040000 */
-        mode?: string;
-        /** @example tree */
-        type?: string;
-        /** @example 23f6827669e43831def8a7ad935069c8bd418261 */
-        sha?: string;
-        /** @example 12 */
-        size?: number;
-        /** @example https://api.github.com/repos/owner-482f3203ecf01f67e9deb18e/BBB_Private_Repo/git/blobs/23f6827669e43831def8a7ad935069c8bd418261 */
-        url?: string;
-      }[];
-    };
-    /** Hook Response */
-    "hook-response": {
-      code: number | null;
-      status: string | null;
-      message: string | null;
-    };
-    /**
-     * Webhook
-     * @description Webhooks for repositories.
-     */
-    hook: {
-      type: string;
-      /**
-       * @description Unique identifier of the webhook.
-       * @example 42
-       */
-      id: number;
-      /**
-       * @description The name of a valid service, use 'web' for a webhook.
-       * @example web
-       */
-      name: string;
-      /**
-       * @description Determines whether the hook is actually triggered on pushes.
-       * @example true
-       */
-      active: boolean;
-      /**
-       * @description Determines what events the hook is triggered for. Default: ['push'].
-       * @example [
-       *   "push",
-       *   "pull_request"
-       * ]
-       */
-      events: string[];
-      config: {
-        /** @example "foo@bar.com" */
-        email?: string;
-        /** @example "foo" */
-        password?: string;
-        /** @example "roomer" */
-        room?: string;
-        /** @example "foo" */
-        subdomain?: string;
-        url?: components["schemas"]["webhook-config-url"];
-        insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"];
-        content_type?: components["schemas"]["webhook-config-content-type"];
-        /** @example "sha256" */
-        digest?: string;
-        secret?: components["schemas"]["webhook-config-secret"];
-        /** @example "abc" */
-        token?: string;
-      };
-      /**
-       * Format: date-time
-       * @example 2011-09-06T20:39:23Z
-       */
-      updated_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-09-06T17:26:27Z
-       */
-      created_at: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/hooks/1
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/hooks/1/test
-       */
-      test_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/hooks/1/pings
-       */
-      ping_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/hooks/1/deliveries
-       */
-      deliveries_url?: string;
-      last_response: components["schemas"]["hook-response"];
-    };
-    /**
-     * Import
-     * @description A repository import from an external source.
-     */
-    import: {
-      vcs: string | null;
-      use_lfs?: boolean;
-      /** @description The URL of the originating repository. */
-      vcs_url: string;
-      svc_root?: string;
-      tfvc_project?: string;
-      /** @enum {string} */
-      status:
-        | "auth"
-        | "error"
-        | "none"
-        | "detecting"
-        | "choose"
-        | "auth_failed"
-        | "importing"
-        | "mapping"
-        | "waiting_to_push"
-        | "pushing"
-        | "complete"
-        | "setup"
-        | "unknown"
-        | "detection_found_multiple"
-        | "detection_found_nothing"
-        | "detection_needs_auth";
-      status_text?: string | null;
-      failed_step?: string | null;
-      error_message?: string | null;
-      import_percent?: number | null;
-      commit_count?: number | null;
-      push_percent?: number | null;
-      has_large_files?: boolean;
-      large_files_size?: number;
-      large_files_count?: number;
-      project_choices?: {
-        vcs?: string;
-        tfvc_project?: string;
-        human_name?: string;
-      }[];
-      message?: string;
-      authors_count?: number | null;
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      html_url: string;
-      /** Format: uri */
-      authors_url: string;
-      /** Format: uri */
-      repository_url: string;
-      svn_root?: string;
-    };
-    /**
-     * Porter Author
-     * @description Porter Author
-     */
-    "porter-author": {
-      id: number;
-      remote_id: string;
-      remote_name: string;
-      email: string;
-      name: string;
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      import_url: string;
-    };
-    /**
-     * Porter Large File
-     * @description Porter Large File
-     */
-    "porter-large-file": {
-      ref_name: string;
-      path: string;
-      oid: string;
-      size: number;
-    };
-    /**
-     * Issue
-     * @description Issues are a great way to keep track of tasks, enhancements, and bugs for your projects.
-     */
-    "nullable-issue": {
-      /** Format: int64 */
-      id: number;
-      node_id: string;
-      /**
-       * Format: uri
-       * @description URL for the issue
-       * @example https://api.github.com/repositories/42/issues/1
-       */
-      url: string;
-      /** Format: uri */
-      repository_url: string;
-      labels_url: string;
-      /** Format: uri */
-      comments_url: string;
-      /** Format: uri */
-      events_url: string;
-      /** Format: uri */
-      html_url: string;
-      /**
-       * @description Number uniquely identifying the issue within its repository
-       * @example 42
-       */
-      number: number;
-      /**
-       * @description State of the issue; either 'open' or 'closed'
-       * @example open
-       */
-      state: string;
-      /**
-       * @description The reason for the current state
-       * @example not_planned
-       * @enum {string|null}
-       */
-      state_reason?: "completed" | "reopened" | "not_planned" | null;
-      /**
-       * @description Title of the issue
-       * @example Widget creation fails in Safari on OS X 10.8
-       */
-      title: string;
-      /**
-       * @description Contents of the issue
-       * @example It looks like the new widget form is broken on Safari. When I try and create the widget, Safari crashes. This is reproducible on 10.8, but not 10.9. Maybe a browser bug?
-       */
-      body?: string | null;
-      user: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description Labels to associate with this issue; pass one or more label names to replace the set of labels on this issue; send an empty array to clear all labels from the issue; note that the labels are silently dropped for users without push access to the repository
-       * @example [
-       *   "bug",
-       *   "registration"
-       * ]
-       */
-      labels: OneOf<
-        [
-          string,
-          {
-            /** Format: int64 */
-            id?: number;
-            node_id?: string;
-            /** Format: uri */
-            url?: string;
-            name?: string;
-            description?: string | null;
-            color?: string | null;
-            default?: boolean;
-          },
-        ]
-      >[];
-      assignee: components["schemas"]["nullable-simple-user"];
-      assignees?: components["schemas"]["simple-user"][] | null;
-      milestone: components["schemas"]["nullable-milestone"];
-      locked: boolean;
-      active_lock_reason?: string | null;
-      comments: number;
-      pull_request?: {
-        /** Format: date-time */
-        merged_at?: string | null;
-        /** Format: uri */
-        diff_url: string | null;
-        /** Format: uri */
-        html_url: string | null;
-        /** Format: uri */
-        patch_url: string | null;
-        /** Format: uri */
-        url: string | null;
-      };
-      /** Format: date-time */
-      closed_at: string | null;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      draft?: boolean;
-      closed_by?: components["schemas"]["nullable-simple-user"];
-      body_html?: string;
-      body_text?: string;
-      /** Format: uri */
-      timeline_url?: string;
-      repository?: components["schemas"]["repository"];
-      performed_via_github_app?: components["schemas"]["nullable-integration"];
-      author_association: components["schemas"]["author-association"];
-      reactions?: components["schemas"]["reaction-rollup"];
-    } | null;
-    /**
-     * Issue Event Label
-     * @description Issue Event Label
-     */
-    "issue-event-label": {
-      name: string | null;
-      color: string | null;
-    };
-    /** Issue Event Dismissed Review */
-    "issue-event-dismissed-review": {
-      state: string;
-      review_id: number;
-      dismissal_message: string | null;
-      dismissal_commit_id?: string | null;
-    };
-    /**
-     * Issue Event Milestone
-     * @description Issue Event Milestone
-     */
-    "issue-event-milestone": {
-      title: string;
-    };
-    /**
-     * Issue Event Project Card
-     * @description Issue Event Project Card
-     */
-    "issue-event-project-card": {
-      /** Format: uri */
-      url: string;
-      id: number;
-      /** Format: uri */
-      project_url: string;
-      project_id: number;
-      column_name: string;
-      previous_column_name?: string;
-    };
-    /**
-     * Issue Event Rename
-     * @description Issue Event Rename
-     */
-    "issue-event-rename": {
-      from: string;
-      to: string;
-    };
-    /**
-     * Issue Event
-     * @description Issue Event
-     */
-    "issue-event": {
-      /**
-       * Format: int64
-       * @example 1
-       */
-      id: number;
-      /** @example MDEwOklzc3VlRXZlbnQx */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/issues/events/1
-       */
-      url: string;
-      actor: components["schemas"]["nullable-simple-user"];
-      /** @example closed */
-      event: string;
-      /** @example 6dcb09b5b57875f334f61aebed695e2e4193db5e */
-      commit_id: string | null;
-      /** @example https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e */
-      commit_url: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-04-14T16:00:49Z
-       */
-      created_at: string;
-      issue?: components["schemas"]["nullable-issue"];
-      label?: components["schemas"]["issue-event-label"];
-      assignee?: components["schemas"]["nullable-simple-user"];
-      assigner?: components["schemas"]["nullable-simple-user"];
-      review_requester?: components["schemas"]["nullable-simple-user"];
-      requested_reviewer?: components["schemas"]["nullable-simple-user"];
-      requested_team?: components["schemas"]["team"];
-      dismissed_review?: components["schemas"]["issue-event-dismissed-review"];
-      milestone?: components["schemas"]["issue-event-milestone"];
-      project_card?: components["schemas"]["issue-event-project-card"];
-      rename?: components["schemas"]["issue-event-rename"];
-      author_association?: components["schemas"]["author-association"];
-      lock_reason?: string | null;
-      performed_via_github_app?: components["schemas"]["nullable-integration"];
-    };
-    /**
-     * Labeled Issue Event
-     * @description Labeled Issue Event
-     */
-    "labeled-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      label: {
-        name: string;
-        color: string;
-      };
-    };
-    /**
-     * Unlabeled Issue Event
-     * @description Unlabeled Issue Event
-     */
-    "unlabeled-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      label: {
-        name: string;
-        color: string;
-      };
-    };
-    /**
-     * Assigned Issue Event
-     * @description Assigned Issue Event
-     */
-    "assigned-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["integration"];
-      assignee: components["schemas"]["simple-user"];
-      assigner: components["schemas"]["simple-user"];
-    };
-    /**
-     * Unassigned Issue Event
-     * @description Unassigned Issue Event
-     */
-    "unassigned-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      assignee: components["schemas"]["simple-user"];
-      assigner: components["schemas"]["simple-user"];
-    };
-    /**
-     * Milestoned Issue Event
-     * @description Milestoned Issue Event
-     */
-    "milestoned-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      milestone: {
-        title: string;
-      };
-    };
-    /**
-     * Demilestoned Issue Event
-     * @description Demilestoned Issue Event
-     */
-    "demilestoned-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      milestone: {
-        title: string;
-      };
-    };
-    /**
-     * Renamed Issue Event
-     * @description Renamed Issue Event
-     */
-    "renamed-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      rename: {
-        from: string;
-        to: string;
-      };
-    };
-    /**
-     * Review Requested Issue Event
-     * @description Review Requested Issue Event
-     */
-    "review-requested-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      review_requester: components["schemas"]["simple-user"];
-      requested_team?: components["schemas"]["team"];
-      requested_reviewer?: components["schemas"]["simple-user"];
-    };
-    /**
-     * Review Request Removed Issue Event
-     * @description Review Request Removed Issue Event
-     */
-    "review-request-removed-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      review_requester: components["schemas"]["simple-user"];
-      requested_team?: components["schemas"]["team"];
-      requested_reviewer?: components["schemas"]["simple-user"];
-    };
-    /**
-     * Review Dismissed Issue Event
-     * @description Review Dismissed Issue Event
-     */
-    "review-dismissed-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      dismissed_review: {
-        state: string;
-        review_id: number;
-        dismissal_message: string | null;
-        dismissal_commit_id?: string;
-      };
-    };
-    /**
-     * Locked Issue Event
-     * @description Locked Issue Event
-     */
-    "locked-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      /** @example "off-topic" */
-      lock_reason: string | null;
-    };
-    /**
-     * Added to Project Issue Event
-     * @description Added to Project Issue Event
-     */
-    "added-to-project-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      project_card?: {
-        id: number;
-        /** Format: uri */
-        url: string;
-        project_id: number;
-        /** Format: uri */
-        project_url: string;
-        column_name: string;
-        previous_column_name?: string;
-      };
-    };
-    /**
-     * Moved Column in Project Issue Event
-     * @description Moved Column in Project Issue Event
-     */
-    "moved-column-in-project-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      project_card?: {
-        id: number;
-        /** Format: uri */
-        url: string;
-        project_id: number;
-        /** Format: uri */
-        project_url: string;
-        column_name: string;
-        previous_column_name?: string;
-      };
-    };
-    /**
-     * Removed from Project Issue Event
-     * @description Removed from Project Issue Event
-     */
-    "removed-from-project-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      project_card?: {
-        id: number;
-        /** Format: uri */
-        url: string;
-        project_id: number;
-        /** Format: uri */
-        project_url: string;
-        column_name: string;
-        previous_column_name?: string;
-      };
-    };
-    /**
-     * Converted Note to Issue Issue Event
-     * @description Converted Note to Issue Issue Event
-     */
-    "converted-note-to-issue-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["integration"];
-      project_card?: {
-        id: number;
-        /** Format: uri */
-        url: string;
-        project_id: number;
-        /** Format: uri */
-        project_url: string;
-        column_name: string;
-        previous_column_name?: string;
-      };
-    };
-    /**
-     * Issue Event for Issue
-     * @description Issue Event for Issue
-     */
-    "issue-event-for-issue":
-      | components["schemas"]["labeled-issue-event"]
-      | components["schemas"]["unlabeled-issue-event"]
-      | components["schemas"]["assigned-issue-event"]
-      | components["schemas"]["unassigned-issue-event"]
-      | components["schemas"]["milestoned-issue-event"]
-      | components["schemas"]["demilestoned-issue-event"]
-      | components["schemas"]["renamed-issue-event"]
-      | components["schemas"]["review-requested-issue-event"]
-      | components["schemas"]["review-request-removed-issue-event"]
-      | components["schemas"]["review-dismissed-issue-event"]
-      | components["schemas"]["locked-issue-event"]
-      | components["schemas"]["added-to-project-issue-event"]
-      | components["schemas"]["moved-column-in-project-issue-event"]
-      | components["schemas"]["removed-from-project-issue-event"]
-      | components["schemas"]["converted-note-to-issue-issue-event"];
-    /**
-     * Label
-     * @description Color-coded labels help you categorize and filter your issues (just like labels in Gmail).
-     */
-    label: {
-      /**
-       * Format: int64
-       * @example 208045946
-       */
-      id: number;
-      /** @example MDU6TGFiZWwyMDgwNDU5NDY= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @description URL for the label
-       * @example https://api.github.com/repositories/42/labels/bug
-       */
-      url: string;
-      /**
-       * @description The name of the label.
-       * @example bug
-       */
-      name: string;
-      /** @example Something isn't working */
-      description: string | null;
-      /**
-       * @description 6-character hex code, without the leading #, identifying the color
-       * @example FFFFFF
-       */
-      color: string;
-      /** @example true */
-      default: boolean;
-    };
-    /**
-     * Timeline Comment Event
-     * @description Timeline Comment Event
-     */
-    "timeline-comment-event": {
-      event: string;
-      actor: components["schemas"]["simple-user"];
-      /**
-       * @description Unique identifier of the issue comment
-       * @example 42
-       */
-      id: number;
-      node_id: string;
-      /**
-       * Format: uri
-       * @description URL for the issue comment
-       * @example https://api.github.com/repositories/42/issues/comments/1
-       */
-      url: string;
-      /**
-       * @description Contents of the issue comment
-       * @example What version of Safari were you using when you observed this bug?
-       */
-      body?: string;
-      body_text?: string;
-      body_html?: string;
-      /** Format: uri */
-      html_url: string;
-      user: components["schemas"]["simple-user"];
-      /**
-       * Format: date-time
-       * @example 2011-04-14T16:00:49Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-04-14T16:00:49Z
-       */
-      updated_at: string;
-      /** Format: uri */
-      issue_url: string;
-      author_association: components["schemas"]["author-association"];
-      performed_via_github_app?: components["schemas"]["nullable-integration"];
-      reactions?: components["schemas"]["reaction-rollup"];
-    };
-    /**
-     * Timeline Cross Referenced Event
-     * @description Timeline Cross Referenced Event
-     */
-    "timeline-cross-referenced-event": {
-      event: string;
-      actor?: components["schemas"]["simple-user"];
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      source: {
-        type?: string;
-        issue?: components["schemas"]["issue"];
-      };
-    };
-    /**
-     * Timeline Committed Event
-     * @description Timeline Committed Event
-     */
-    "timeline-committed-event": {
-      event?: string;
-      /**
-       * @description SHA for the commit
-       * @example 7638417db6d59f3c431d3e1f261cc637155684cd
-       */
-      sha: string;
-      node_id: string;
-      /** Format: uri */
-      url: string;
-      /** @description Identifying information for the git-user */
-      author: {
-        /**
-         * Format: date-time
-         * @description Timestamp of the commit
-         * @example 2014-08-09T08:02:04+12:00
-         */
-        date: string;
-        /**
-         * @description Git email address of the user
-         * @example monalisa.octocat@example.com
-         */
-        email: string;
-        /**
-         * @description Name of the git user
-         * @example Monalisa Octocat
-         */
-        name: string;
-      };
-      /** @description Identifying information for the git-user */
-      committer: {
-        /**
-         * Format: date-time
-         * @description Timestamp of the commit
-         * @example 2014-08-09T08:02:04+12:00
-         */
-        date: string;
-        /**
-         * @description Git email address of the user
-         * @example monalisa.octocat@example.com
-         */
-        email: string;
-        /**
-         * @description Name of the git user
-         * @example Monalisa Octocat
-         */
-        name: string;
-      };
-      /**
-       * @description Message describing the purpose of the commit
-       * @example Fix #42
-       */
-      message: string;
-      tree: {
-        /**
-         * @description SHA for the commit
-         * @example 7638417db6d59f3c431d3e1f261cc637155684cd
-         */
-        sha: string;
-        /** Format: uri */
-        url: string;
-      };
-      parents: {
-        /**
-         * @description SHA for the commit
-         * @example 7638417db6d59f3c431d3e1f261cc637155684cd
-         */
-        sha: string;
-        /** Format: uri */
-        url: string;
-        /** Format: uri */
-        html_url: string;
-      }[];
-      verification: {
-        verified: boolean;
-        reason: string;
-        signature: string | null;
-        payload: string | null;
-      };
-      /** Format: uri */
-      html_url: string;
-    };
-    /**
-     * Timeline Reviewed Event
-     * @description Timeline Reviewed Event
-     */
-    "timeline-reviewed-event": {
-      event: string;
-      /**
-       * @description Unique identifier of the review
-       * @example 42
-       */
-      id: number;
-      /** @example MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA= */
-      node_id: string;
-      user: components["schemas"]["simple-user"];
-      /**
-       * @description The text of the review.
-       * @example This looks great.
-       */
-      body: string | null;
-      /** @example CHANGES_REQUESTED */
-      state: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls/12
-       */
-      pull_request_url: string;
-      _links: {
-        html: {
-          href: string;
-        };
-        pull_request: {
-          href: string;
-        };
-      };
-      /** Format: date-time */
-      submitted_at?: string;
-      /**
-       * @description A commit SHA for the review.
-       * @example 54bb654c9e6025347f57900a4a5c2313a96b8035
-       */
-      commit_id: string;
-      body_html?: string;
-      body_text?: string;
-      author_association: components["schemas"]["author-association"];
-    };
-    /**
-     * Pull Request Review Comment
-     * @description Pull Request Review Comments are comments on a portion of the Pull Request's diff.
-     */
-    "pull-request-review-comment": {
-      /**
-       * @description URL for the pull request review comment
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1
-       */
-      url: string;
-      /**
-       * @description The ID of the pull request review to which the comment belongs.
-       * @example 42
-       */
-      pull_request_review_id: number | null;
-      /**
-       * @description The ID of the pull request review comment.
-       * @example 1
-       */
-      id: number;
-      /**
-       * @description The node ID of the pull request review comment.
-       * @example MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw
-       */
-      node_id: string;
-      /**
-       * @description The diff of the line that the comment refers to.
-       * @example @@ -16,33 +16,40 @@ public class Connection : IConnection...
-       */
-      diff_hunk: string;
-      /**
-       * @description The relative path of the file to which the comment applies.
-       * @example config/database.yaml
-       */
-      path: string;
-      /**
-       * @description The line index in the diff to which the comment applies. This field is deprecated; use `line` instead.
-       * @example 1
-       */
-      position?: number;
-      /**
-       * @description The index of the original line in the diff to which the comment applies. This field is deprecated; use `original_line` instead.
-       * @example 4
-       */
-      original_position?: number;
-      /**
-       * @description The SHA of the commit to which the comment applies.
-       * @example 6dcb09b5b57875f334f61aebed695e2e4193db5e
-       */
-      commit_id: string;
-      /**
-       * @description The SHA of the original commit to which the comment applies.
-       * @example 9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840
-       */
-      original_commit_id: string;
-      /**
-       * @description The comment ID to reply to.
-       * @example 8
-       */
-      in_reply_to_id?: number;
-      user: components["schemas"]["simple-user"];
-      /**
-       * @description The text of the comment.
-       * @example We should probably include a check for null values here.
-       */
-      body: string;
-      /**
-       * Format: date-time
-       * @example 2011-04-14T16:00:49Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-04-14T16:00:49Z
-       */
-      updated_at: string;
-      /**
-       * Format: uri
-       * @description HTML URL for the pull request review comment.
-       * @example https://github.com/octocat/Hello-World/pull/1#discussion-diff-1
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @description URL for the pull request that the review comment belongs to.
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls/1
-       */
-      pull_request_url: string;
-      author_association: components["schemas"]["author-association"];
-      _links: {
-        self: {
-          /**
-           * Format: uri
-           * @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1
-           */
-          href: string;
-        };
-        html: {
-          /**
-           * Format: uri
-           * @example https://github.com/octocat/Hello-World/pull/1#discussion-diff-1
-           */
-          href: string;
-        };
-        pull_request: {
-          /**
-           * Format: uri
-           * @example https://api.github.com/repos/octocat/Hello-World/pulls/1
-           */
-          href: string;
-        };
-      };
-      /**
-       * @description The first line of the range for a multi-line comment.
-       * @example 2
-       */
-      start_line?: number | null;
-      /**
-       * @description The first line of the range for a multi-line comment.
-       * @example 2
-       */
-      original_start_line?: number | null;
-      /**
-       * @description The side of the first line of the range for a multi-line comment.
-       * @default RIGHT
-       * @enum {string|null}
-       */
-      start_side?: "LEFT" | "RIGHT" | null;
-      /**
-       * @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment
-       * @example 2
-       */
-      line?: number;
-      /**
-       * @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment
-       * @example 2
-       */
-      original_line?: number;
-      /**
-       * @description The side of the diff to which the comment applies. The side of the last line of the range for a multi-line comment
-       * @default RIGHT
-       * @enum {string}
-       */
-      side?: "LEFT" | "RIGHT";
-      /**
-       * @description The level at which the comment is targeted, can be a diff line or a file.
-       * @enum {string}
-       */
-      subject_type?: "line" | "file";
-      reactions?: components["schemas"]["reaction-rollup"];
-      /** @example "<p>comment body</p>" */
-      body_html?: string;
-      /** @example "comment body" */
-      body_text?: string;
-    };
-    /**
-     * Timeline Line Commented Event
-     * @description Timeline Line Commented Event
-     */
-    "timeline-line-commented-event": {
-      event?: string;
-      node_id?: string;
-      comments?: components["schemas"]["pull-request-review-comment"][];
-    };
-    /**
-     * Timeline Commit Commented Event
-     * @description Timeline Commit Commented Event
-     */
-    "timeline-commit-commented-event": {
-      event?: string;
-      node_id?: string;
-      commit_id?: string;
-      comments?: components["schemas"]["commit-comment"][];
-    };
-    /**
-     * Timeline Assigned Issue Event
-     * @description Timeline Assigned Issue Event
-     */
-    "timeline-assigned-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      assignee: components["schemas"]["simple-user"];
-    };
-    /**
-     * Timeline Unassigned Issue Event
-     * @description Timeline Unassigned Issue Event
-     */
-    "timeline-unassigned-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      assignee: components["schemas"]["simple-user"];
-    };
-    /**
-     * State Change Issue Event
-     * @description State Change Issue Event
-     */
-    "state-change-issue-event": {
-      id: number;
-      node_id: string;
-      url: string;
-      actor: components["schemas"]["simple-user"];
-      event: string;
-      commit_id: string | null;
-      commit_url: string | null;
-      created_at: string;
-      performed_via_github_app: components["schemas"]["nullable-integration"];
-      state_reason?: string | null;
-    };
-    /**
-     * Timeline Event
-     * @description Timeline Event
-     */
-    "timeline-issue-events":
-      | components["schemas"]["labeled-issue-event"]
-      | components["schemas"]["unlabeled-issue-event"]
-      | components["schemas"]["milestoned-issue-event"]
-      | components["schemas"]["demilestoned-issue-event"]
-      | components["schemas"]["renamed-issue-event"]
-      | components["schemas"]["review-requested-issue-event"]
-      | components["schemas"]["review-request-removed-issue-event"]
-      | components["schemas"]["review-dismissed-issue-event"]
-      | components["schemas"]["locked-issue-event"]
-      | components["schemas"]["added-to-project-issue-event"]
-      | components["schemas"]["moved-column-in-project-issue-event"]
-      | components["schemas"]["removed-from-project-issue-event"]
-      | components["schemas"]["converted-note-to-issue-issue-event"]
-      | components["schemas"]["timeline-comment-event"]
-      | components["schemas"]["timeline-cross-referenced-event"]
-      | components["schemas"]["timeline-committed-event"]
-      | components["schemas"]["timeline-reviewed-event"]
-      | components["schemas"]["timeline-line-commented-event"]
-      | components["schemas"]["timeline-commit-commented-event"]
-      | components["schemas"]["timeline-assigned-issue-event"]
-      | components["schemas"]["timeline-unassigned-issue-event"]
-      | components["schemas"]["state-change-issue-event"];
-    /**
-     * Deploy Key
-     * @description An SSH key granting access to a single repository.
-     */
-    "deploy-key": {
-      id: number;
-      key: string;
-      url: string;
-      title: string;
-      verified: boolean;
-      created_at: string;
-      read_only: boolean;
-      added_by?: string | null;
-      last_used?: string | null;
-    };
-    /**
-     * Language
-     * @description Language
-     */
-    language: {
-      [key: string]: number;
-    };
-    /**
-     * License Content
-     * @description License Content
-     */
-    "license-content": {
-      name: string;
-      path: string;
-      sha: string;
-      size: number;
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      html_url: string | null;
-      /** Format: uri */
-      git_url: string | null;
-      /** Format: uri */
-      download_url: string | null;
-      type: string;
-      content: string;
-      encoding: string;
-      _links: {
-        /** Format: uri */
-        git: string | null;
-        /** Format: uri */
-        html: string | null;
-        /** Format: uri */
-        self: string;
-      };
-      license: components["schemas"]["nullable-license-simple"];
-    };
-    /**
-     * Merged upstream
-     * @description Results of a successful merge upstream request
-     */
-    "merged-upstream": {
-      message?: string;
-      /** @enum {string} */
-      merge_type?: "merge" | "fast-forward" | "none";
-      base_branch?: string;
-    };
-    /**
-     * Milestone
-     * @description A collection of related issues and pull requests.
-     */
-    milestone: {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/milestones/1
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/milestones/v1.0
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/milestones/1/labels
-       */
-      labels_url: string;
-      /** @example 1002604 */
-      id: number;
-      /** @example MDk6TWlsZXN0b25lMTAwMjYwNA== */
-      node_id: string;
-      /**
-       * @description The number of the milestone.
-       * @example 42
-       */
-      number: number;
-      /**
-       * @description The state of the milestone.
-       * @default open
-       * @example open
-       * @enum {string}
-       */
-      state: "open" | "closed";
-      /**
-       * @description The title of the milestone.
-       * @example v1.0
-       */
-      title: string;
-      /** @example Tracking milestone for version 1.0 */
-      description: string | null;
-      creator: components["schemas"]["nullable-simple-user"];
-      /** @example 4 */
-      open_issues: number;
-      /** @example 8 */
-      closed_issues: number;
-      /**
-       * Format: date-time
-       * @example 2011-04-10T20:09:31Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2014-03-03T18:58:10Z
-       */
-      updated_at: string;
-      /**
-       * Format: date-time
-       * @example 2013-02-12T13:22:01Z
-       */
-      closed_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2012-10-09T23:39:01Z
-       */
-      due_on: string | null;
-    };
-    /** Pages Source Hash */
-    "pages-source-hash": {
-      branch: string;
-      path: string;
-    };
-    /** Pages Https Certificate */
-    "pages-https-certificate": {
-      /**
-       * @example approved
-       * @enum {string}
-       */
-      state:
-        | "new"
-        | "authorization_created"
-        | "authorization_pending"
-        | "authorized"
-        | "authorization_revoked"
-        | "issued"
-        | "uploaded"
-        | "approved"
-        | "errored"
-        | "bad_authz"
-        | "destroy_pending"
-        | "dns_changed";
-      /** @example Certificate is approved */
-      description: string;
-      /**
-       * @description Array of the domain set and its alternate name (if it is configured)
-       * @example [
-       *   "example.com",
-       *   "www.example.com"
-       * ]
-       */
-      domains: string[];
-      /** Format: date */
-      expires_at?: string;
-    };
-    /**
-     * GitHub Pages
-     * @description The configuration for GitHub Pages for a repository.
-     */
-    page: {
-      /**
-       * Format: uri
-       * @description The API address for accessing this Page resource.
-       * @example https://api.github.com/repos/github/hello-world/pages
-       */
-      url: string;
-      /**
-       * @description The status of the most recent build of the Page.
-       * @example built
-       * @enum {string|null}
-       */
-      status: "built" | "building" | "errored" | null;
-      /**
-       * @description The Pages site's custom domain
-       * @example example.com
-       */
-      cname: string | null;
-      /**
-       * @description The state if the domain is verified
-       * @example pending
-       * @enum {string|null}
-       */
-      protected_domain_state?: "pending" | "verified" | "unverified" | null;
-      /**
-       * Format: date-time
-       * @description The timestamp when a pending domain becomes unverified.
-       */
-      pending_domain_unverified_at?: string | null;
-      /**
-       * @description Whether the Page has a custom 404 page.
-       * @default false
-       * @example false
-       */
-      custom_404: boolean;
-      /**
-       * Format: uri
-       * @description The web address the Page can be accessed from.
-       * @example https://example.com
-       */
-      html_url?: string;
-      /**
-       * @description The process in which the Page will be built.
-       * @example legacy
-       * @enum {string|null}
-       */
-      build_type?: "legacy" | "workflow" | null;
-      source?: components["schemas"]["pages-source-hash"];
-      /**
-       * @description Whether the GitHub Pages site is publicly visible. If set to `true`, the site is accessible to anyone on the internet. If set to `false`, the site will only be accessible to users who have at least `read` access to the repository that published the site.
-       * @example true
-       */
-      public: boolean;
-      https_certificate?: components["schemas"]["pages-https-certificate"];
-      /**
-       * @description Whether https is enabled on the domain
-       * @example true
-       */
-      https_enforced?: boolean;
-    };
-    /**
-     * Page Build
-     * @description Page Build
-     */
-    "page-build": {
-      /** Format: uri */
-      url: string;
-      status: string;
-      error: {
-        message: string | null;
-      };
-      pusher: components["schemas"]["nullable-simple-user"];
-      commit: string;
-      duration: number;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-    };
-    /**
-     * Page Build Status
-     * @description Page Build Status
-     */
-    "page-build-status": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/github/hello-world/pages/builds/latest
-       */
-      url: string;
-      /** @example queued */
-      status: string;
-    };
-    /**
-     * GitHub Pages
-     * @description The GitHub Pages deployment status.
-     */
-    "page-deployment": {
-      /**
-       * Format: uri
-       * @description The URI to monitor GitHub Pages deployment status.
-       * @example https://api.github.com/repos/github/hello-world/pages/deployments/4fd754f7e594640989b406850d0bc8f06a121251/status
-       */
-      status_url: string;
-      /**
-       * Format: uri
-       * @description The URI to the deployed GitHub Pages.
-       * @example hello-world.github.io
-       */
-      page_url: string;
-      /**
-       * Format: uri
-       * @description The URI to the deployed GitHub Pages preview.
-       * @example monalisa-1231a2312sa32-23sda74.drafts.github.io
-       */
-      preview_url?: string;
-    };
-    /**
-     * Pages Health Check Status
-     * @description Pages Health Check Status
-     */
-    "pages-health-check": {
-      domain?: {
-        host?: string;
-        uri?: string;
-        nameservers?: string;
-        dns_resolves?: boolean;
-        is_proxied?: boolean | null;
-        is_cloudflare_ip?: boolean | null;
-        is_fastly_ip?: boolean | null;
-        is_old_ip_address?: boolean | null;
-        is_a_record?: boolean | null;
-        has_cname_record?: boolean | null;
-        has_mx_records_present?: boolean | null;
-        is_valid_domain?: boolean;
-        is_apex_domain?: boolean;
-        should_be_a_record?: boolean | null;
-        is_cname_to_github_user_domain?: boolean | null;
-        is_cname_to_pages_dot_github_dot_com?: boolean | null;
-        is_cname_to_fastly?: boolean | null;
-        is_pointed_to_github_pages_ip?: boolean | null;
-        is_non_github_pages_ip_present?: boolean | null;
-        is_pages_domain?: boolean;
-        is_served_by_pages?: boolean | null;
-        is_valid?: boolean;
-        reason?: string | null;
-        responds_to_https?: boolean;
-        enforces_https?: boolean;
-        https_error?: string | null;
-        is_https_eligible?: boolean | null;
-        caa_error?: string | null;
-      };
-      alt_domain?: {
-        host?: string;
-        uri?: string;
-        nameservers?: string;
-        dns_resolves?: boolean;
-        is_proxied?: boolean | null;
-        is_cloudflare_ip?: boolean | null;
-        is_fastly_ip?: boolean | null;
-        is_old_ip_address?: boolean | null;
-        is_a_record?: boolean | null;
-        has_cname_record?: boolean | null;
-        has_mx_records_present?: boolean | null;
-        is_valid_domain?: boolean;
-        is_apex_domain?: boolean;
-        should_be_a_record?: boolean | null;
-        is_cname_to_github_user_domain?: boolean | null;
-        is_cname_to_pages_dot_github_dot_com?: boolean | null;
-        is_cname_to_fastly?: boolean | null;
-        is_pointed_to_github_pages_ip?: boolean | null;
-        is_non_github_pages_ip_present?: boolean | null;
-        is_pages_domain?: boolean;
-        is_served_by_pages?: boolean | null;
-        is_valid?: boolean;
-        reason?: string | null;
-        responds_to_https?: boolean;
-        enforces_https?: boolean;
-        https_error?: string | null;
-        is_https_eligible?: boolean | null;
-        caa_error?: string | null;
-      } | null;
-    };
-    /**
-     * Pull Request
-     * @description Pull requests let you tell others about changes you've pushed to a repository on GitHub. Once a pull request is sent, interested parties can review the set of changes, discuss potential modifications, and even push follow-up commits if necessary.
-     */
-    "pull-request": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347
-       */
-      url: string;
-      /** @example 1 */
-      id: number;
-      /** @example MDExOlB1bGxSZXF1ZXN0MQ== */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/pull/1347
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/pull/1347.diff
-       */
-      diff_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/pull/1347.patch
-       */
-      patch_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/issues/1347
-       */
-      issue_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits
-       */
-      commits_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments
-       */
-      review_comments_url: string;
-      /** @example https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number} */
-      review_comment_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/issues/1347/comments
-       */
-      comments_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e
-       */
-      statuses_url: string;
-      /**
-       * @description Number uniquely identifying the pull request within its repository.
-       * @example 42
-       */
-      number: number;
-      /**
-       * @description State of this Pull Request. Either `open` or `closed`.
-       * @example open
-       * @enum {string}
-       */
-      state: "open" | "closed";
-      /** @example true */
-      locked: boolean;
-      /**
-       * @description The title of the pull request.
-       * @example Amazing new feature
-       */
-      title: string;
-      user: components["schemas"]["simple-user"];
-      /** @example Please pull these awesome changes */
-      body: string | null;
-      labels: {
-        /** Format: int64 */
-        id: number;
-        node_id: string;
-        url: string;
-        name: string;
-        description: string | null;
-        color: string;
-        default: boolean;
-      }[];
-      milestone: components["schemas"]["nullable-milestone"];
-      /** @example too heated */
-      active_lock_reason?: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      updated_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      closed_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      merged_at: string | null;
-      /** @example e5bd3914e2e596debea16f433f57875b5b90bcd6 */
-      merge_commit_sha: string | null;
-      assignee: components["schemas"]["nullable-simple-user"];
-      assignees?: components["schemas"]["simple-user"][] | null;
-      requested_reviewers?: components["schemas"]["simple-user"][] | null;
-      requested_teams?: components["schemas"]["team-simple"][] | null;
-      head: {
-        label: string;
-        ref: string;
-        repo: {
-          archive_url: string;
-          assignees_url: string;
-          blobs_url: string;
-          branches_url: string;
-          collaborators_url: string;
-          comments_url: string;
-          commits_url: string;
-          compare_url: string;
-          contents_url: string;
-          /** Format: uri */
-          contributors_url: string;
-          /** Format: uri */
-          deployments_url: string;
-          description: string | null;
-          /** Format: uri */
-          downloads_url: string;
-          /** Format: uri */
-          events_url: string;
-          fork: boolean;
-          /** Format: uri */
-          forks_url: string;
-          full_name: string;
-          git_commits_url: string;
-          git_refs_url: string;
-          git_tags_url: string;
-          /** Format: uri */
-          hooks_url: string;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          node_id: string;
-          issue_comment_url: string;
-          issue_events_url: string;
-          issues_url: string;
-          keys_url: string;
-          labels_url: string;
-          /** Format: uri */
-          languages_url: string;
-          /** Format: uri */
-          merges_url: string;
-          milestones_url: string;
-          name: string;
-          notifications_url: string;
-          owner: {
-            /** Format: uri */
-            avatar_url: string;
-            events_url: string;
-            /** Format: uri */
-            followers_url: string;
-            following_url: string;
-            gists_url: string;
-            gravatar_id: string | null;
-            /** Format: uri */
-            html_url: string;
-            id: number;
-            node_id: string;
-            login: string;
-            /** Format: uri */
-            organizations_url: string;
-            /** Format: uri */
-            received_events_url: string;
-            /** Format: uri */
-            repos_url: string;
-            site_admin: boolean;
-            starred_url: string;
-            /** Format: uri */
-            subscriptions_url: string;
-            type: string;
-            /** Format: uri */
-            url: string;
-          };
-          private: boolean;
-          pulls_url: string;
-          releases_url: string;
-          /** Format: uri */
-          stargazers_url: string;
-          statuses_url: string;
-          /** Format: uri */
-          subscribers_url: string;
-          /** Format: uri */
-          subscription_url: string;
-          /** Format: uri */
-          tags_url: string;
-          /** Format: uri */
-          teams_url: string;
-          trees_url: string;
-          /** Format: uri */
-          url: string;
-          clone_url: string;
-          default_branch: string;
-          forks: number;
-          forks_count: number;
-          git_url: string;
-          has_downloads: boolean;
-          has_issues: boolean;
-          has_projects: boolean;
-          has_wiki: boolean;
-          has_pages: boolean;
-          has_discussions: boolean;
-          /** Format: uri */
-          homepage: string | null;
-          language: string | null;
-          master_branch?: string;
-          archived: boolean;
-          disabled: boolean;
-          /** @description The repository visibility: public, private, or internal. */
-          visibility?: string;
-          /** Format: uri */
-          mirror_url: string | null;
-          open_issues: number;
-          open_issues_count: number;
-          permissions?: {
-            admin: boolean;
-            maintain?: boolean;
-            push: boolean;
-            triage?: boolean;
-            pull: boolean;
-          };
-          temp_clone_token?: string;
-          allow_merge_commit?: boolean;
-          allow_squash_merge?: boolean;
-          allow_rebase_merge?: boolean;
-          license: {
-            key: string;
-            name: string;
-            /** Format: uri */
-            url: string | null;
-            spdx_id: string | null;
-            node_id: string;
-          } | null;
-          /** Format: date-time */
-          pushed_at: string;
-          size: number;
-          ssh_url: string;
-          stargazers_count: number;
-          /** Format: uri */
-          svn_url: string;
-          topics?: string[];
-          watchers: number;
-          watchers_count: number;
-          /** Format: date-time */
-          created_at: string;
-          /** Format: date-time */
-          updated_at: string;
-          allow_forking?: boolean;
-          is_template?: boolean;
-          web_commit_signoff_required?: boolean;
-        } | null;
-        sha: string;
-        user: {
-          /** Format: uri */
-          avatar_url: string;
-          events_url: string;
-          /** Format: uri */
-          followers_url: string;
-          following_url: string;
-          gists_url: string;
-          gravatar_id: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          node_id: string;
-          login: string;
-          /** Format: uri */
-          organizations_url: string;
-          /** Format: uri */
-          received_events_url: string;
-          /** Format: uri */
-          repos_url: string;
-          site_admin: boolean;
-          starred_url: string;
-          /** Format: uri */
-          subscriptions_url: string;
-          type: string;
-          /** Format: uri */
-          url: string;
-        };
-      };
-      base: {
-        label: string;
-        ref: string;
-        repo: {
-          archive_url: string;
-          assignees_url: string;
-          blobs_url: string;
-          branches_url: string;
-          collaborators_url: string;
-          comments_url: string;
-          commits_url: string;
-          compare_url: string;
-          contents_url: string;
-          /** Format: uri */
-          contributors_url: string;
-          /** Format: uri */
-          deployments_url: string;
-          description: string | null;
-          /** Format: uri */
-          downloads_url: string;
-          /** Format: uri */
-          events_url: string;
-          fork: boolean;
-          /** Format: uri */
-          forks_url: string;
-          full_name: string;
-          git_commits_url: string;
-          git_refs_url: string;
-          git_tags_url: string;
-          /** Format: uri */
-          hooks_url: string;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          is_template?: boolean;
-          node_id: string;
-          issue_comment_url: string;
-          issue_events_url: string;
-          issues_url: string;
-          keys_url: string;
-          labels_url: string;
-          /** Format: uri */
-          languages_url: string;
-          /** Format: uri */
-          merges_url: string;
-          milestones_url: string;
-          name: string;
-          notifications_url: string;
-          owner: {
-            /** Format: uri */
-            avatar_url: string;
-            events_url: string;
-            /** Format: uri */
-            followers_url: string;
-            following_url: string;
-            gists_url: string;
-            gravatar_id: string | null;
-            /** Format: uri */
-            html_url: string;
-            id: number;
-            node_id: string;
-            login: string;
-            /** Format: uri */
-            organizations_url: string;
-            /** Format: uri */
-            received_events_url: string;
-            /** Format: uri */
-            repos_url: string;
-            site_admin: boolean;
-            starred_url: string;
-            /** Format: uri */
-            subscriptions_url: string;
-            type: string;
-            /** Format: uri */
-            url: string;
-          };
-          private: boolean;
-          pulls_url: string;
-          releases_url: string;
-          /** Format: uri */
-          stargazers_url: string;
-          statuses_url: string;
-          /** Format: uri */
-          subscribers_url: string;
-          /** Format: uri */
-          subscription_url: string;
-          /** Format: uri */
-          tags_url: string;
-          /** Format: uri */
-          teams_url: string;
-          trees_url: string;
-          /** Format: uri */
-          url: string;
-          clone_url: string;
-          default_branch: string;
-          forks: number;
-          forks_count: number;
-          git_url: string;
-          has_downloads: boolean;
-          has_issues: boolean;
-          has_projects: boolean;
-          has_wiki: boolean;
-          has_pages: boolean;
-          has_discussions: boolean;
-          /** Format: uri */
-          homepage: string | null;
-          language: string | null;
-          master_branch?: string;
-          archived: boolean;
-          disabled: boolean;
-          /** @description The repository visibility: public, private, or internal. */
-          visibility?: string;
-          /** Format: uri */
-          mirror_url: string | null;
-          open_issues: number;
-          open_issues_count: number;
-          permissions?: {
-            admin: boolean;
-            maintain?: boolean;
-            push: boolean;
-            triage?: boolean;
-            pull: boolean;
-          };
-          temp_clone_token?: string;
-          allow_merge_commit?: boolean;
-          allow_squash_merge?: boolean;
-          allow_rebase_merge?: boolean;
-          license: components["schemas"]["nullable-license-simple"];
-          /** Format: date-time */
-          pushed_at: string;
-          size: number;
-          ssh_url: string;
-          stargazers_count: number;
-          /** Format: uri */
-          svn_url: string;
-          topics?: string[];
-          watchers: number;
-          watchers_count: number;
-          /** Format: date-time */
-          created_at: string;
-          /** Format: date-time */
-          updated_at: string;
-          allow_forking?: boolean;
-          web_commit_signoff_required?: boolean;
-        };
-        sha: string;
-        user: {
-          /** Format: uri */
-          avatar_url: string;
-          events_url: string;
-          /** Format: uri */
-          followers_url: string;
-          following_url: string;
-          gists_url: string;
-          gravatar_id: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          node_id: string;
-          login: string;
-          /** Format: uri */
-          organizations_url: string;
-          /** Format: uri */
-          received_events_url: string;
-          /** Format: uri */
-          repos_url: string;
-          site_admin: boolean;
-          starred_url: string;
-          /** Format: uri */
-          subscriptions_url: string;
-          type: string;
-          /** Format: uri */
-          url: string;
-        };
-      };
-      _links: {
-        comments: components["schemas"]["link"];
-        commits: components["schemas"]["link"];
-        statuses: components["schemas"]["link"];
-        html: components["schemas"]["link"];
-        issue: components["schemas"]["link"];
-        review_comments: components["schemas"]["link"];
-        review_comment: components["schemas"]["link"];
-        self: components["schemas"]["link"];
-      };
-      author_association: components["schemas"]["author-association"];
-      auto_merge: components["schemas"]["auto-merge"];
-      /**
-       * @description Indicates whether or not the pull request is a draft.
-       * @example false
-       */
-      draft?: boolean;
-      merged: boolean;
-      /** @example true */
-      mergeable: boolean | null;
-      /** @example true */
-      rebaseable?: boolean | null;
-      /** @example clean */
-      mergeable_state: string;
-      merged_by: components["schemas"]["nullable-simple-user"];
-      /** @example 10 */
-      comments: number;
-      /** @example 0 */
-      review_comments: number;
-      /**
-       * @description Indicates whether maintainers can modify the pull request.
-       * @example true
-       */
-      maintainer_can_modify: boolean;
-      /** @example 3 */
-      commits: number;
-      /** @example 100 */
-      additions: number;
-      /** @example 3 */
-      deletions: number;
-      /** @example 5 */
-      changed_files: number;
-    };
-    /**
-     * Pull Request Merge Result
-     * @description Pull Request Merge Result
-     */
-    "pull-request-merge-result": {
-      sha: string;
-      merged: boolean;
-      message: string;
-    };
-    /**
-     * Pull Request Review Request
-     * @description Pull Request Review Request
-     */
-    "pull-request-review-request": {
-      users: components["schemas"]["simple-user"][];
-      teams: components["schemas"]["team"][];
-    };
-    /**
-     * Pull Request Review
-     * @description Pull Request Reviews are reviews on pull requests.
-     */
-    "pull-request-review": {
-      /**
-       * @description Unique identifier of the review
-       * @example 42
-       */
-      id: number;
-      /** @example MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA= */
-      node_id: string;
-      user: components["schemas"]["nullable-simple-user"];
-      /**
-       * @description The text of the review.
-       * @example This looks great.
-       */
-      body: string;
-      /** @example CHANGES_REQUESTED */
-      state: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls/12
-       */
-      pull_request_url: string;
-      _links: {
-        html: {
-          href: string;
-        };
-        pull_request: {
-          href: string;
-        };
-      };
-      /** Format: date-time */
-      submitted_at?: string;
-      /**
-       * @description A commit SHA for the review. If the commit object was garbage collected or forcibly deleted, then it no longer exists in Git and this value will be `null`.
-       * @example 54bb654c9e6025347f57900a4a5c2313a96b8035
-       */
-      commit_id: string | null;
-      body_html?: string;
-      body_text?: string;
-      author_association: components["schemas"]["author-association"];
-    };
-    /**
-     * Legacy Review Comment
-     * @description Legacy Review Comment
-     */
-    "review-comment": {
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1
-       */
-      url: string;
-      /** @example 42 */
-      pull_request_review_id: number | null;
-      /** @example 10 */
-      id: number;
-      /** @example MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw */
-      node_id: string;
-      /** @example @@ -16,33 +16,40 @@ public class Connection : IConnection... */
-      diff_hunk: string;
-      /** @example file1.txt */
-      path: string;
-      /** @example 1 */
-      position: number | null;
-      /** @example 4 */
-      original_position: number;
-      /** @example 6dcb09b5b57875f334f61aebed695e2e4193db5e */
-      commit_id: string;
-      /** @example 9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840 */
-      original_commit_id: string;
-      /** @example 8 */
-      in_reply_to_id?: number;
-      user: components["schemas"]["nullable-simple-user"];
-      /** @example Great stuff */
-      body: string;
-      /**
-       * Format: date-time
-       * @example 2011-04-14T16:00:49Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-04-14T16:00:49Z
-       */
-      updated_at: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/pull/1#discussion-diff-1
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World/pulls/1
-       */
-      pull_request_url: string;
-      author_association: components["schemas"]["author-association"];
-      _links: {
-        self: components["schemas"]["link"];
-        html: components["schemas"]["link"];
-        pull_request: components["schemas"]["link"];
-      };
-      body_text?: string;
-      body_html?: string;
-      reactions?: components["schemas"]["reaction-rollup"];
-      /**
-       * @description The side of the first line of the range for a multi-line comment.
-       * @default RIGHT
-       * @enum {string}
-       */
-      side?: "LEFT" | "RIGHT";
-      /**
-       * @description The side of the first line of the range for a multi-line comment.
-       * @default RIGHT
-       * @enum {string|null}
-       */
-      start_side?: "LEFT" | "RIGHT" | null;
-      /**
-       * @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment
-       * @example 2
-       */
-      line?: number;
-      /**
-       * @description The original line of the blob to which the comment applies. The last line of the range for a multi-line comment
-       * @example 2
-       */
-      original_line?: number;
-      /**
-       * @description The first line of the range for a multi-line comment.
-       * @example 2
-       */
-      start_line?: number | null;
-      /**
-       * @description The original first line of the range for a multi-line comment.
-       * @example 2
-       */
-      original_start_line?: number | null;
-    };
-    /**
-     * Release Asset
-     * @description Data related to a release.
-     */
-    "release-asset": {
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      browser_download_url: string;
-      id: number;
-      node_id: string;
-      /**
-       * @description The file name of the asset.
-       * @example Team Environment
-       */
-      name: string;
-      label: string | null;
-      /**
-       * @description State of the release asset.
-       * @enum {string}
-       */
-      state: "uploaded" | "open";
-      content_type: string;
-      size: number;
-      download_count: number;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      uploader: components["schemas"]["nullable-simple-user"];
-    };
-    /**
-     * Release
-     * @description A release.
-     */
-    release: {
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      html_url: string;
-      /** Format: uri */
-      assets_url: string;
-      upload_url: string;
-      /** Format: uri */
-      tarball_url: string | null;
-      /** Format: uri */
-      zipball_url: string | null;
-      id: number;
-      node_id: string;
-      /**
-       * @description The name of the tag.
-       * @example v1.0.0
-       */
-      tag_name: string;
-      /**
-       * @description Specifies the commitish value that determines where the Git tag is created from.
-       * @example master
-       */
-      target_commitish: string;
-      name: string | null;
-      body?: string | null;
-      /**
-       * @description true to create a draft (unpublished) release, false to create a published one.
-       * @example false
-       */
-      draft: boolean;
-      /**
-       * @description Whether to identify the release as a prerelease or a full release.
-       * @example false
-       */
-      prerelease: boolean;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      published_at: string | null;
-      author: components["schemas"]["simple-user"];
-      assets: components["schemas"]["release-asset"][];
-      body_html?: string;
-      body_text?: string;
-      mentions_count?: number;
-      /**
-       * Format: uri
-       * @description The URL of the release discussion.
-       */
-      discussion_url?: string;
-      reactions?: components["schemas"]["reaction-rollup"];
-    };
-    /**
-     * Generated Release Notes Content
-     * @description Generated name and body describing a release
-     */
-    "release-notes-content": {
-      /**
-       * @description The generated name of the release
-       * @example Release v1.0.0 is now available!
-       */
-      name: string;
-      /** @description The generated body describing the contents of the release supporting markdown formatting */
-      body: string;
-    };
-    /**
-     * repository ruleset data for rule
-     * @description User-defined metadata to store domain-specific information limited to 8 keys with scalar values.
-     */
-    "repository-rule-ruleset-info": {
-      /**
-       * @description The type of source for the ruleset that includes this rule.
-       * @enum {string}
-       */
-      ruleset_source_type?: "Repository" | "Organization";
-      /** @description The name of the source of the ruleset that includes this rule. */
-      ruleset_source?: string;
-      /** @description The ID of the ruleset that includes this rule. */
-      ruleset_id?: number;
-    };
-    /**
-     * Repository Rule
-     * @description A repository rule with ruleset details.
-     */
-    "repository-rule-detailed":
-      | (components["schemas"]["repository-rule-creation"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-update"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-deletion"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-required-linear-history"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-required-deployments"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-required-signatures"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-pull-request"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-required-status-checks"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-non-fast-forward"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-commit-message-pattern"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-commit-author-email-pattern"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-committer-email-pattern"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-branch-name-pattern"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-tag-name-pattern"] &
-          components["schemas"]["repository-rule-ruleset-info"])
-      | (components["schemas"]["repository-rule-workflows"] &
-          components["schemas"]["repository-rule-ruleset-info"]);
-    "secret-scanning-alert": {
-      number?: components["schemas"]["alert-number"];
-      created_at?: components["schemas"]["alert-created-at"];
-      updated_at?: components["schemas"]["nullable-alert-updated-at"];
-      url?: components["schemas"]["alert-url"];
-      html_url?: components["schemas"]["alert-html-url"];
-      /**
-       * Format: uri
-       * @description The REST API URL of the code locations for this alert.
-       */
-      locations_url?: string;
-      state?: components["schemas"]["secret-scanning-alert-state"];
-      resolution?: components["schemas"]["secret-scanning-alert-resolution"];
-      /**
-       * Format: date-time
-       * @description The time that the alert was resolved in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-       */
-      resolved_at?: string | null;
-      resolved_by?: components["schemas"]["nullable-simple-user"];
-      /** @description An optional comment to resolve an alert. */
-      resolution_comment?: string | null;
-      /** @description The type of secret that secret scanning detected. */
-      secret_type?: string;
-      /**
-       * @description User-friendly name for the detected secret, matching the `secret_type`.
-       * For a list of built-in patterns, see "[Secret scanning patterns](https://docs.github.com/code-security/secret-scanning/secret-scanning-patterns#supported-secrets-for-advanced-security)."
-       */
-      secret_type_display_name?: string;
-      /** @description The secret that was detected. */
-      secret?: string;
-      /** @description Whether push protection was bypassed for the detected secret. */
-      push_protection_bypassed?: boolean | null;
-      push_protection_bypassed_by?: components["schemas"]["nullable-simple-user"];
-      /**
-       * Format: date-time
-       * @description The time that push protection was bypassed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-       */
-      push_protection_bypassed_at?: string | null;
-      /**
-       * @description The token status as of the latest validity check.
-       * @enum {string}
-       */
-      validity?: "active" | "inactive" | "unknown";
-    };
-    /** @description An optional comment when closing an alert. Cannot be updated or deleted. Must be `null` when changing `state` to `open`. */
-    "secret-scanning-alert-resolution-comment": string | null;
-    /** @description Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository. */
-    "secret-scanning-location-commit": {
-      /**
-       * @description The file path in the repository
-       * @example /example/secrets.txt
-       */
-      path: string;
-      /** @description Line number at which the secret starts in the file */
-      start_line: number;
-      /** @description Line number at which the secret ends in the file */
-      end_line: number;
-      /** @description The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII */
-      start_column: number;
-      /** @description The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII */
-      end_column: number;
-      /**
-       * @description SHA-1 hash ID of the associated blob
-       * @example af5626b4a114abcb82d63db7c8082c3c4756e51b
-       */
-      blob_sha: string;
-      /** @description The API URL to get the associated blob resource */
-      blob_url: string;
-      /**
-       * @description SHA-1 hash ID of the associated commit
-       * @example af5626b4a114abcb82d63db7c8082c3c4756e51b
-       */
-      commit_sha: string;
-      /** @description The API URL to get the associated commit resource */
-      commit_url: string;
-    };
-    /** @description Represents an 'issue_title' secret scanning location type. This location type shows that a secret was detected in the title of an issue. */
-    "secret-scanning-location-issue-title": {
-      /**
-       * Format: uri
-       * @description The API URL to get the issue where the secret was detected.
-       * @example https://api.github.com/repos/octocat/Hello-World/issues/1347
-       */
-      issue_title_url: string;
-    };
-    /** @description Represents an 'issue_body' secret scanning location type. This location type shows that a secret was detected in the body of an issue. */
-    "secret-scanning-location-issue-body": {
-      /**
-       * Format: uri
-       * @description The API URL to get the issue where the secret was detected.
-       * @example https://api.github.com/repos/octocat/Hello-World/issues/1347
-       */
-      issue_body_url: string;
-    };
-    /** @description Represents an 'issue_comment' secret scanning location type. This location type shows that a secret was detected in a comment on an issue. */
-    "secret-scanning-location-issue-comment": {
-      /**
-       * Format: uri
-       * @description The API URL to get the issue comment where the secret was detected.
-       * @example https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451
-       */
-      issue_comment_url: string;
-    };
-    "secret-scanning-location": {
-      /**
-       * @description The location type. Because secrets may be found in different types of resources (ie. code, comments, issues), this field identifies the type of resource where the secret was found.
-       * @example commit
-       * @enum {string}
-       */
-      type: "commit" | "issue_title" | "issue_body" | "issue_comment";
-      details:
-        | components["schemas"]["secret-scanning-location-commit"]
-        | components["schemas"]["secret-scanning-location-issue-title"]
-        | components["schemas"]["secret-scanning-location-issue-body"]
-        | components["schemas"]["secret-scanning-location-issue-comment"];
-    };
-    "repository-advisory-create": {
-      /** @description A short summary of the advisory. */
-      summary: string;
-      /** @description A detailed description of what the advisory impacts. */
-      description: string;
-      /** @description The Common Vulnerabilities and Exposures (CVE) ID. */
-      cve_id?: string | null;
-      /** @description A product affected by the vulnerability detailed in a repository security advisory. */
-      vulnerabilities: {
-        /** @description The name of the package affected by the vulnerability. */
-        package: {
-          ecosystem: components["schemas"]["security-advisory-ecosystems"];
-          /** @description The unique package name within its ecosystem. */
-          name?: string | null;
-        };
-        /** @description The range of the package versions affected by the vulnerability. */
-        vulnerable_version_range?: string | null;
-        /** @description The package version(s) that resolve the vulnerability. */
-        patched_versions?: string | null;
-        /** @description The functions in the package that are affected. */
-        vulnerable_functions?: string[] | null;
-      }[];
-      /** @description A list of Common Weakness Enumeration (CWE) IDs. */
-      cwe_ids?: string[] | null;
-      /** @description A list of users receiving credit for their participation in the security advisory. */
-      credits?:
-        | {
-            /** @description The username of the user credited. */
-            login: string;
-            type: components["schemas"]["security-advisory-credit-types"];
-          }[]
-        | null;
-      /**
-       * @description The severity of the advisory. You must choose between setting this field or `cvss_vector_string`.
-       * @enum {string|null}
-       */
-      severity?: "critical" | "high" | "medium" | "low" | null;
-      /** @description The CVSS vector that calculates the severity of the advisory. You must choose between setting this field or `severity`. */
-      cvss_vector_string?: string | null;
-    };
-    "private-vulnerability-report-create": {
-      /** @description A short summary of the advisory. */
-      summary: string;
-      /** @description A detailed description of what the advisory impacts. */
-      description: string;
-      /** @description An array of products affected by the vulnerability detailed in a repository security advisory. */
-      vulnerabilities?:
-        | {
-            /** @description The name of the package affected by the vulnerability. */
-            package: {
-              ecosystem: components["schemas"]["security-advisory-ecosystems"];
-              /** @description The unique package name within its ecosystem. */
-              name?: string | null;
-            };
-            /** @description The range of the package versions affected by the vulnerability. */
-            vulnerable_version_range?: string | null;
-            /** @description The package version(s) that resolve the vulnerability. */
-            patched_versions?: string | null;
-            /** @description The functions in the package that are affected. */
-            vulnerable_functions?: string[] | null;
-          }[]
-        | null;
-      /** @description A list of Common Weakness Enumeration (CWE) IDs. */
-      cwe_ids?: string[] | null;
-      /**
-       * @description The severity of the advisory. You must choose between setting this field or `cvss_vector_string`.
-       * @enum {string|null}
-       */
-      severity?: "critical" | "high" | "medium" | "low" | null;
-      /** @description The CVSS vector that calculates the severity of the advisory. You must choose between setting this field or `severity`. */
-      cvss_vector_string?: string | null;
-    };
-    "repository-advisory-update": {
-      /** @description A short summary of the advisory. */
-      summary?: string;
-      /** @description A detailed description of what the advisory impacts. */
-      description?: string;
-      /** @description The Common Vulnerabilities and Exposures (CVE) ID. */
-      cve_id?: string | null;
-      /** @description A product affected by the vulnerability detailed in a repository security advisory. */
-      vulnerabilities?: {
-        /** @description The name of the package affected by the vulnerability. */
-        package: {
-          ecosystem: components["schemas"]["security-advisory-ecosystems"];
-          /** @description The unique package name within its ecosystem. */
-          name?: string | null;
-        };
-        /** @description The range of the package versions affected by the vulnerability. */
-        vulnerable_version_range?: string | null;
-        /** @description The package version(s) that resolve the vulnerability. */
-        patched_versions?: string | null;
-        /** @description The functions in the package that are affected. */
-        vulnerable_functions?: string[] | null;
-      }[];
-      /** @description A list of Common Weakness Enumeration (CWE) IDs. */
-      cwe_ids?: string[] | null;
-      /** @description A list of users receiving credit for their participation in the security advisory. */
-      credits?:
-        | {
-            /** @description The username of the user credited. */
-            login: string;
-            type: components["schemas"]["security-advisory-credit-types"];
-          }[]
-        | null;
-      /**
-       * @description The severity of the advisory. You must choose between setting this field or `cvss_vector_string`.
-       * @enum {string|null}
-       */
-      severity?: "critical" | "high" | "medium" | "low" | null;
-      /** @description The CVSS vector that calculates the severity of the advisory. You must choose between setting this field or `severity`. */
-      cvss_vector_string?: string | null;
-      /**
-       * @description The state of the advisory.
-       * @enum {string}
-       */
-      state?: "published" | "closed" | "draft";
-      /** @description A list of usernames who have been granted write access to the advisory. */
-      collaborating_users?: string[] | null;
-      /** @description A list of team slugs which have been granted write access to the advisory. */
-      collaborating_teams?: string[] | null;
-    };
-    /**
-     * Stargazer
-     * @description Stargazer
-     */
-    stargazer: {
-      /** Format: date-time */
-      starred_at: string;
-      user: components["schemas"]["nullable-simple-user"];
-    };
-    /**
-     * Code Frequency Stat
-     * @description Code Frequency Stat
-     */
-    "code-frequency-stat": number[];
-    /**
-     * Commit Activity
-     * @description Commit Activity
-     */
-    "commit-activity": {
-      /**
-       * @example [
-       *   0,
-       *   3,
-       *   26,
-       *   20,
-       *   39,
-       *   1,
-       *   0
-       * ]
-       */
-      days: number[];
-      /** @example 89 */
-      total: number;
-      /** @example 1336280400 */
-      week: number;
-    };
-    /**
-     * Contributor Activity
-     * @description Contributor Activity
-     */
-    "contributor-activity": {
-      author: components["schemas"]["nullable-simple-user"];
-      /** @example 135 */
-      total: number;
-      /**
-       * @example [
-       *   {
-       *     "w": "1367712000",
-       *     "a": 6898,
-       *     "d": 77,
-       *     "c": 10
-       *   }
-       * ]
-       */
-      weeks: {
-        w?: number;
-        a?: number;
-        d?: number;
-        c?: number;
-      }[];
-    };
-    /** Participation Stats */
-    "participation-stats": {
-      all: number[];
-      owner: number[];
-    };
-    /**
-     * Repository Invitation
-     * @description Repository invitations let you manage who you collaborate with.
-     */
-    "repository-subscription": {
-      /**
-       * @description Determines if notifications should be received from this repository.
-       * @example true
-       */
-      subscribed: boolean;
-      /** @description Determines if all notifications should be blocked from this repository. */
-      ignored: boolean;
-      reason: string | null;
-      /**
-       * Format: date-time
-       * @example 2012-10-06T21:34:12Z
-       */
-      created_at: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/example/subscription
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/example
-       */
-      repository_url: string;
-    };
-    /**
-     * Tag
-     * @description Tag
-     */
-    tag: {
-      /** @example v0.1 */
-      name: string;
-      commit: {
-        sha: string;
-        /** Format: uri */
-        url: string;
-      };
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/zipball/v0.1
-       */
-      zipball_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World/tarball/v0.1
-       */
-      tarball_url: string;
-      node_id: string;
-    };
-    /**
-     * Tag protection
-     * @description Tag protection
-     */
-    "tag-protection": {
-      /** @example 2 */
-      id?: number;
-      /** @example 2011-01-26T19:01:12Z */
-      created_at?: string;
-      /** @example 2011-01-26T19:01:12Z */
-      updated_at?: string;
-      /** @example true */
-      enabled?: boolean;
-      /** @example v1.* */
-      pattern: string;
-    };
-    /**
-     * Topic
-     * @description A topic aggregates entities that are related to a subject.
-     */
-    topic: {
-      names: string[];
-    };
-    /** Traffic */
-    traffic: {
-      /** Format: date-time */
-      timestamp: string;
-      uniques: number;
-      count: number;
-    };
-    /**
-     * Clone Traffic
-     * @description Clone Traffic
-     */
-    "clone-traffic": {
-      /** @example 173 */
-      count: number;
-      /** @example 128 */
-      uniques: number;
-      clones: components["schemas"]["traffic"][];
-    };
-    /**
-     * Content Traffic
-     * @description Content Traffic
-     */
-    "content-traffic": {
-      /** @example /github/hubot */
-      path: string;
-      /** @example github/hubot: A customizable life embetterment robot. */
-      title: string;
-      /** @example 3542 */
-      count: number;
-      /** @example 2225 */
-      uniques: number;
-    };
-    /**
-     * Referrer Traffic
-     * @description Referrer Traffic
-     */
-    "referrer-traffic": {
-      /** @example Google */
-      referrer: string;
-      /** @example 4 */
-      count: number;
-      /** @example 3 */
-      uniques: number;
-    };
-    /**
-     * View Traffic
-     * @description View Traffic
-     */
-    "view-traffic": {
-      /** @example 14850 */
-      count: number;
-      /** @example 3782 */
-      uniques: number;
-      views: components["schemas"]["traffic"][];
-    };
-    /** Search Result Text Matches */
-    "search-result-text-matches": {
-      object_url?: string;
-      object_type?: string | null;
-      property?: string;
-      fragment?: string;
-      matches?: {
-        text?: string;
-        indices?: number[];
-      }[];
-    }[];
-    /**
-     * Code Search Result Item
-     * @description Code Search Result Item
-     */
-    "code-search-result-item": {
-      name: string;
-      path: string;
-      sha: string;
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      git_url: string;
-      /** Format: uri */
-      html_url: string;
-      repository: components["schemas"]["minimal-repository"];
-      score: number;
-      file_size?: number;
-      language?: string | null;
-      /** Format: date-time */
-      last_modified_at?: string;
-      /**
-       * @example [
-       *   "73..77",
-       *   "77..78"
-       * ]
-       */
-      line_numbers?: string[];
-      text_matches?: components["schemas"]["search-result-text-matches"];
-    };
-    /**
-     * Commit Search Result Item
-     * @description Commit Search Result Item
-     */
-    "commit-search-result-item": {
-      /** Format: uri */
-      url: string;
-      sha: string;
-      /** Format: uri */
-      html_url: string;
-      /** Format: uri */
-      comments_url: string;
-      commit: {
-        author: {
-          name: string;
-          email: string;
-          /** Format: date-time */
-          date: string;
-        };
-        committer: components["schemas"]["nullable-git-user"];
-        comment_count: number;
-        message: string;
-        tree: {
-          sha: string;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        url: string;
-        verification?: components["schemas"]["verification"];
-      };
-      author: components["schemas"]["nullable-simple-user"];
-      committer: components["schemas"]["nullable-git-user"];
-      parents: {
-        url?: string;
-        html_url?: string;
-        sha?: string;
-      }[];
-      repository: components["schemas"]["minimal-repository"];
-      score: number;
-      node_id: string;
-      text_matches?: components["schemas"]["search-result-text-matches"];
-    };
-    /**
-     * Issue Search Result Item
-     * @description Issue Search Result Item
-     */
-    "issue-search-result-item": {
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      repository_url: string;
-      labels_url: string;
-      /** Format: uri */
-      comments_url: string;
-      /** Format: uri */
-      events_url: string;
-      /** Format: uri */
-      html_url: string;
-      /** Format: int64 */
-      id: number;
-      node_id: string;
-      number: number;
-      title: string;
-      locked: boolean;
-      active_lock_reason?: string | null;
-      assignees?: components["schemas"]["simple-user"][] | null;
-      user: components["schemas"]["nullable-simple-user"];
-      labels: {
-        /** Format: int64 */
-        id?: number;
-        node_id?: string;
-        url?: string;
-        name?: string;
-        color?: string;
-        default?: boolean;
-        description?: string | null;
-      }[];
-      state: string;
-      state_reason?: string | null;
-      assignee: components["schemas"]["nullable-simple-user"];
-      milestone: components["schemas"]["nullable-milestone"];
-      comments: number;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      /** Format: date-time */
-      closed_at: string | null;
-      text_matches?: components["schemas"]["search-result-text-matches"];
-      pull_request?: {
-        /** Format: date-time */
-        merged_at?: string | null;
-        /** Format: uri */
-        diff_url: string | null;
-        /** Format: uri */
-        html_url: string | null;
-        /** Format: uri */
-        patch_url: string | null;
-        /** Format: uri */
-        url: string | null;
-      };
-      body?: string;
-      score: number;
-      author_association: components["schemas"]["author-association"];
-      draft?: boolean;
-      repository?: components["schemas"]["repository"];
-      body_html?: string;
-      body_text?: string;
-      /** Format: uri */
-      timeline_url?: string;
-      performed_via_github_app?: components["schemas"]["nullable-integration"];
-      reactions?: components["schemas"]["reaction-rollup"];
-    };
-    /**
-     * Label Search Result Item
-     * @description Label Search Result Item
-     */
-    "label-search-result-item": {
-      id: number;
-      node_id: string;
-      /** Format: uri */
-      url: string;
-      name: string;
-      color: string;
-      default: boolean;
-      description: string | null;
-      score: number;
-      text_matches?: components["schemas"]["search-result-text-matches"];
-    };
-    /**
-     * Repo Search Result Item
-     * @description Repo Search Result Item
-     */
-    "repo-search-result-item": {
-      id: number;
-      node_id: string;
-      name: string;
-      full_name: string;
-      owner: components["schemas"]["nullable-simple-user"];
-      private: boolean;
-      /** Format: uri */
-      html_url: string;
-      description: string | null;
-      fork: boolean;
-      /** Format: uri */
-      url: string;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      /** Format: date-time */
-      pushed_at: string;
-      /** Format: uri */
-      homepage: string | null;
-      size: number;
-      stargazers_count: number;
-      watchers_count: number;
-      language: string | null;
-      forks_count: number;
-      open_issues_count: number;
-      master_branch?: string;
-      default_branch: string;
-      score: number;
-      /** Format: uri */
-      forks_url: string;
-      keys_url: string;
-      collaborators_url: string;
-      /** Format: uri */
-      teams_url: string;
-      /** Format: uri */
-      hooks_url: string;
-      issue_events_url: string;
-      /** Format: uri */
-      events_url: string;
-      assignees_url: string;
-      branches_url: string;
-      /** Format: uri */
-      tags_url: string;
-      blobs_url: string;
-      git_tags_url: string;
-      git_refs_url: string;
-      trees_url: string;
-      statuses_url: string;
-      /** Format: uri */
-      languages_url: string;
-      /** Format: uri */
-      stargazers_url: string;
-      /** Format: uri */
-      contributors_url: string;
-      /** Format: uri */
-      subscribers_url: string;
-      /** Format: uri */
-      subscription_url: string;
-      commits_url: string;
-      git_commits_url: string;
-      comments_url: string;
-      issue_comment_url: string;
-      contents_url: string;
-      compare_url: string;
-      /** Format: uri */
-      merges_url: string;
-      archive_url: string;
-      /** Format: uri */
-      downloads_url: string;
-      issues_url: string;
-      pulls_url: string;
-      milestones_url: string;
-      notifications_url: string;
-      labels_url: string;
-      releases_url: string;
-      /** Format: uri */
-      deployments_url: string;
-      git_url: string;
-      ssh_url: string;
-      clone_url: string;
-      /** Format: uri */
-      svn_url: string;
-      forks: number;
-      open_issues: number;
-      watchers: number;
-      topics?: string[];
-      /** Format: uri */
-      mirror_url: string | null;
-      has_issues: boolean;
-      has_projects: boolean;
-      has_pages: boolean;
-      has_wiki: boolean;
-      has_downloads: boolean;
-      has_discussions?: boolean;
-      archived: boolean;
-      /** @description Returns whether or not this repository disabled. */
-      disabled: boolean;
-      /** @description The repository visibility: public, private, or internal. */
-      visibility?: string;
-      license: components["schemas"]["nullable-license-simple"];
-      permissions?: {
-        admin: boolean;
-        maintain?: boolean;
-        push: boolean;
-        triage?: boolean;
-        pull: boolean;
-      };
-      text_matches?: components["schemas"]["search-result-text-matches"];
-      temp_clone_token?: string;
-      allow_merge_commit?: boolean;
-      allow_squash_merge?: boolean;
-      allow_rebase_merge?: boolean;
-      allow_auto_merge?: boolean;
-      delete_branch_on_merge?: boolean;
-      allow_forking?: boolean;
-      is_template?: boolean;
-      /** @example false */
-      web_commit_signoff_required?: boolean;
-    };
-    /**
-     * Topic Search Result Item
-     * @description Topic Search Result Item
-     */
-    "topic-search-result-item": {
-      name: string;
-      display_name: string | null;
-      short_description: string | null;
-      description: string | null;
-      created_by: string | null;
-      released: string | null;
-      /** Format: date-time */
-      created_at: string;
-      /** Format: date-time */
-      updated_at: string;
-      featured: boolean;
-      curated: boolean;
-      score: number;
-      repository_count?: number | null;
-      /** Format: uri */
-      logo_url?: string | null;
-      text_matches?: components["schemas"]["search-result-text-matches"];
-      related?:
-        | {
-            topic_relation?: {
-              id?: number;
-              name?: string;
-              topic_id?: number;
-              relation_type?: string;
-            };
-          }[]
-        | null;
-      aliases?:
-        | {
-            topic_relation?: {
-              id?: number;
-              name?: string;
-              topic_id?: number;
-              relation_type?: string;
-            };
-          }[]
-        | null;
-    };
-    /**
-     * User Search Result Item
-     * @description User Search Result Item
-     */
-    "user-search-result-item": {
-      login: string;
-      id: number;
-      node_id: string;
-      /** Format: uri */
-      avatar_url: string;
-      gravatar_id: string | null;
-      /** Format: uri */
-      url: string;
-      /** Format: uri */
-      html_url: string;
-      /** Format: uri */
-      followers_url: string;
-      /** Format: uri */
-      subscriptions_url: string;
-      /** Format: uri */
-      organizations_url: string;
-      /** Format: uri */
-      repos_url: string;
-      /** Format: uri */
-      received_events_url: string;
-      type: string;
-      score: number;
-      following_url: string;
-      gists_url: string;
-      starred_url: string;
-      events_url: string;
-      public_repos?: number;
-      public_gists?: number;
-      followers?: number;
-      following?: number;
-      /** Format: date-time */
-      created_at?: string;
-      /** Format: date-time */
-      updated_at?: string;
-      name?: string | null;
-      bio?: string | null;
-      /** Format: email */
-      email?: string | null;
-      location?: string | null;
-      site_admin: boolean;
-      hireable?: boolean | null;
-      text_matches?: components["schemas"]["search-result-text-matches"];
-      blog?: string | null;
-      company?: string | null;
-      /** Format: date-time */
-      suspended_at?: string | null;
-    };
-    /**
-     * Private User
-     * @description Private User
-     */
-    "private-user": {
-      /** @example octocat */
-      login: string;
-      /** @example 1 */
-      id: number;
-      /** @example MDQ6VXNlcjE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://github.com/images/error/octocat_happy.gif
-       */
-      avatar_url: string;
-      /** @example 41d064eb2195891e12d0413f63227ea7 */
-      gravatar_id: string | null;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/followers
-       */
-      followers_url: string;
-      /** @example https://api.github.com/users/octocat/following{/other_user} */
-      following_url: string;
-      /** @example https://api.github.com/users/octocat/gists{/gist_id} */
-      gists_url: string;
-      /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */
-      starred_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/subscriptions
-       */
-      subscriptions_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/orgs
-       */
-      organizations_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/repos
-       */
-      repos_url: string;
-      /** @example https://api.github.com/users/octocat/events{/privacy} */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/received_events
-       */
-      received_events_url: string;
-      /** @example User */
-      type: string;
-      site_admin: boolean;
-      /** @example monalisa octocat */
-      name: string | null;
-      /** @example GitHub */
-      company: string | null;
-      /** @example https://github.com/blog */
-      blog: string | null;
-      /** @example San Francisco */
-      location: string | null;
-      /**
-       * Format: email
-       * @example octocat@github.com
-       */
-      email: string | null;
-      hireable: boolean | null;
-      /** @example There once was... */
-      bio: string | null;
-      /** @example monalisa */
-      twitter_username?: string | null;
-      /** @example 2 */
-      public_repos: number;
-      /** @example 1 */
-      public_gists: number;
-      /** @example 20 */
-      followers: number;
-      /** @example 0 */
-      following: number;
-      /**
-       * Format: date-time
-       * @example 2008-01-14T04:33:35Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2008-01-14T04:33:35Z
-       */
-      updated_at: string;
-      /** @example 81 */
-      private_gists: number;
-      /** @example 100 */
-      total_private_repos: number;
-      /** @example 100 */
-      owned_private_repos: number;
-      /** @example 10000 */
-      disk_usage: number;
-      /** @example 8 */
-      collaborators: number;
-      /** @example true */
-      two_factor_authentication: boolean;
-      plan?: {
-        collaborators: number;
-        name: string;
-        space: number;
-        private_repos: number;
-      };
-      /** Format: date-time */
-      suspended_at?: string | null;
-      business_plus?: boolean;
-      ldap_dn?: string;
-    };
-    /**
-     * Codespaces Secret
-     * @description Secrets for a GitHub Codespace.
-     */
-    "codespaces-secret": {
-      /**
-       * @description The name of the secret
-       * @example SECRET_NAME
-       */
-      name: string;
-      /**
-       * Format: date-time
-       * @description The date and time at which the secret was created, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ.
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @description The date and time at which the secret was last updated, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ.
-       */
-      updated_at: string;
-      /**
-       * @description The type of repositories in the organization that the secret is visible to
-       * @enum {string}
-       */
-      visibility: "all" | "private" | "selected";
-      /**
-       * Format: uri
-       * @description The API URL at which the list of repositories this secret is visible to can be retrieved
-       * @example https://api.github.com/user/secrets/SECRET_NAME/repositories
-       */
-      selected_repositories_url: string;
-    };
-    /**
-     * CodespacesUserPublicKey
-     * @description The public key used for setting user Codespaces' Secrets.
-     */
-    "codespaces-user-public-key": {
-      /**
-       * @description The identifier for the key.
-       * @example 1234567
-       */
-      key_id: string;
-      /**
-       * @description The Base64 encoded public key.
-       * @example hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs=
-       */
-      key: string;
-    };
-    /**
-     * Fetches information about an export of a codespace.
-     * @description An export of a codespace. Also, latest export details for a codespace can be fetched with id = latest
-     */
-    "codespace-export-details": {
-      /**
-       * @description State of the latest export
-       * @example succeeded | failed | in_progress
-       */
-      state?: string | null;
-      /**
-       * Format: date-time
-       * @description Completion time of the last export operation
-       * @example 2021-01-01T19:01:12Z
-       */
-      completed_at?: string | null;
-      /**
-       * @description Name of the exported branch
-       * @example codespace-monalisa-octocat-hello-world-g4wpq6h95q
-       */
-      branch?: string | null;
-      /**
-       * @description Git commit SHA of the exported branch
-       * @example fd95a81ca01e48ede9f39c799ecbcef817b8a3b2
-       */
-      sha?: string | null;
-      /**
-       * @description Id for the export details
-       * @example latest
-       */
-      id?: string;
-      /**
-       * @description Url for fetching export details
-       * @example https://api.github.com/user/codespaces/:name/exports/latest
-       */
-      export_url?: string;
-      /**
-       * @description Web url for the exported branch
-       * @example https://github.com/octocat/hello-world/tree/:branch
-       */
-      html_url?: string | null;
-    };
-    /**
-     * Codespace
-     * @description A codespace.
-     */
-    "codespace-with-full-repository": {
-      /** @example 1 */
-      id: number;
-      /**
-       * @description Automatically generated name of this codespace.
-       * @example monalisa-octocat-hello-world-g4wpq6h95q
-       */
-      name: string;
-      /**
-       * @description Display name for this codespace.
-       * @example bookish space pancake
-       */
-      display_name?: string | null;
-      /**
-       * @description UUID identifying this codespace's environment.
-       * @example 26a7c758-7299-4a73-b978-5a92a7ae98a0
-       */
-      environment_id: string | null;
-      owner: components["schemas"]["simple-user"];
-      billable_owner: components["schemas"]["simple-user"];
-      repository: components["schemas"]["full-repository"];
-      machine: components["schemas"]["nullable-codespace-machine"];
-      /**
-       * @description Path to devcontainer.json from repo root used to create Codespace.
-       * @example .devcontainer/example/devcontainer.json
-       */
-      devcontainer_path?: string | null;
-      /**
-       * @description Whether the codespace was created from a prebuild.
-       * @example false
-       */
-      prebuild: boolean | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      updated_at: string;
-      /**
-       * Format: date-time
-       * @description Last known time this codespace was started.
-       * @example 2011-01-26T19:01:12Z
-       */
-      last_used_at: string;
-      /**
-       * @description State of this codespace.
-       * @example Available
-       * @enum {string}
-       */
-      state:
-        | "Unknown"
-        | "Created"
-        | "Queued"
-        | "Provisioning"
-        | "Available"
-        | "Awaiting"
-        | "Unavailable"
-        | "Deleted"
-        | "Moved"
-        | "Shutdown"
-        | "Archived"
-        | "Starting"
-        | "ShuttingDown"
-        | "Failed"
-        | "Exporting"
-        | "Updating"
-        | "Rebuilding";
-      /**
-       * Format: uri
-       * @description API URL for this codespace.
-       */
-      url: string;
-      /** @description Details about the codespace's git repository. */
-      git_status: {
-        /**
-         * @description The number of commits the local repository is ahead of the remote.
-         * @example 0
-         */
-        ahead?: number;
-        /**
-         * @description The number of commits the local repository is behind the remote.
-         * @example 0
-         */
-        behind?: number;
-        /** @description Whether the local repository has unpushed changes. */
-        has_unpushed_changes?: boolean;
-        /** @description Whether the local repository has uncommitted changes. */
-        has_uncommitted_changes?: boolean;
-        /**
-         * @description The current branch (or SHA if in detached HEAD state) of the local repository.
-         * @example main
-         */
-        ref?: string;
-      };
-      /**
-       * @description The initally assigned location of a new codespace.
-       * @example WestUs2
-       * @enum {string}
-       */
-      location: "EastUs" | "SouthEastAsia" | "WestEurope" | "WestUs2";
-      /**
-       * @description The number of minutes of inactivity after which this codespace will be automatically stopped.
-       * @example 60
-       */
-      idle_timeout_minutes: number | null;
-      /**
-       * Format: uri
-       * @description URL to access this codespace on the web.
-       */
-      web_url: string;
-      /**
-       * Format: uri
-       * @description API URL to access available alternate machine types for this codespace.
-       */
-      machines_url: string;
-      /**
-       * Format: uri
-       * @description API URL to start this codespace.
-       */
-      start_url: string;
-      /**
-       * Format: uri
-       * @description API URL to stop this codespace.
-       */
-      stop_url: string;
-      /**
-       * Format: uri
-       * @description API URL to publish this codespace to a new repository.
-       */
-      publish_url?: string | null;
-      /**
-       * Format: uri
-       * @description API URL for the Pull Request associated with this codespace, if any.
-       */
-      pulls_url: string | null;
-      recent_folders: string[];
-      runtime_constraints?: {
-        /** @description The privacy settings a user can select from when forwarding a port. */
-        allowed_port_privacy_settings?: string[] | null;
-      };
-      /** @description Whether or not a codespace has a pending async operation. This would mean that the codespace is temporarily unavailable. The only thing that you can do with a codespace in this state is delete it. */
-      pending_operation?: boolean | null;
-      /** @description Text to show user when codespace is disabled by a pending operation */
-      pending_operation_disabled_reason?: string | null;
-      /** @description Text to show user when codespace idle timeout minutes has been overriden by an organization policy */
-      idle_timeout_notice?: string | null;
-      /**
-       * @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days).
-       * @example 60
-       */
-      retention_period_minutes?: number | null;
-      /**
-       * Format: date-time
-       * @description When a codespace will be auto-deleted based on the "retention_period_minutes" and "last_used_at"
-       * @example 2011-01-26T20:01:12Z
-       */
-      retention_expires_at?: string | null;
-    };
-    /**
-     * Email
-     * @description Email
-     */
-    email: {
-      /**
-       * Format: email
-       * @example octocat@github.com
-       */
-      email: string;
-      /** @example true */
-      primary: boolean;
-      /** @example true */
-      verified: boolean;
-      /** @example public */
-      visibility: string | null;
-    };
-    /**
-     * GPG Key
-     * @description A unique encryption key
-     */
-    "gpg-key": {
-      /** @example 3 */
-      id: number;
-      /** @example Octocat's GPG Key */
-      name?: string | null;
-      primary_key_id: number | null;
-      /** @example 3262EFF25BA0D270 */
-      key_id: string;
-      /** @example xsBNBFayYZ... */
-      public_key: string;
-      /**
-       * @example [
-       *   {
-       *     "email": "octocat@users.noreply.github.com",
-       *     "verified": true
-       *   }
-       * ]
-       */
-      emails: {
-        email?: string;
-        verified?: boolean;
-      }[];
-      /**
-       * @example [
-       *   {
-       *     "id": 4,
-       *     "primary_key_id": 3,
-       *     "key_id": "4A595D4C72EE49C7",
-       *     "public_key": "zsBNBFayYZ...",
-       *     "emails": [],
-       *     "can_sign": false,
-       *     "can_encrypt_comms": true,
-       *     "can_encrypt_storage": true,
-       *     "can_certify": false,
-       *     "created_at": "2016-03-24T11:31:04-06:00",
-       *     "expires_at": null,
-       *     "revoked": false
-       *   }
-       * ]
-       */
-      subkeys: {
-        id?: number;
-        primary_key_id?: number;
-        key_id?: string;
-        public_key?: string;
-        emails?: {
-          email?: string;
-          verified?: boolean;
-        }[];
-        subkeys?: unknown[];
-        can_sign?: boolean;
-        can_encrypt_comms?: boolean;
-        can_encrypt_storage?: boolean;
-        can_certify?: boolean;
-        created_at?: string;
-        expires_at?: string | null;
-        raw_key?: string | null;
-        revoked?: boolean;
-      }[];
-      /** @example true */
-      can_sign: boolean;
-      can_encrypt_comms: boolean;
-      can_encrypt_storage: boolean;
-      /** @example true */
-      can_certify: boolean;
-      /**
-       * Format: date-time
-       * @example 2016-03-24T11:31:04-06:00
-       */
-      created_at: string;
-      /** Format: date-time */
-      expires_at: string | null;
-      /** @example true */
-      revoked: boolean;
-      raw_key: string | null;
-    };
-    /**
-     * Key
-     * @description Key
-     */
-    key: {
-      key: string;
-      id: number;
-      url: string;
-      title: string;
-      /** Format: date-time */
-      created_at: string;
-      verified: boolean;
-      read_only: boolean;
-    };
-    /** Marketplace Account */
-    "marketplace-account": {
-      /** Format: uri */
-      url: string;
-      id: number;
-      type: string;
-      node_id?: string;
-      login: string;
-      /** Format: email */
-      email?: string | null;
-      /** Format: email */
-      organization_billing_email?: string | null;
-    };
-    /**
-     * User Marketplace Purchase
-     * @description User Marketplace Purchase
-     */
-    "user-marketplace-purchase": {
-      /** @example monthly */
-      billing_cycle: string;
-      /**
-       * Format: date-time
-       * @example 2017-11-11T00:00:00Z
-       */
-      next_billing_date: string | null;
-      unit_count: number | null;
-      /** @example true */
-      on_free_trial: boolean;
-      /**
-       * Format: date-time
-       * @example 2017-11-11T00:00:00Z
-       */
-      free_trial_ends_on: string | null;
-      /**
-       * Format: date-time
-       * @example 2017-11-02T01:12:12Z
-       */
-      updated_at: string | null;
-      account: components["schemas"]["marketplace-account"];
-      plan: components["schemas"]["marketplace-listing-plan"];
-    };
-    /**
-     * Social account
-     * @description Social media account
-     */
-    "social-account": {
-      /** @example linkedin */
-      provider: string;
-      /** @example https://www.linkedin.com/company/github/ */
-      url: string;
-    };
-    /**
-     * SSH Signing Key
-     * @description A public SSH key used to sign Git commits
-     */
-    "ssh-signing-key": {
-      key: string;
-      id: number;
-      title: string;
-      /** Format: date-time */
-      created_at: string;
-    };
-    /**
-     * Starred Repository
-     * @description Starred Repository
-     */
-    "starred-repository": {
-      /** Format: date-time */
-      starred_at: string;
-      repo: components["schemas"]["repository"];
-    };
-    /**
-     * Hovercard
-     * @description Hovercard
-     */
-    hovercard: {
-      contexts: {
-        message: string;
-        octicon: string;
-      }[];
-    };
-    /**
-     * Key Simple
-     * @description Key Simple
-     */
-    "key-simple": {
-      id: number;
-      key: string;
-    };
-    /**
-     * Enterprise
-     * @description An enterprise on GitHub. Webhook payloads contain the `enterprise` property when the webhook is configured
-     * on an enterprise account or an organization that's part of an enterprise account. For more information,
-     * see "[About enterprise accounts](https://docs.github.com/admin/overview/about-enterprise-accounts)."
-     */
-    "enterprise-webhooks": {
-      /** @description A short description of the enterprise. */
-      description?: string | null;
-      /**
-       * Format: uri
-       * @example https://github.com/enterprises/octo-business
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @description The enterprise's website URL.
-       */
-      website_url?: string | null;
-      /**
-       * @description Unique identifier of the enterprise
-       * @example 42
-       */
-      id: number;
-      /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */
-      node_id: string;
-      /**
-       * @description The name of the enterprise.
-       * @example Octo Business
-       */
-      name: string;
-      /**
-       * @description The slug url identifier for the enterprise.
-       * @example octo-business
-       */
-      slug: string;
-      /**
-       * Format: date-time
-       * @example 2019-01-26T19:01:12Z
-       */
-      created_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2019-01-26T19:14:43Z
-       */
-      updated_at: string | null;
-      /** Format: uri */
-      avatar_url: string;
-    };
-    /**
-     * Simple Installation
-     * @description The GitHub App installation. Webhook payloads contain the `installation` property when the event is configured
-     * for and sent to a GitHub App. For more information,
-     * see "[Using webhooks with GitHub Apps](https://docs.github.com/apps/creating-github-apps/registering-a-github-app/using-webhooks-with-github-apps)."
-     */
-    "simple-installation": {
-      /**
-       * @description The ID of the installation.
-       * @example 1
-       */
-      id: number;
-      /**
-       * @description The global node ID of the installation.
-       * @example MDQ6VXNlcjU4MzIzMQ==
-       */
-      node_id: string;
-    };
-    /**
-     * Organization Simple
-     * @description A GitHub organization. Webhook payloads contain the `organization` property when the webhook is configured for an
-     * organization, or when the event occurs from activity in a repository owned by an organization.
-     */
-    "organization-simple-webhooks": {
-      /** @example github */
-      login: string;
-      /** @example 1 */
-      id: number;
-      /** @example MDEyOk9yZ2FuaXphdGlvbjE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/github
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/github/repos
-       */
-      repos_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/orgs/github/events
-       */
-      events_url: string;
-      /** @example https://api.github.com/orgs/github/hooks */
-      hooks_url: string;
-      /** @example https://api.github.com/orgs/github/issues */
-      issues_url: string;
-      /** @example https://api.github.com/orgs/github/members{/member} */
-      members_url: string;
-      /** @example https://api.github.com/orgs/github/public_members{/member} */
-      public_members_url: string;
-      /** @example https://github.com/images/error/octocat_happy.gif */
-      avatar_url: string;
-      /** @example A great organization */
-      description: string | null;
-    };
-    /**
-     * Repository
-     * @description The repository on GitHub where the event occurred. Webhook payloads contain the `repository` property
-     * when the event occurs from activity in a repository.
-     */
-    "repository-webhooks": {
-      /**
-       * @description Unique identifier of the repository
-       * @example 42
-       */
-      id: number;
-      /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */
-      node_id: string;
-      /**
-       * @description The name of the repository.
-       * @example Team Environment
-       */
-      name: string;
-      /** @example octocat/Hello-World */
-      full_name: string;
-      license: components["schemas"]["nullable-license-simple"];
-      organization?: components["schemas"]["nullable-simple-user"];
-      forks: number;
-      permissions?: {
-        admin: boolean;
-        pull: boolean;
-        triage?: boolean;
-        push: boolean;
-        maintain?: boolean;
-      };
-      owner: components["schemas"]["simple-user"];
-      /**
-       * @description Whether the repository is private or public.
-       * @default false
-       */
-      private: boolean;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World
-       */
-      html_url: string;
-      /** @example This your first repo! */
-      description: string | null;
-      fork: boolean;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World
-       */
-      url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */
-      archive_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */
-      assignees_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */
-      blobs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */
-      branches_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */
-      collaborators_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */
-      comments_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */
-      commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */
-      compare_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */
-      contents_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/contributors
-       */
-      contributors_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/deployments
-       */
-      deployments_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/downloads
-       */
-      downloads_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/events
-       */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/forks
-       */
-      forks_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */
-      git_commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */
-      git_refs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */
-      git_tags_url: string;
-      /** @example git:github.com/octocat/Hello-World.git */
-      git_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */
-      issue_comment_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */
-      issue_events_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */
-      issues_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */
-      keys_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */
-      labels_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/languages
-       */
-      languages_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/merges
-       */
-      merges_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */
-      milestones_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */
-      notifications_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */
-      pulls_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */
-      releases_url: string;
-      /** @example git@github.com:octocat/Hello-World.git */
-      ssh_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/stargazers
-       */
-      stargazers_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */
-      statuses_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscribers
-       */
-      subscribers_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscription
-       */
-      subscription_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/tags
-       */
-      tags_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/teams
-       */
-      teams_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */
-      trees_url: string;
-      /** @example https://github.com/octocat/Hello-World.git */
-      clone_url: string;
-      /**
-       * Format: uri
-       * @example git:git.example.com/octocat/Hello-World
-       */
-      mirror_url: string | null;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/hooks
-       */
-      hooks_url: string;
-      /**
-       * Format: uri
-       * @example https://svn.github.com/octocat/Hello-World
-       */
-      svn_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com
-       */
-      homepage: string | null;
-      language: string | null;
-      /** @example 9 */
-      forks_count: number;
-      /** @example 80 */
-      stargazers_count: number;
-      /** @example 80 */
-      watchers_count: number;
-      /**
-       * @description The size of the repository. Size is calculated hourly. When a repository is initially created, the size is 0.
-       * @example 108
-       */
-      size: number;
-      /**
-       * @description The default branch of the repository.
-       * @example master
-       */
-      default_branch: string;
-      /** @example 0 */
-      open_issues_count: number;
-      /**
-       * @description Whether this repository acts as a template that can be used to generate new repositories.
-       * @default false
-       * @example true
-       */
-      is_template?: boolean;
-      topics?: string[];
-      /** @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. */
-      custom_properties?: {
-        [key: string]: unknown;
-      };
-      /**
-       * @description Whether issues are enabled.
-       * @default true
-       * @example true
-       */
-      has_issues: boolean;
-      /**
-       * @description Whether projects are enabled.
-       * @default true
-       * @example true
-       */
-      has_projects: boolean;
-      /**
-       * @description Whether the wiki is enabled.
-       * @default true
-       * @example true
-       */
-      has_wiki: boolean;
-      has_pages: boolean;
-      /**
-       * @description Whether downloads are enabled.
-       * @default true
-       * @example true
-       */
-      has_downloads: boolean;
-      /**
-       * @description Whether discussions are enabled.
-       * @default false
-       * @example true
-       */
-      has_discussions?: boolean;
-      /**
-       * @description Whether the repository is archived.
-       * @default false
-       */
-      archived: boolean;
-      /** @description Returns whether or not this repository disabled. */
-      disabled: boolean;
-      /**
-       * @description The repository visibility: public, private, or internal.
-       * @default public
-       */
-      visibility?: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:06:43Z
-       */
-      pushed_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      created_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:14:43Z
-       */
-      updated_at: string | null;
-      /**
-       * @description Whether to allow rebase merges for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_rebase_merge?: boolean;
-      template_repository?: {
-        id?: number;
-        node_id?: string;
-        name?: string;
-        full_name?: string;
-        owner?: {
-          login?: string;
-          id?: number;
-          node_id?: string;
-          avatar_url?: string;
-          gravatar_id?: string;
-          url?: string;
-          html_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          starred_url?: string;
-          subscriptions_url?: string;
-          organizations_url?: string;
-          repos_url?: string;
-          events_url?: string;
-          received_events_url?: string;
-          type?: string;
-          site_admin?: boolean;
-        };
-        private?: boolean;
-        html_url?: string;
-        description?: string;
-        fork?: boolean;
-        url?: string;
-        archive_url?: string;
-        assignees_url?: string;
-        blobs_url?: string;
-        branches_url?: string;
-        collaborators_url?: string;
-        comments_url?: string;
-        commits_url?: string;
-        compare_url?: string;
-        contents_url?: string;
-        contributors_url?: string;
-        deployments_url?: string;
-        downloads_url?: string;
-        events_url?: string;
-        forks_url?: string;
-        git_commits_url?: string;
-        git_refs_url?: string;
-        git_tags_url?: string;
-        git_url?: string;
-        issue_comment_url?: string;
-        issue_events_url?: string;
-        issues_url?: string;
-        keys_url?: string;
-        labels_url?: string;
-        languages_url?: string;
-        merges_url?: string;
-        milestones_url?: string;
-        notifications_url?: string;
-        pulls_url?: string;
-        releases_url?: string;
-        ssh_url?: string;
-        stargazers_url?: string;
-        statuses_url?: string;
-        subscribers_url?: string;
-        subscription_url?: string;
-        tags_url?: string;
-        teams_url?: string;
-        trees_url?: string;
-        clone_url?: string;
-        mirror_url?: string;
-        hooks_url?: string;
-        svn_url?: string;
-        homepage?: string;
-        language?: string;
-        forks_count?: number;
-        stargazers_count?: number;
-        watchers_count?: number;
-        size?: number;
-        default_branch?: string;
-        open_issues_count?: number;
-        is_template?: boolean;
-        topics?: string[];
-        has_issues?: boolean;
-        has_projects?: boolean;
-        has_wiki?: boolean;
-        has_pages?: boolean;
-        has_downloads?: boolean;
-        archived?: boolean;
-        disabled?: boolean;
-        visibility?: string;
-        pushed_at?: string;
-        created_at?: string;
-        updated_at?: string;
-        permissions?: {
-          admin?: boolean;
-          maintain?: boolean;
-          push?: boolean;
-          triage?: boolean;
-          pull?: boolean;
-        };
-        allow_rebase_merge?: boolean;
-        temp_clone_token?: string;
-        allow_squash_merge?: boolean;
-        allow_auto_merge?: boolean;
-        delete_branch_on_merge?: boolean;
-        allow_update_branch?: boolean;
-        use_squash_pr_title_as_default?: boolean;
-        /**
-         * @description The default value for a squash merge commit title:
-         *
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-         * @enum {string}
-         */
-        squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-        /**
-         * @description The default value for a squash merge commit message:
-         *
-         * - `PR_BODY` - default to the pull request's body.
-         * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-        /**
-         * @description The default value for a merge commit title.
-         *
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-         * @enum {string}
-         */
-        merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-        /**
-         * @description The default value for a merge commit message.
-         *
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `PR_BODY` - default to the pull request's body.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-        allow_merge_commit?: boolean;
-        subscribers_count?: number;
-        network_count?: number;
-      } | null;
-      temp_clone_token?: string;
-      /**
-       * @description Whether to allow squash merges for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_squash_merge?: boolean;
-      /**
-       * @description Whether to allow Auto-merge to be used on pull requests.
-       * @default false
-       * @example false
-       */
-      allow_auto_merge?: boolean;
-      /**
-       * @description Whether to delete head branches when pull requests are merged
-       * @default false
-       * @example false
-       */
-      delete_branch_on_merge?: boolean;
-      /**
-       * @description Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging.
-       * @default false
-       * @example false
-       */
-      allow_update_branch?: boolean;
-      /**
-       * @deprecated
-       * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-       * @default false
-       */
-      use_squash_pr_title_as_default?: boolean;
-      /**
-       * @description The default value for a squash merge commit title:
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-       * @enum {string}
-       */
-      squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-      /**
-       * @description The default value for a squash merge commit message:
-       *
-       * - `PR_BODY` - default to the pull request's body.
-       * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-       * - `BLANK` - default to a blank commit message.
-       * @enum {string}
-       */
-      squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-      /**
-       * @description The default value for a merge commit title.
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-       * @enum {string}
-       */
-      merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-      /**
-       * @description The default value for a merge commit message.
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `PR_BODY` - default to the pull request's body.
-       * - `BLANK` - default to a blank commit message.
-       * @enum {string}
-       */
-      merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-      /**
-       * @description Whether to allow merge commits for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_merge_commit?: boolean;
-      /** @description Whether to allow forking this repo */
-      allow_forking?: boolean;
-      /**
-       * @description Whether to require contributors to sign off on web-based commits
-       * @default false
-       */
-      web_commit_signoff_required?: boolean;
-      subscribers_count?: number;
-      network_count?: number;
-      open_issues: number;
-      watchers: number;
-      master_branch?: string;
-      /** @example "2020-07-09T00:17:42Z" */
-      starred_at?: string;
-      /** @description Whether anonymous git access is enabled for this repository */
-      anonymous_access_enabled?: boolean;
-    };
-    /**
-     * Simple User
-     * @description The GitHub user that triggered the event. This property is included in every webhook payload.
-     */
-    "simple-user-webhooks": {
-      name?: string | null;
-      email?: string | null;
-      /** @example octocat */
-      login: string;
-      /** @example 1 */
-      id: number;
-      /** @example MDQ6VXNlcjE= */
-      node_id: string;
-      /**
-       * Format: uri
-       * @example https://github.com/images/error/octocat_happy.gif
-       */
-      avatar_url: string;
-      /** @example 41d064eb2195891e12d0413f63227ea7 */
-      gravatar_id: string | null;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat
-       */
-      url: string;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat
-       */
-      html_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/followers
-       */
-      followers_url: string;
-      /** @example https://api.github.com/users/octocat/following{/other_user} */
-      following_url: string;
-      /** @example https://api.github.com/users/octocat/gists{/gist_id} */
-      gists_url: string;
-      /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */
-      starred_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/subscriptions
-       */
-      subscriptions_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/orgs
-       */
-      organizations_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/repos
-       */
-      repos_url: string;
-      /** @example https://api.github.com/users/octocat/events{/privacy} */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example https://api.github.com/users/octocat/received_events
-       */
-      received_events_url: string;
-      /** @example User */
-      type: string;
-      site_admin: boolean;
-      /** @example "2020-07-09T00:17:55Z" */
-      starred_at?: string;
-    };
-    /** @description A suite of checks performed on the code of a given code change */
-    "simple-check-suite": {
-      /** @example d6fde92930d4715a2b49857d24b940956b26d2d3 */
-      after?: string | null;
-      app?: components["schemas"]["integration"];
-      /** @example 146e867f55c26428e5f9fade55a9bbf5e95a7912 */
-      before?: string | null;
-      /**
-       * @example neutral
-       * @enum {string|null}
-       */
-      conclusion?:
-        | "success"
-        | "failure"
-        | "neutral"
-        | "cancelled"
-        | "skipped"
-        | "timed_out"
-        | "action_required"
-        | "stale"
-        | "startup_failure"
-        | null;
-      /** Format: date-time */
-      created_at?: string;
-      /** @example master */
-      head_branch?: string | null;
-      /**
-       * @description The SHA of the head commit that is being checked.
-       * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d
-       */
-      head_sha?: string;
-      /** @example 5 */
-      id?: number;
-      /** @example MDEwOkNoZWNrU3VpdGU1 */
-      node_id?: string;
-      pull_requests?: components["schemas"]["pull-request-minimal"][];
-      repository?: components["schemas"]["minimal-repository"];
-      /**
-       * @example completed
-       * @enum {string}
-       */
-      status?: "queued" | "in_progress" | "completed" | "pending" | "waiting";
-      /** Format: date-time */
-      updated_at?: string;
-      /** @example https://api.github.com/repos/github/hello-world/check-suites/5 */
-      url?: string;
-    };
-    /**
-     * CheckRun
-     * @description A check performed on the code of a given code change
-     */
-    "check-run-with-simple-check-suite": {
-      app: components["schemas"]["nullable-integration"];
-      check_suite: components["schemas"]["simple-check-suite"];
-      /**
-       * Format: date-time
-       * @example 2018-05-04T01:14:52Z
-       */
-      completed_at: string | null;
-      /**
-       * @example neutral
-       * @enum {string|null}
-       */
-      conclusion:
-        | "waiting"
-        | "pending"
-        | "startup_failure"
-        | "stale"
-        | "success"
-        | "failure"
-        | "neutral"
-        | "cancelled"
-        | "skipped"
-        | "timed_out"
-        | "action_required"
-        | null;
-      deployment?: components["schemas"]["deployment-simple"];
-      /** @example https://example.com */
-      details_url: string;
-      /** @example 42 */
-      external_id: string;
-      /**
-       * @description The SHA of the commit that is being checked.
-       * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d
-       */
-      head_sha: string;
-      /** @example https://github.com/github/hello-world/runs/4 */
-      html_url: string;
-      /**
-       * @description The id of the check.
-       * @example 21
-       */
-      id: number;
-      /**
-       * @description The name of the check.
-       * @example test-coverage
-       */
-      name: string;
-      /** @example MDg6Q2hlY2tSdW40 */
-      node_id: string;
-      output: {
-        annotations_count: number;
-        /** Format: uri */
-        annotations_url: string;
-        summary: string | null;
-        text: string | null;
-        title: string | null;
-      };
-      pull_requests: components["schemas"]["pull-request-minimal"][];
-      /**
-       * Format: date-time
-       * @example 2018-05-04T01:14:52Z
-       */
-      started_at: string;
-      /**
-       * @description The phase of the lifecycle that the check is currently in.
-       * @example queued
-       * @enum {string}
-       */
-      status: "queued" | "in_progress" | "completed" | "pending";
-      /** @example https://api.github.com/repos/github/hello-world/check-runs/4 */
-      url: string;
-    };
-    /**
-     * Discussion
-     * @description A Discussion in a repository.
-     */
-    discussion: {
-      active_lock_reason: string | null;
-      answer_chosen_at: string | null;
-      /** User */
-      answer_chosen_by: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      answer_html_url: string | null;
-      /**
-       * AuthorAssociation
-       * @description How the author is associated with the repository.
-       * @enum {string}
-       */
-      author_association:
-        | "COLLABORATOR"
-        | "CONTRIBUTOR"
-        | "FIRST_TIMER"
-        | "FIRST_TIME_CONTRIBUTOR"
-        | "MANNEQUIN"
-        | "MEMBER"
-        | "NONE"
-        | "OWNER";
-      body: string;
-      category: {
-        /** Format: date-time */
-        created_at: string;
-        description: string;
-        emoji: string;
-        id: number;
-        is_answerable: boolean;
-        name: string;
-        node_id?: string;
-        repository_id: number;
-        slug: string;
-        updated_at: string;
-      };
-      comments: number;
-      /** Format: date-time */
-      created_at: string;
-      html_url: string;
-      id: number;
-      locked: boolean;
-      node_id: string;
-      number: number;
-      /** Reactions */
-      reactions?: {
-        "+1": number;
-        "-1": number;
-        confused: number;
-        eyes: number;
-        heart: number;
-        hooray: number;
-        laugh: number;
-        rocket: number;
-        total_count: number;
-        /** Format: uri */
-        url: string;
-      };
-      repository_url: string;
-      /**
-       * @description The current state of the discussion.
-       * `converting` means that the discussion is being converted from an issue.
-       * `transferring` means that the discussion is being transferred from another repository.
-       * @enum {string}
-       */
-      state: "open" | "closed" | "locked" | "converting" | "transferring";
-      /**
-       * @description The reason for the current state
-       * @example resolved
-       * @enum {string|null}
-       */
-      state_reason: "resolved" | "outdated" | "duplicate" | "reopened" | null;
-      timeline_url?: string;
-      title: string;
-      /** Format: date-time */
-      updated_at: string;
-      /** User */
-      user: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-    };
-    /**
-     * Merge Group
-     * @description A group of pull requests that the merge queue has grouped together to be merged.
-     */
-    "merge-group": {
-      /** @description The SHA of the merge group. */
-      head_sha: string;
-      /** @description The full ref of the merge group. */
-      head_ref: string;
-      /** @description The SHA of the merge group's parent commit. */
-      base_sha: string;
-      /** @description The full ref of the branch the merge group will be merged into. */
-      base_ref: string;
-      head_commit: components["schemas"]["simple-commit"];
-    };
-    /**
-     * Repository
-     * @description The repository on GitHub where the event occurred. Webhook payloads contain the `repository` property
-     * when the event occurs from activity in a repository.
-     */
-    "nullable-repository-webhooks": {
-      /**
-       * @description Unique identifier of the repository
-       * @example 42
-       */
-      id: number;
-      /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */
-      node_id: string;
-      /**
-       * @description The name of the repository.
-       * @example Team Environment
-       */
-      name: string;
-      /** @example octocat/Hello-World */
-      full_name: string;
-      license: components["schemas"]["nullable-license-simple"];
-      organization?: components["schemas"]["nullable-simple-user"];
-      forks: number;
-      permissions?: {
-        admin: boolean;
-        pull: boolean;
-        triage?: boolean;
-        push: boolean;
-        maintain?: boolean;
-      };
-      owner: components["schemas"]["simple-user"];
-      /**
-       * @description Whether the repository is private or public.
-       * @default false
-       */
-      private: boolean;
-      /**
-       * Format: uri
-       * @example https://github.com/octocat/Hello-World
-       */
-      html_url: string;
-      /** @example This your first repo! */
-      description: string | null;
-      fork: boolean;
-      /**
-       * Format: uri
-       * @example https://api.github.com/repos/octocat/Hello-World
-       */
-      url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */
-      archive_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */
-      assignees_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */
-      blobs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */
-      branches_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */
-      collaborators_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */
-      comments_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */
-      commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */
-      compare_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */
-      contents_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/contributors
-       */
-      contributors_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/deployments
-       */
-      deployments_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/downloads
-       */
-      downloads_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/events
-       */
-      events_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/forks
-       */
-      forks_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */
-      git_commits_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */
-      git_refs_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */
-      git_tags_url: string;
-      /** @example git:github.com/octocat/Hello-World.git */
-      git_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */
-      issue_comment_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */
-      issue_events_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */
-      issues_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */
-      keys_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */
-      labels_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/languages
-       */
-      languages_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/merges
-       */
-      merges_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */
-      milestones_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */
-      notifications_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */
-      pulls_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */
-      releases_url: string;
-      /** @example git@github.com:octocat/Hello-World.git */
-      ssh_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/stargazers
-       */
-      stargazers_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */
-      statuses_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscribers
-       */
-      subscribers_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/subscription
-       */
-      subscription_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/tags
-       */
-      tags_url: string;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/teams
-       */
-      teams_url: string;
-      /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */
-      trees_url: string;
-      /** @example https://github.com/octocat/Hello-World.git */
-      clone_url: string;
-      /**
-       * Format: uri
-       * @example git:git.example.com/octocat/Hello-World
-       */
-      mirror_url: string | null;
-      /**
-       * Format: uri
-       * @example http://api.github.com/repos/octocat/Hello-World/hooks
-       */
-      hooks_url: string;
-      /**
-       * Format: uri
-       * @example https://svn.github.com/octocat/Hello-World
-       */
-      svn_url: string;
-      /**
-       * Format: uri
-       * @example https://github.com
-       */
-      homepage: string | null;
-      language: string | null;
-      /** @example 9 */
-      forks_count: number;
-      /** @example 80 */
-      stargazers_count: number;
-      /** @example 80 */
-      watchers_count: number;
-      /**
-       * @description The size of the repository. Size is calculated hourly. When a repository is initially created, the size is 0.
-       * @example 108
-       */
-      size: number;
-      /**
-       * @description The default branch of the repository.
-       * @example master
-       */
-      default_branch: string;
-      /** @example 0 */
-      open_issues_count: number;
-      /**
-       * @description Whether this repository acts as a template that can be used to generate new repositories.
-       * @default false
-       * @example true
-       */
-      is_template?: boolean;
-      topics?: string[];
-      /** @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. */
-      custom_properties?: {
-        [key: string]: unknown;
-      };
-      /**
-       * @description Whether issues are enabled.
-       * @default true
-       * @example true
-       */
-      has_issues: boolean;
-      /**
-       * @description Whether projects are enabled.
-       * @default true
-       * @example true
-       */
-      has_projects: boolean;
-      /**
-       * @description Whether the wiki is enabled.
-       * @default true
-       * @example true
-       */
-      has_wiki: boolean;
-      has_pages: boolean;
-      /**
-       * @description Whether downloads are enabled.
-       * @default true
-       * @example true
-       */
-      has_downloads: boolean;
-      /**
-       * @description Whether discussions are enabled.
-       * @default false
-       * @example true
-       */
-      has_discussions?: boolean;
-      /**
-       * @description Whether the repository is archived.
-       * @default false
-       */
-      archived: boolean;
-      /** @description Returns whether or not this repository disabled. */
-      disabled: boolean;
-      /**
-       * @description The repository visibility: public, private, or internal.
-       * @default public
-       */
-      visibility?: string;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:06:43Z
-       */
-      pushed_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:01:12Z
-       */
-      created_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2011-01-26T19:14:43Z
-       */
-      updated_at: string | null;
-      /**
-       * @description Whether to allow rebase merges for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_rebase_merge?: boolean;
-      template_repository?: {
-        id?: number;
-        node_id?: string;
-        name?: string;
-        full_name?: string;
-        owner?: {
-          login?: string;
-          id?: number;
-          node_id?: string;
-          avatar_url?: string;
-          gravatar_id?: string;
-          url?: string;
-          html_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          starred_url?: string;
-          subscriptions_url?: string;
-          organizations_url?: string;
-          repos_url?: string;
-          events_url?: string;
-          received_events_url?: string;
-          type?: string;
-          site_admin?: boolean;
-        };
-        private?: boolean;
-        html_url?: string;
-        description?: string;
-        fork?: boolean;
-        url?: string;
-        archive_url?: string;
-        assignees_url?: string;
-        blobs_url?: string;
-        branches_url?: string;
-        collaborators_url?: string;
-        comments_url?: string;
-        commits_url?: string;
-        compare_url?: string;
-        contents_url?: string;
-        contributors_url?: string;
-        deployments_url?: string;
-        downloads_url?: string;
-        events_url?: string;
-        forks_url?: string;
-        git_commits_url?: string;
-        git_refs_url?: string;
-        git_tags_url?: string;
-        git_url?: string;
-        issue_comment_url?: string;
-        issue_events_url?: string;
-        issues_url?: string;
-        keys_url?: string;
-        labels_url?: string;
-        languages_url?: string;
-        merges_url?: string;
-        milestones_url?: string;
-        notifications_url?: string;
-        pulls_url?: string;
-        releases_url?: string;
-        ssh_url?: string;
-        stargazers_url?: string;
-        statuses_url?: string;
-        subscribers_url?: string;
-        subscription_url?: string;
-        tags_url?: string;
-        teams_url?: string;
-        trees_url?: string;
-        clone_url?: string;
-        mirror_url?: string;
-        hooks_url?: string;
-        svn_url?: string;
-        homepage?: string;
-        language?: string;
-        forks_count?: number;
-        stargazers_count?: number;
-        watchers_count?: number;
-        size?: number;
-        default_branch?: string;
-        open_issues_count?: number;
-        is_template?: boolean;
-        topics?: string[];
-        has_issues?: boolean;
-        has_projects?: boolean;
-        has_wiki?: boolean;
-        has_pages?: boolean;
-        has_downloads?: boolean;
-        archived?: boolean;
-        disabled?: boolean;
-        visibility?: string;
-        pushed_at?: string;
-        created_at?: string;
-        updated_at?: string;
-        permissions?: {
-          admin?: boolean;
-          maintain?: boolean;
-          push?: boolean;
-          triage?: boolean;
-          pull?: boolean;
-        };
-        allow_rebase_merge?: boolean;
-        temp_clone_token?: string;
-        allow_squash_merge?: boolean;
-        allow_auto_merge?: boolean;
-        delete_branch_on_merge?: boolean;
-        allow_update_branch?: boolean;
-        use_squash_pr_title_as_default?: boolean;
-        /**
-         * @description The default value for a squash merge commit title:
-         *
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-         * @enum {string}
-         */
-        squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-        /**
-         * @description The default value for a squash merge commit message:
-         *
-         * - `PR_BODY` - default to the pull request's body.
-         * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-        /**
-         * @description The default value for a merge commit title.
-         *
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-         * @enum {string}
-         */
-        merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-        /**
-         * @description The default value for a merge commit message.
-         *
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `PR_BODY` - default to the pull request's body.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-        allow_merge_commit?: boolean;
-        subscribers_count?: number;
-        network_count?: number;
-      } | null;
-      temp_clone_token?: string;
-      /**
-       * @description Whether to allow squash merges for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_squash_merge?: boolean;
-      /**
-       * @description Whether to allow Auto-merge to be used on pull requests.
-       * @default false
-       * @example false
-       */
-      allow_auto_merge?: boolean;
-      /**
-       * @description Whether to delete head branches when pull requests are merged
-       * @default false
-       * @example false
-       */
-      delete_branch_on_merge?: boolean;
-      /**
-       * @description Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging.
-       * @default false
-       * @example false
-       */
-      allow_update_branch?: boolean;
-      /**
-       * @deprecated
-       * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-       * @default false
-       */
-      use_squash_pr_title_as_default?: boolean;
-      /**
-       * @description The default value for a squash merge commit title:
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-       * @enum {string}
-       */
-      squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-      /**
-       * @description The default value for a squash merge commit message:
-       *
-       * - `PR_BODY` - default to the pull request's body.
-       * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-       * - `BLANK` - default to a blank commit message.
-       * @enum {string}
-       */
-      squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-      /**
-       * @description The default value for a merge commit title.
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-       * @enum {string}
-       */
-      merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-      /**
-       * @description The default value for a merge commit message.
-       *
-       * - `PR_TITLE` - default to the pull request's title.
-       * - `PR_BODY` - default to the pull request's body.
-       * - `BLANK` - default to a blank commit message.
-       * @enum {string}
-       */
-      merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-      /**
-       * @description Whether to allow merge commits for pull requests.
-       * @default true
-       * @example true
-       */
-      allow_merge_commit?: boolean;
-      /** @description Whether to allow forking this repo */
-      allow_forking?: boolean;
-      /**
-       * @description Whether to require contributors to sign off on web-based commits
-       * @default false
-       */
-      web_commit_signoff_required?: boolean;
-      subscribers_count?: number;
-      network_count?: number;
-      open_issues: number;
-      watchers: number;
-      master_branch?: string;
-      /** @example "2020-07-09T00:17:42Z" */
-      starred_at?: string;
-      /** @description Whether anonymous git access is enabled for this repository */
-      anonymous_access_enabled?: boolean;
-    } | null;
-    /**
-     * Personal Access Token Request
-     * @description Details of a Personal Access Token Request.
-     */
-    "personal-access-token-request": {
-      /** @description Unique identifier of the request for access via fine-grained personal access token. Used as the `pat_request_id` parameter in the list and review API calls. */
-      id: number;
-      owner: components["schemas"]["simple-user"];
-      /** @description New requested permissions, categorized by type of permission. */
-      permissions_added: {
-        organization?: {
-          [key: string]: string;
-        };
-        repository?: {
-          [key: string]: string;
-        };
-        other?: {
-          [key: string]: string;
-        };
-      };
-      /** @description Requested permissions that elevate access for a previously approved request for access, categorized by type of permission. */
-      permissions_upgraded: {
-        organization?: {
-          [key: string]: string;
-        };
-        repository?: {
-          [key: string]: string;
-        };
-        other?: {
-          [key: string]: string;
-        };
-      };
-      /** @description Permissions requested, categorized by type of permission. This field incorporates `permissions_added` and `permissions_upgraded`. */
-      permissions_result: {
-        organization?: {
-          [key: string]: string;
-        };
-        repository?: {
-          [key: string]: string;
-        };
-        other?: {
-          [key: string]: string;
-        };
-      };
-      /**
-       * @description Type of repository selection requested.
-       * @enum {string}
-       */
-      repository_selection: "none" | "all" | "subset";
-      /** @description The number of repositories the token is requesting access to. This field is only populated when `repository_selection` is `subset`. */
-      repository_count: number | null;
-      /** @description An array of repository objects the token is requesting access to. This field is only populated when `repository_selection` is `subset`. */
-      repositories:
-        | {
-            full_name: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-          }[]
-        | null;
-      /** @description Date and time when the request for access was created. */
-      created_at: string;
-      /** @description Whether the associated fine-grained personal access token has expired. */
-      token_expired: boolean;
-      /** @description Date and time when the associated fine-grained personal access token expires. */
-      token_expires_at: string | null;
-      /** @description Date and time when the associated fine-grained personal access token was last used for authentication. */
-      token_last_used_at: string | null;
-    };
-    /**
-     * Projects v2 Project
-     * @description A projects v2 project
-     */
-    "projects-v2": {
-      id: number;
-      node_id: string;
-      owner: components["schemas"]["simple-user"];
-      creator: components["schemas"]["simple-user"];
-      title: string;
-      description: string | null;
-      public: boolean;
-      /**
-       * Format: date-time
-       * @example 2022-04-28T12:00:00Z
-       */
-      closed_at: string | null;
-      /**
-       * Format: date-time
-       * @example 2022-04-28T12:00:00Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2022-04-28T12:00:00Z
-       */
-      updated_at: string;
-      number: number;
-      short_description: string | null;
-      /**
-       * Format: date-time
-       * @example 2022-04-28T12:00:00Z
-       */
-      deleted_at: string | null;
-      deleted_by: components["schemas"]["nullable-simple-user"];
-    };
-    /**
-     * Projects v2 Item Content Type
-     * @description The type of content tracked in a project item
-     * @enum {string}
-     */
-    "projects-v2-item-content-type": "Issue" | "PullRequest" | "DraftIssue";
-    /**
-     * Projects v2 Item
-     * @description An item belonging to a project
-     */
-    "projects-v2-item": {
-      id: number;
-      node_id?: string;
-      project_node_id?: string;
-      content_node_id: string;
-      content_type: components["schemas"]["projects-v2-item-content-type"];
-      creator?: components["schemas"]["simple-user"];
-      /**
-       * Format: date-time
-       * @example 2022-04-28T12:00:00Z
-       */
-      created_at: string;
-      /**
-       * Format: date-time
-       * @example 2022-04-28T12:00:00Z
-       */
-      updated_at: string;
-      /**
-       * Format: date-time
-       * @example 2022-04-28T12:00:00Z
-       */
-      archived_at: string | null;
-    };
-    /**
-     * @description The reason for resolving the alert.
-     * @enum {string|null}
-     */
-    "secret-scanning-alert-resolution-webhook":
-      | "false_positive"
-      | "wont_fix"
-      | "revoked"
-      | "used_in_tests"
-      | "pattern_deleted"
-      | "pattern_edited"
-      | null;
-    "secret-scanning-alert-webhook": {
-      number?: components["schemas"]["alert-number"];
-      created_at?: components["schemas"]["alert-created-at"];
-      updated_at?: components["schemas"]["nullable-alert-updated-at"];
-      url?: components["schemas"]["alert-url"];
-      html_url?: components["schemas"]["alert-html-url"];
-      /**
-       * Format: uri
-       * @description The REST API URL of the code locations for this alert.
-       */
-      locations_url?: string;
-      resolution?: components["schemas"]["secret-scanning-alert-resolution-webhook"];
-      /**
-       * Format: date-time
-       * @description The time that the alert was resolved in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-       */
-      resolved_at?: string | null;
-      resolved_by?: components["schemas"]["nullable-simple-user"];
-      /** @description An optional comment to resolve an alert. */
-      resolution_comment?: string | null;
-      /** @description The type of secret that secret scanning detected. */
-      secret_type?: string;
-      /** @description Whether push protection was bypassed for the detected secret. */
-      push_protection_bypassed?: boolean | null;
-      push_protection_bypassed_by?: components["schemas"]["nullable-simple-user"];
-      /**
-       * Format: date-time
-       * @description The time that push protection was bypassed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-       */
-      push_protection_bypassed_at?: string | null;
-    };
-    /** branch protection configuration disabled event */
-    "webhook-branch-protection-configuration-disabled": {
-      /** @enum {string} */
-      action: "disabled";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** branch protection configuration enabled event */
-    "webhook-branch-protection-configuration-enabled": {
-      /** @enum {string} */
-      action: "enabled";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** branch protection rule created event */
-    "webhook-branch-protection-rule-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      /**
-       * branch protection rule
-       * @description The branch protection rule. Includes a `name` and all the [branch protection settings](https://docs.github.com/github/administering-a-repository/defining-the-mergeability-of-pull-requests/about-protected-branches#about-branch-protection-settings) applied to branches that match the name. Binary settings are boolean. Multi-level configurations are one of `off`, `non_admins`, or `everyone`. Actor and build lists are arrays of strings.
-       */
-      rule: {
-        admin_enforced: boolean;
-        /** @enum {string} */
-        allow_deletions_enforcement_level: "off" | "non_admins" | "everyone";
-        /** @enum {string} */
-        allow_force_pushes_enforcement_level: "off" | "non_admins" | "everyone";
-        authorized_actor_names: string[];
-        authorized_actors_only: boolean;
-        authorized_dismissal_actors_only: boolean;
-        create_protected?: boolean;
-        /** Format: date-time */
-        created_at: string;
-        dismiss_stale_reviews_on_push: boolean;
-        id: number;
-        ignore_approvals_from_contributors: boolean;
-        /** @enum {string} */
-        linear_history_requirement_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        /** @enum {string} */
-        merge_queue_enforcement_level: "off" | "non_admins" | "everyone";
-        name: string;
-        /** @enum {string} */
-        pull_request_reviews_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        repository_id: number;
-        require_code_owner_review: boolean;
-        /** @description Whether the most recent push must be approved by someone other than the person who pushed it */
-        require_last_push_approval?: boolean;
-        required_approving_review_count: number;
-        /** @enum {string} */
-        required_conversation_resolution_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        /** @enum {string} */
-        required_deployments_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        required_status_checks: string[];
-        /** @enum {string} */
-        required_status_checks_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        /** @enum {string} */
-        signature_requirement_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        strict_required_status_checks_policy: boolean;
-        /** Format: date-time */
-        updated_at: string;
-      };
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** branch protection rule deleted event */
-    "webhook-branch-protection-rule-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      /**
-       * branch protection rule
-       * @description The branch protection rule. Includes a `name` and all the [branch protection settings](https://docs.github.com/github/administering-a-repository/defining-the-mergeability-of-pull-requests/about-protected-branches#about-branch-protection-settings) applied to branches that match the name. Binary settings are boolean. Multi-level configurations are one of `off`, `non_admins`, or `everyone`. Actor and build lists are arrays of strings.
-       */
-      rule: {
-        admin_enforced: boolean;
-        /** @enum {string} */
-        allow_deletions_enforcement_level: "off" | "non_admins" | "everyone";
-        /** @enum {string} */
-        allow_force_pushes_enforcement_level: "off" | "non_admins" | "everyone";
-        authorized_actor_names: string[];
-        authorized_actors_only: boolean;
-        authorized_dismissal_actors_only: boolean;
-        create_protected?: boolean;
-        /** Format: date-time */
-        created_at: string;
-        dismiss_stale_reviews_on_push: boolean;
-        id: number;
-        ignore_approvals_from_contributors: boolean;
-        /** @enum {string} */
-        linear_history_requirement_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        /** @enum {string} */
-        merge_queue_enforcement_level: "off" | "non_admins" | "everyone";
-        name: string;
-        /** @enum {string} */
-        pull_request_reviews_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        repository_id: number;
-        require_code_owner_review: boolean;
-        /** @description Whether the most recent push must be approved by someone other than the person who pushed it */
-        require_last_push_approval?: boolean;
-        required_approving_review_count: number;
-        /** @enum {string} */
-        required_conversation_resolution_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        /** @enum {string} */
-        required_deployments_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        required_status_checks: string[];
-        /** @enum {string} */
-        required_status_checks_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        /** @enum {string} */
-        signature_requirement_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        strict_required_status_checks_policy: boolean;
-        /** Format: date-time */
-        updated_at: string;
-      };
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** branch protection rule edited event */
-    "webhook-branch-protection-rule-edited": {
-      /** @enum {string} */
-      action: "edited";
-      /** @description If the action was `edited`, the changes to the rule. */
-      changes?: {
-        admin_enforced?: {
-          from: boolean | null;
-        };
-        authorized_actor_names?: {
-          from: string[];
-        };
-        authorized_actors_only?: {
-          from: boolean | null;
-        };
-        authorized_dismissal_actors_only?: {
-          from: boolean | null;
-        };
-        linear_history_requirement_enforcement_level?: {
-          /** @enum {string} */
-          from: "off" | "non_admins" | "everyone";
-        };
-        required_status_checks?: {
-          from: string[];
-        };
-        required_status_checks_enforcement_level?: {
-          /** @enum {string} */
-          from: "off" | "non_admins" | "everyone";
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      /**
-       * branch protection rule
-       * @description The branch protection rule. Includes a `name` and all the [branch protection settings](https://docs.github.com/github/administering-a-repository/defining-the-mergeability-of-pull-requests/about-protected-branches#about-branch-protection-settings) applied to branches that match the name. Binary settings are boolean. Multi-level configurations are one of `off`, `non_admins`, or `everyone`. Actor and build lists are arrays of strings.
-       */
-      rule: {
-        admin_enforced: boolean;
-        /** @enum {string} */
-        allow_deletions_enforcement_level: "off" | "non_admins" | "everyone";
-        /** @enum {string} */
-        allow_force_pushes_enforcement_level: "off" | "non_admins" | "everyone";
-        authorized_actor_names: string[];
-        authorized_actors_only: boolean;
-        authorized_dismissal_actors_only: boolean;
-        create_protected?: boolean;
-        /** Format: date-time */
-        created_at: string;
-        dismiss_stale_reviews_on_push: boolean;
-        id: number;
-        ignore_approvals_from_contributors: boolean;
-        /** @enum {string} */
-        linear_history_requirement_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        /** @enum {string} */
-        merge_queue_enforcement_level: "off" | "non_admins" | "everyone";
-        name: string;
-        /** @enum {string} */
-        pull_request_reviews_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        repository_id: number;
-        require_code_owner_review: boolean;
-        /** @description Whether the most recent push must be approved by someone other than the person who pushed it */
-        require_last_push_approval?: boolean;
-        required_approving_review_count: number;
-        /** @enum {string} */
-        required_conversation_resolution_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        /** @enum {string} */
-        required_deployments_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        required_status_checks: string[];
-        /** @enum {string} */
-        required_status_checks_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        /** @enum {string} */
-        signature_requirement_enforcement_level:
-          | "off"
-          | "non_admins"
-          | "everyone";
-        strict_required_status_checks_policy: boolean;
-        /** Format: date-time */
-        updated_at: string;
-      };
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Check Run Completed Event */
-    "webhook-check-run-completed": {
-      /** @enum {string} */
-      action?: "completed";
-      check_run: components["schemas"]["check-run-with-simple-check-suite"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /**
-     * Check Run Completed Event
-     * @description The check_run.completed webhook encoded with URL encoding
-     */
-    "webhook-check-run-completed-form-encoded": {
-      /** @description A URL-encoded string of the check_run.completed JSON payload. The decoded payload is a JSON object. */
-      payload: string;
-    };
-    /** Check Run Created Event */
-    "webhook-check-run-created": {
-      /** @enum {string} */
-      action?: "created";
-      check_run: components["schemas"]["check-run-with-simple-check-suite"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /**
-     * Check Run Created Event
-     * @description The check_run.created webhook encoded with URL encoding
-     */
-    "webhook-check-run-created-form-encoded": {
-      /** @description A URL-encoded string of the check_run.created JSON payload. The decoded payload is a JSON object. */
-      payload: string;
-    };
-    /** Check Run Requested Action Event */
-    "webhook-check-run-requested-action": {
-      /** @enum {string} */
-      action: "requested_action";
-      check_run: components["schemas"]["check-run-with-simple-check-suite"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      /** @description The action requested by the user. */
-      requested_action?: {
-        /** @description The integrator reference of the action requested by the user. */
-        identifier?: string;
-      };
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /**
-     * Check Run Requested Action Event
-     * @description The check_run.requested_action webhook encoded with URL encoding
-     */
-    "webhook-check-run-requested-action-form-encoded": {
-      /** @description A URL-encoded string of the check_run.requested_action JSON payload. The decoded payload is a JSON object. */
-      payload: string;
-    };
-    /** Check Run Re-Requested Event */
-    "webhook-check-run-rerequested": {
-      /** @enum {string} */
-      action?: "rerequested";
-      check_run: components["schemas"]["check-run-with-simple-check-suite"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /**
-     * Check Run Re-Requested Event
-     * @description The check_run.rerequested webhook encoded with URL encoding
-     */
-    "webhook-check-run-rerequested-form-encoded": {
-      /** @description A URL-encoded string of the check_run.rerequested JSON payload. The decoded payload is a JSON object. */
-      payload: string;
-    };
-    /** check_suite completed event */
-    "webhook-check-suite-completed": {
-      /** @enum {string} */
-      action: "completed";
-      /** @description The [check_suite](https://docs.github.com/rest/checks/suites#get-a-check-suite). */
-      check_suite: {
-        after: string | null;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        app: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "merge_group"
-            | "pull_request_review_thread"
-            | "workflow_job"
-            | "merge_queue_entry"
-            | "security_and_analysis"
-            | "projects_v2_item"
-            | "secret_scanning_alert_location"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        };
-        before: string | null;
-        /** Format: uri */
-        check_runs_url: string;
-        /**
-         * @description The summary conclusion for all check runs that are part of the check suite. This value will be `null` until the check run has `completed`.
-         * @enum {string|null}
-         */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | null
-          | "skipped"
-          | "startup_failure";
-        /** Format: date-time */
-        created_at: string;
-        /** @description The head branch name the changes are on. */
-        head_branch: string | null;
-        /** SimpleCommit */
-        head_commit: {
-          /**
-           * Committer
-           * @description Metaproperties for Git author/committer information.
-           */
-          author: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          };
-          /**
-           * Committer
-           * @description Metaproperties for Git author/committer information.
-           */
-          committer: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          };
-          id: string;
-          message: string;
-          timestamp: string;
-          tree_id: string;
-        };
-        /** @description The SHA of the head commit that is being checked. */
-        head_sha: string;
-        id: number;
-        latest_check_runs_count: number;
-        node_id: string;
-        /** @description An array of pull requests that match this check suite. A pull request matches a check suite if they have the same `head_sha` and `head_branch`. When the check suite's `head_branch` is in a forked repository it will be `null` and the `pull_requests` array will be empty. */
-        pull_requests: {
-          base: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          head: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          id: number;
-          number: number;
-          /** Format: uri */
-          url: string;
-        }[];
-        rerequestable?: boolean;
-        runs_rerequestable?: boolean;
-        /**
-         * @description The summary status for all check runs that are part of the check suite. Can be `requested`, `in_progress`, or `completed`.
-         * @enum {string|null}
-         */
-        status:
-          | "requested"
-          | "in_progress"
-          | "completed"
-          | "queued"
-          | null
-          | "pending";
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL that points to the check suite API resource.
-         */
-        url: string;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** check_suite requested event */
-    "webhook-check-suite-requested": {
-      /** @enum {string} */
-      action: "requested";
-      /** @description The [check_suite](https://docs.github.com/rest/checks/suites#get-a-check-suite). */
-      check_suite: {
-        after: string | null;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        app: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "pull_request_review_thread"
-            | "workflow_job"
-            | "merge_queue_entry"
-            | "security_and_analysis"
-            | "secret_scanning_alert_location"
-            | "projects_v2_item"
-            | "merge_group"
-            | "repository_import"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        };
-        before: string | null;
-        /** Format: uri */
-        check_runs_url: string;
-        /**
-         * @description The summary conclusion for all check runs that are part of the check suite. This value will be `null` until the check run has completed.
-         * @enum {string|null}
-         */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | null
-          | "skipped";
-        /** Format: date-time */
-        created_at: string;
-        /** @description The head branch name the changes are on. */
-        head_branch: string | null;
-        /** SimpleCommit */
-        head_commit: {
-          /**
-           * Committer
-           * @description Metaproperties for Git author/committer information.
-           */
-          author: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          };
-          /**
-           * Committer
-           * @description Metaproperties for Git author/committer information.
-           */
-          committer: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          };
-          id: string;
-          message: string;
-          timestamp: string;
-          tree_id: string;
-        };
-        /** @description The SHA of the head commit that is being checked. */
-        head_sha: string;
-        id: number;
-        latest_check_runs_count: number;
-        node_id: string;
-        /** @description An array of pull requests that match this check suite. A pull request matches a check suite if they have the same `head_sha` and `head_branch`. When the check suite's `head_branch` is in a forked repository it will be `null` and the `pull_requests` array will be empty. */
-        pull_requests: {
-          base: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          head: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          id: number;
-          number: number;
-          /** Format: uri */
-          url: string;
-        }[];
-        rerequestable?: boolean;
-        runs_rerequestable?: boolean;
-        /**
-         * @description The summary status for all check runs that are part of the check suite. Can be `requested`, `in_progress`, or `completed`.
-         * @enum {string|null}
-         */
-        status: "requested" | "in_progress" | "completed" | "queued" | null;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL that points to the check suite API resource.
-         */
-        url: string;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** check_suite rerequested event */
-    "webhook-check-suite-rerequested": {
-      /** @enum {string} */
-      action: "rerequested";
-      /** @description The [check_suite](https://docs.github.com/rest/checks/suites#get-a-check-suite). */
-      check_suite: {
-        after: string | null;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        app: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "pull_request_review_thread"
-            | "merge_queue_entry"
-            | "workflow_job"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        };
-        before: string | null;
-        /** Format: uri */
-        check_runs_url: string;
-        /**
-         * @description The summary conclusion for all check runs that are part of the check suite. This value will be `null` until the check run has completed.
-         * @enum {string|null}
-         */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | null;
-        /** Format: date-time */
-        created_at: string;
-        /** @description The head branch name the changes are on. */
-        head_branch: string | null;
-        /** SimpleCommit */
-        head_commit: {
-          /**
-           * Committer
-           * @description Metaproperties for Git author/committer information.
-           */
-          author: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          };
-          /**
-           * Committer
-           * @description Metaproperties for Git author/committer information.
-           */
-          committer: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          };
-          id: string;
-          message: string;
-          timestamp: string;
-          tree_id: string;
-        };
-        /** @description The SHA of the head commit that is being checked. */
-        head_sha: string;
-        id: number;
-        latest_check_runs_count: number;
-        node_id: string;
-        /** @description An array of pull requests that match this check suite. A pull request matches a check suite if they have the same `head_sha` and `head_branch`. When the check suite's `head_branch` is in a forked repository it will be `null` and the `pull_requests` array will be empty. */
-        pull_requests: {
-          base: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          head: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          id: number;
-          number: number;
-          /** Format: uri */
-          url: string;
-        }[];
-        rerequestable?: boolean;
-        runs_rerequestable?: boolean;
-        /**
-         * @description The summary status for all check runs that are part of the check suite. Can be `requested`, `in_progress`, or `completed`.
-         * @enum {string|null}
-         */
-        status: "requested" | "in_progress" | "completed" | "queued" | null;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL that points to the check suite API resource.
-         */
-        url: string;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** code_scanning_alert appeared_in_branch event */
-    "webhook-code-scanning-alert-appeared-in-branch": {
-      /** @enum {string} */
-      action: "appeared_in_branch";
-      /** @description The code scanning alert involved in the event. */
-      alert: {
-        /**
-         * Format: date-time
-         * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ.`
-         */
-        created_at: string;
-        /**
-         * Format: date-time
-         * @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-         */
-        dismissed_at: string | null;
-        /** User */
-        dismissed_by: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * @description The reason for dismissing or closing the alert.
-         * @enum {string|null}
-         */
-        dismissed_reason:
-          | "false positive"
-          | "won't fix"
-          | "used in tests"
-          | null;
-        /**
-         * Format: uri
-         * @description The GitHub URL of the alert resource.
-         */
-        html_url: string;
-        /** Alert Instance */
-        most_recent_instance?: {
-          /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */
-          analysis_key: string;
-          /** @description Identifies the configuration under which the analysis was executed. */
-          category?: string;
-          classifications?: string[];
-          commit_sha?: string;
-          /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */
-          environment: string;
-          location?: {
-            end_column?: number;
-            end_line?: number;
-            path?: string;
-            start_column?: number;
-            start_line?: number;
-          };
-          message?: {
-            text?: string;
-          };
-          /** @description The full Git reference, formatted as `refs/heads/<branch name>`. */
-          ref: string;
-          /**
-           * @description State of a code scanning alert.
-           * @enum {string}
-           */
-          state: "open" | "dismissed" | "fixed";
-        } | null;
-        /** @description The code scanning alert number. */
-        number: number;
-        rule: {
-          /** @description A short description of the rule used to detect the alert. */
-          description: string;
-          /** @description A unique identifier for the rule used to detect the alert. */
-          id: string;
-          /**
-           * @description The severity of the alert.
-           * @enum {string|null}
-           */
-          severity: "none" | "note" | "warning" | "error" | null;
-        };
-        /**
-         * @description State of a code scanning alert.
-         * @enum {string}
-         */
-        state: "open" | "dismissed" | "fixed";
-        tool: {
-          /** @description The name of the tool used to generate the code scanning analysis alert. */
-          name: string;
-          /** @description The version of the tool used to detect the alert. */
-          version: string | null;
-        };
-        /** Format: uri */
-        url: string;
-      };
-      /** @description The commit SHA of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */
-      commit_oid: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description The Git reference of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */
-      ref: string;
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** code_scanning_alert closed_by_user event */
-    "webhook-code-scanning-alert-closed-by-user": {
-      /** @enum {string} */
-      action: "closed_by_user";
-      /** @description The code scanning alert involved in the event. */
-      alert: {
-        /**
-         * Format: date-time
-         * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ.`
-         */
-        created_at: string;
-        /**
-         * Format: date-time
-         * @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-         */
-        dismissed_at: string;
-        /** User */
-        dismissed_by: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * @description The reason for dismissing or closing the alert.
-         * @enum {string|null}
-         */
-        dismissed_reason:
-          | "false positive"
-          | "won't fix"
-          | "used in tests"
-          | null;
-        /**
-         * Format: uri
-         * @description The GitHub URL of the alert resource.
-         */
-        html_url: string;
-        /** Alert Instance */
-        most_recent_instance?: {
-          /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */
-          analysis_key: string;
-          /** @description Identifies the configuration under which the analysis was executed. */
-          category?: string;
-          classifications?: string[];
-          commit_sha?: string;
-          /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */
-          environment: string;
-          location?: {
-            end_column?: number;
-            end_line?: number;
-            path?: string;
-            start_column?: number;
-            start_line?: number;
-          };
-          message?: {
-            text?: string;
-          };
-          /** @description The full Git reference, formatted as `refs/heads/<branch name>`. */
-          ref: string;
-          /**
-           * @description State of a code scanning alert.
-           * @enum {string}
-           */
-          state: "open" | "dismissed" | "fixed";
-        } | null;
-        /** @description The code scanning alert number. */
-        number: number;
-        rule: {
-          /** @description A short description of the rule used to detect the alert. */
-          description: string;
-          full_description?: string;
-          help?: string | null;
-          /** @description A link to the documentation for the rule used to detect the alert. */
-          help_uri?: string | null;
-          /** @description A unique identifier for the rule used to detect the alert. */
-          id: string;
-          name?: string;
-          /**
-           * @description The severity of the alert.
-           * @enum {string|null}
-           */
-          severity: "none" | "note" | "warning" | "error" | null;
-          tags?: string[] | null;
-        };
-        /**
-         * @description State of a code scanning alert.
-         * @enum {string}
-         */
-        state: "dismissed" | "fixed";
-        tool: {
-          guid?: string | null;
-          /** @description The name of the tool used to generate the code scanning analysis alert. */
-          name: string;
-          /** @description The version of the tool used to detect the alert. */
-          version: string | null;
-        };
-        /** Format: uri */
-        url: string;
-      };
-      /** @description The commit SHA of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */
-      commit_oid: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description The Git reference of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */
-      ref: string;
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** code_scanning_alert created event */
-    "webhook-code-scanning-alert-created": {
-      /** @enum {string} */
-      action: "created";
-      /** @description The code scanning alert involved in the event. */
-      alert: {
-        /**
-         * Format: date-time
-         * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ.`
-         */
-        created_at: string | null;
-        /** @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. */
-        dismissed_at: Record<string, unknown> | null;
-        dismissed_by: Record<string, unknown> | null;
-        dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"];
-        /** @description The reason for dismissing or closing the alert. Can be one of: `false positive`, `won't fix`, and `used in tests`. */
-        dismissed_reason: Record<string, unknown> | null;
-        fixed_at?: Record<string, unknown> | null;
-        /**
-         * Format: uri
-         * @description The GitHub URL of the alert resource.
-         */
-        html_url: string;
-        instances_url?: string;
-        /** Alert Instance */
-        most_recent_instance?: {
-          /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */
-          analysis_key: string;
-          /** @description Identifies the configuration under which the analysis was executed. */
-          category?: string;
-          classifications?: string[];
-          commit_sha?: string;
-          /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */
-          environment: string;
-          location?: {
-            end_column?: number;
-            end_line?: number;
-            path?: string;
-            start_column?: number;
-            start_line?: number;
-          };
-          message?: {
-            text?: string;
-          };
-          /** @description The full Git reference, formatted as `refs/heads/<branch name>`. */
-          ref: string;
-          /**
-           * @description State of a code scanning alert.
-           * @enum {string}
-           */
-          state: "open" | "dismissed" | "fixed";
-        } | null;
-        /** @description The code scanning alert number. */
-        number: number;
-        rule: {
-          /** @description A short description of the rule used to detect the alert. */
-          description: string;
-          full_description?: string;
-          help?: string | null;
-          /** @description A link to the documentation for the rule used to detect the alert. */
-          help_uri?: string | null;
-          /** @description A unique identifier for the rule used to detect the alert. */
-          id: string;
-          name?: string;
-          /**
-           * @description The severity of the alert.
-           * @enum {string|null}
-           */
-          severity: "none" | "note" | "warning" | "error" | null;
-          tags?: string[] | null;
-        };
-        /**
-         * @description State of a code scanning alert.
-         * @enum {string}
-         */
-        state: "open" | "dismissed";
-        tool: {
-          guid?: string | null;
-          /** @description The name of the tool used to generate the code scanning analysis alert. */
-          name: string;
-          /** @description The version of the tool used to detect the alert. */
-          version: string | null;
-        } | null;
-        updated_at?: string | null;
-        /** Format: uri */
-        url: string;
-      };
-      /** @description The commit SHA of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */
-      commit_oid: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description The Git reference of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */
-      ref: string;
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** code_scanning_alert fixed event */
-    "webhook-code-scanning-alert-fixed": {
-      /** @enum {string} */
-      action: "fixed";
-      /** @description The code scanning alert involved in the event. */
-      alert: {
-        /**
-         * Format: date-time
-         * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ.`
-         */
-        created_at: string;
-        /**
-         * Format: date-time
-         * @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
-         */
-        dismissed_at: string | null;
-        /** User */
-        dismissed_by: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * @description The reason for dismissing or closing the alert.
-         * @enum {string|null}
-         */
-        dismissed_reason:
-          | "false positive"
-          | "won't fix"
-          | "used in tests"
-          | null;
-        /**
-         * Format: uri
-         * @description The GitHub URL of the alert resource.
-         */
-        html_url: string;
-        /** Format: uri */
-        instances_url?: string;
-        /** Alert Instance */
-        most_recent_instance?: {
-          /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */
-          analysis_key: string;
-          /** @description Identifies the configuration under which the analysis was executed. */
-          category?: string;
-          classifications?: string[];
-          commit_sha?: string;
-          /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */
-          environment: string;
-          location?: {
-            end_column?: number;
-            end_line?: number;
-            path?: string;
-            start_column?: number;
-            start_line?: number;
-          };
-          message?: {
-            text?: string;
-          };
-          /** @description The full Git reference, formatted as `refs/heads/<branch name>`. */
-          ref: string;
-          /**
-           * @description State of a code scanning alert.
-           * @enum {string}
-           */
-          state: "open" | "dismissed" | "fixed";
-        } | null;
-        /** @description The code scanning alert number. */
-        number: number;
-        rule: {
-          /** @description A short description of the rule used to detect the alert. */
-          description: string;
-          full_description?: string;
-          help?: string | null;
-          /** @description A link to the documentation for the rule used to detect the alert. */
-          help_uri?: string | null;
-          /** @description A unique identifier for the rule used to detect the alert. */
-          id: string;
-          name?: string;
-          /**
-           * @description The severity of the alert.
-           * @enum {string|null}
-           */
-          severity: "none" | "note" | "warning" | "error" | null;
-          tags?: string[] | null;
-        };
-        /**
-         * @description State of a code scanning alert.
-         * @enum {string}
-         */
-        state: "fixed";
-        tool: {
-          guid?: string | null;
-          /** @description The name of the tool used to generate the code scanning analysis alert. */
-          name: string;
-          /** @description The version of the tool used to detect the alert. */
-          version: string | null;
-        };
-        /** Format: uri */
-        url: string;
-      };
-      /** @description The commit SHA of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */
-      commit_oid: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description The Git reference of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */
-      ref: string;
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** code_scanning_alert reopened event */
-    "webhook-code-scanning-alert-reopened": {
-      /** @enum {string} */
-      action: "reopened";
-      /** @description The code scanning alert involved in the event. */
-      alert: {
-        /**
-         * Format: date-time
-         * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ.`
-         */
-        created_at: string;
-        /** @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. */
-        dismissed_at: string | null;
-        dismissed_by: Record<string, unknown> | null;
-        /** @description The reason for dismissing or closing the alert. Can be one of: `false positive`, `won't fix`, and `used in tests`. */
-        dismissed_reason: string | null;
-        /**
-         * Format: uri
-         * @description The GitHub URL of the alert resource.
-         */
-        html_url: string;
-        /** Alert Instance */
-        most_recent_instance?: {
-          /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */
-          analysis_key: string;
-          /** @description Identifies the configuration under which the analysis was executed. */
-          category?: string;
-          classifications?: string[];
-          commit_sha?: string;
-          /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */
-          environment: string;
-          location?: {
-            end_column?: number;
-            end_line?: number;
-            path?: string;
-            start_column?: number;
-            start_line?: number;
-          };
-          message?: {
-            text?: string;
-          };
-          /** @description The full Git reference, formatted as `refs/heads/<branch name>`. */
-          ref: string;
-          /**
-           * @description State of a code scanning alert.
-           * @enum {string}
-           */
-          state: "open" | "dismissed" | "fixed";
-        } | null;
-        /** @description The code scanning alert number. */
-        number: number;
-        rule: {
-          /** @description A short description of the rule used to detect the alert. */
-          description: string;
-          full_description?: string;
-          help?: string | null;
-          /** @description A link to the documentation for the rule used to detect the alert. */
-          help_uri?: string | null;
-          /** @description A unique identifier for the rule used to detect the alert. */
-          id: string;
-          name?: string;
-          /**
-           * @description The severity of the alert.
-           * @enum {string|null}
-           */
-          severity: "none" | "note" | "warning" | "error" | null;
-          tags?: string[] | null;
-        };
-        /**
-         * @description State of a code scanning alert.
-         * @enum {string}
-         */
-        state: "open" | "dismissed" | "fixed";
-        tool: {
-          guid?: string | null;
-          /** @description The name of the tool used to generate the code scanning analysis alert. */
-          name: string;
-          /** @description The version of the tool used to detect the alert. */
-          version: string | null;
-        };
-        /** Format: uri */
-        url: string;
-      } | null;
-      /** @description The commit SHA of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */
-      commit_oid: string | null;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description The Git reference of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */
-      ref: string | null;
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** code_scanning_alert reopened_by_user event */
-    "webhook-code-scanning-alert-reopened-by-user": {
-      /** @enum {string} */
-      action: "reopened_by_user";
-      /** @description The code scanning alert involved in the event. */
-      alert: {
-        /**
-         * Format: date-time
-         * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ.`
-         */
-        created_at: string;
-        /** @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. */
-        dismissed_at: Record<string, unknown> | null;
-        dismissed_by: Record<string, unknown> | null;
-        /** @description The reason for dismissing or closing the alert. Can be one of: `false positive`, `won't fix`, and `used in tests`. */
-        dismissed_reason: Record<string, unknown> | null;
-        /**
-         * Format: uri
-         * @description The GitHub URL of the alert resource.
-         */
-        html_url: string;
-        /** Alert Instance */
-        most_recent_instance?: {
-          /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */
-          analysis_key: string;
-          /** @description Identifies the configuration under which the analysis was executed. */
-          category?: string;
-          classifications?: string[];
-          commit_sha?: string;
-          /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */
-          environment: string;
-          location?: {
-            end_column?: number;
-            end_line?: number;
-            path?: string;
-            start_column?: number;
-            start_line?: number;
-          };
-          message?: {
-            text?: string;
-          };
-          /** @description The full Git reference, formatted as `refs/heads/<branch name>`. */
-          ref: string;
-          /**
-           * @description State of a code scanning alert.
-           * @enum {string}
-           */
-          state: "open" | "dismissed" | "fixed";
-        } | null;
-        /** @description The code scanning alert number. */
-        number: number;
-        rule: {
-          /** @description A short description of the rule used to detect the alert. */
-          description: string;
-          /** @description A unique identifier for the rule used to detect the alert. */
-          id: string;
-          /**
-           * @description The severity of the alert.
-           * @enum {string|null}
-           */
-          severity: "none" | "note" | "warning" | "error" | null;
-        };
-        /**
-         * @description State of a code scanning alert.
-         * @enum {string}
-         */
-        state: "open" | "fixed";
-        tool: {
-          /** @description The name of the tool used to generate the code scanning analysis alert. */
-          name: string;
-          /** @description The version of the tool used to detect the alert. */
-          version: string | null;
-        };
-        /** Format: uri */
-        url: string;
-      };
-      /** @description The commit SHA of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */
-      commit_oid: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description The Git reference of the code scanning alert. When the action is `reopened_by_user` or `closed_by_user`, the event was triggered by the `sender` and this value will be empty. */
-      ref: string;
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** commit_comment created event */
-    "webhook-commit-comment-created": {
-      /**
-       * @description The action performed. Can be `created`.
-       * @enum {string}
-       */
-      action: "created";
-      /** @description The [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment) resource. */
-      comment: {
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description The text of the comment. */
-        body: string;
-        /** @description The SHA of the commit to which the comment applies. */
-        commit_id: string;
-        created_at: string;
-        /** Format: uri */
-        html_url: string;
-        /** @description The ID of the commit comment. */
-        id: number;
-        /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */
-        line: number | null;
-        /** @description The node ID of the commit comment. */
-        node_id: string;
-        /** @description The relative path of the file to which the comment applies. */
-        path: string | null;
-        /** @description The line index in the diff to which the comment applies. */
-        position: number | null;
-        /** Reactions */
-        reactions?: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** create event */
-    "webhook-create": {
-      /** @description The repository's current description. */
-      description: string | null;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The name of the repository's default branch (usually `main`). */
-      master_branch: string;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description The pusher type for the event. Can be either `user` or a deploy key. */
-      pusher_type: string;
-      /** @description The [`git ref`](https://docs.github.com/rest/git/refs#get-a-reference) resource. */
-      ref: string;
-      /**
-       * @description The type of Git ref object created in the repository.
-       * @enum {string}
-       */
-      ref_type: "tag" | "branch";
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** custom property created event */
-    "webhook-custom-property-created": {
-      /** @enum {string} */
-      action: "created";
-      definition: components["schemas"]["org-custom-property"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** custom property deleted event */
-    "webhook-custom-property-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      definition: {
-        /** @description The name of the property that was deleted. */
-        property_name: string;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** custom property updated event */
-    "webhook-custom-property-updated": {
-      /** @enum {string} */
-      action: "updated";
-      definition: components["schemas"]["org-custom-property"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Custom property values updated event */
-    "webhook-custom-property-values-updated": {
-      /** @enum {string} */
-      action: "updated";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      repository: components["schemas"]["repository-webhooks"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-      /** @description The new custom property values for the repository. */
-      new_property_values: components["schemas"]["custom-property-value"][];
-      /** @description The old custom property values for the repository. */
-      old_property_values: components["schemas"]["custom-property-value"][];
-    };
-    /** delete event */
-    "webhook-delete": {
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description The pusher type for the event. Can be either `user` or a deploy key. */
-      pusher_type: string;
-      /** @description The [`git ref`](https://docs.github.com/rest/git/refs#get-a-reference) resource. */
-      ref: string;
-      /**
-       * @description The type of Git ref object deleted in the repository.
-       * @enum {string}
-       */
-      ref_type: "tag" | "branch";
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Dependabot alert auto-dismissed event */
-    "webhook-dependabot-alert-auto-dismissed": {
-      /** @enum {string} */
-      action: "auto_dismissed";
-      alert: components["schemas"]["dependabot-alert"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Dependabot alert auto-reopened event */
-    "webhook-dependabot-alert-auto-reopened": {
-      /** @enum {string} */
-      action: "auto_reopened";
-      alert: components["schemas"]["dependabot-alert"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Dependabot alert created event */
-    "webhook-dependabot-alert-created": {
-      /** @enum {string} */
-      action: "created";
-      alert: components["schemas"]["dependabot-alert"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Dependabot alert dismissed event */
-    "webhook-dependabot-alert-dismissed": {
-      /** @enum {string} */
-      action: "dismissed";
-      alert: components["schemas"]["dependabot-alert"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Dependabot alert fixed event */
-    "webhook-dependabot-alert-fixed": {
-      /** @enum {string} */
-      action: "fixed";
-      alert: components["schemas"]["dependabot-alert"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Dependabot alert reintroduced event */
-    "webhook-dependabot-alert-reintroduced": {
-      /** @enum {string} */
-      action: "reintroduced";
-      alert: components["schemas"]["dependabot-alert"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Dependabot alert reopened event */
-    "webhook-dependabot-alert-reopened": {
-      /** @enum {string} */
-      action: "reopened";
-      alert: components["schemas"]["dependabot-alert"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** deploy_key created event */
-    "webhook-deploy-key-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The [`deploy key`](https://docs.github.com/rest/deploy-keys/deploy-keys#get-a-deploy-key) resource. */
-      key: {
-        added_by?: string | null;
-        created_at: string;
-        id: number;
-        key: string;
-        last_used?: string | null;
-        read_only: boolean;
-        title: string;
-        /** Format: uri */
-        url: string;
-        verified: boolean;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** deploy_key deleted event */
-    "webhook-deploy-key-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The [`deploy key`](https://docs.github.com/rest/deploy-keys/deploy-keys#get-a-deploy-key) resource. */
-      key: {
-        added_by?: string | null;
-        created_at: string;
-        id: number;
-        key: string;
-        last_used?: string | null;
-        read_only: boolean;
-        title: string;
-        /** Format: uri */
-        url: string;
-        verified: boolean;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** deployment created event */
-    "webhook-deployment-created": {
-      /** @enum {string} */
-      action: "created";
-      /**
-       * Deployment
-       * @description The [deployment](https://docs.github.com/rest/deployments/deployments#list-deployments).
-       */
-      deployment: {
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        description: string | null;
-        environment: string;
-        id: number;
-        node_id: string;
-        original_environment: string;
-        payload: Record<string, never> | string;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "workflow_job"
-            | "pull_request_review_thread"
-            | "merge_queue_entry"
-            | "secret_scanning_alert_location"
-            | "merge_group"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        production_environment?: boolean;
-        ref: string;
-        /** Format: uri */
-        repository_url: string;
-        sha: string;
-        /** Format: uri */
-        statuses_url: string;
-        task: string;
-        transient_environment?: boolean;
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      /** Workflow */
-      workflow: {
-        /** Format: uri */
-        badge_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string;
-        node_id: string;
-        path: string;
-        state: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      } | null;
-      /** Deployment Workflow Run */
-      workflow_run: {
-        /** User */
-        actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        artifacts_url?: string;
-        cancel_url?: string;
-        check_suite_id: number;
-        check_suite_node_id: string;
-        check_suite_url?: string;
-        /** @enum {string|null} */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | null;
-        /** Format: date-time */
-        created_at: string;
-        display_title: string;
-        event: string;
-        head_branch: string;
-        head_commit?: Record<string, unknown> | null;
-        head_repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: Record<string, unknown> | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        jobs_url?: string;
-        logs_url?: string;
-        name: string;
-        node_id: string;
-        path: string;
-        previous_attempt_url?: Record<string, unknown> | null;
-        pull_requests: {
-          base: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          head: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          id: number;
-          number: number;
-          /** Format: uri */
-          url: string;
-        }[];
-        referenced_workflows?:
-          | {
-              path: string;
-              ref?: string;
-              sha: string;
-            }[]
-          | null;
-        repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: Record<string, unknown> | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        rerun_url?: string;
-        run_attempt: number;
-        run_number: number;
-        /** Format: date-time */
-        run_started_at: string;
-        /** @enum {string} */
-        status:
-          | "requested"
-          | "in_progress"
-          | "completed"
-          | "queued"
-          | "waiting"
-          | "pending";
-        /** User */
-        triggering_actor?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        workflow_id: number;
-        workflow_url?: string;
-      } | null;
-    };
-    /** deployment protection rule requested event */
-    "webhook-deployment-protection-rule-requested": {
-      /** @enum {string} */
-      action?: "requested";
-      /** @description The name of the environment that has the deployment protection rule. */
-      environment?: string;
-      /** @description The event that triggered the deployment protection rule. */
-      event?: string;
-      /**
-       * Format: uri
-       * @description The URL to review the deployment protection rule.
-       */
-      deployment_callback_url?: string;
-      deployment?: components["schemas"]["deployment"];
-      pull_requests?: components["schemas"]["pull-request"][];
-      repository?: components["schemas"]["repository-webhooks"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    "webhook-deployment-review-approved": {
-      /** @enum {string} */
-      action: "approved";
-      approver?: {
-        avatar_url?: string;
-        events_url?: string;
-        followers_url?: string;
-        following_url?: string;
-        gists_url?: string;
-        gravatar_id?: string;
-        html_url?: string;
-        id?: number;
-        login?: string;
-        node_id?: string;
-        organizations_url?: string;
-        received_events_url?: string;
-        repos_url?: string;
-        site_admin?: boolean;
-        starred_url?: string;
-        subscriptions_url?: string;
-        type?: string;
-        url?: string;
-      };
-      comment?: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      reviewers?: {
-        /** User */
-        reviewer?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** @enum {string} */
-        type?: "User";
-      }[];
-      sender: components["schemas"]["simple-user-webhooks"];
-      since: string;
-      workflow_job_run?: {
-        conclusion: Record<string, unknown> | null;
-        created_at: string;
-        environment: string;
-        html_url: string;
-        id: number;
-        name: Record<string, unknown> | null;
-        status: string;
-        updated_at: string;
-      };
-      workflow_job_runs?: {
-        conclusion?: Record<string, unknown> | null;
-        created_at?: string;
-        environment?: string;
-        html_url?: string;
-        id?: number;
-        name?: string | null;
-        status?: string;
-        updated_at?: string;
-      }[];
-      /** Deployment Workflow Run */
-      workflow_run: {
-        /** User */
-        actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        artifacts_url?: string;
-        cancel_url?: string;
-        check_suite_id: number;
-        check_suite_node_id: string;
-        check_suite_url?: string;
-        /** @enum {string|null} */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | null;
-        /** Format: date-time */
-        created_at: string;
-        display_title: string;
-        event: string;
-        head_branch: string;
-        head_commit?: Record<string, unknown> | null;
-        head_repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: string | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        jobs_url?: string;
-        logs_url?: string;
-        name: string;
-        node_id: string;
-        path: string;
-        previous_attempt_url?: string | null;
-        pull_requests: {
-          base: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          head: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          id: number;
-          number: number;
-          /** Format: uri */
-          url: string;
-        }[];
-        referenced_workflows?:
-          | {
-              path: string;
-              ref?: string;
-              sha: string;
-            }[]
-          | null;
-        repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: string | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        rerun_url?: string;
-        run_attempt: number;
-        run_number: number;
-        /** Format: date-time */
-        run_started_at: string;
-        /** @enum {string} */
-        status:
-          | "requested"
-          | "in_progress"
-          | "completed"
-          | "queued"
-          | "waiting"
-          | "pending";
-        /** User */
-        triggering_actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        workflow_id: number;
-        workflow_url?: string;
-      } | null;
-    };
-    "webhook-deployment-review-rejected": {
-      /** @enum {string} */
-      action: "rejected";
-      approver?: {
-        avatar_url?: string;
-        events_url?: string;
-        followers_url?: string;
-        following_url?: string;
-        gists_url?: string;
-        gravatar_id?: string;
-        html_url?: string;
-        id?: number;
-        login?: string;
-        node_id?: string;
-        organizations_url?: string;
-        received_events_url?: string;
-        repos_url?: string;
-        site_admin?: boolean;
-        starred_url?: string;
-        subscriptions_url?: string;
-        type?: string;
-        url?: string;
-      };
-      comment?: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      reviewers?: {
-        /** User */
-        reviewer?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** @enum {string} */
-        type?: "User";
-      }[];
-      sender: components["schemas"]["simple-user-webhooks"];
-      since: string;
-      workflow_job_run?: {
-        conclusion: Record<string, unknown> | null;
-        created_at: string;
-        environment: string;
-        html_url: string;
-        id: number;
-        name: Record<string, unknown> | null;
-        status: string;
-        updated_at: string;
-      };
-      workflow_job_runs?: {
-        conclusion?: string | null;
-        created_at?: string;
-        environment?: string;
-        html_url?: string;
-        id?: number;
-        name?: string | null;
-        status?: string;
-        updated_at?: string;
-      }[];
-      /** Deployment Workflow Run */
-      workflow_run: {
-        /** User */
-        actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        artifacts_url?: string;
-        cancel_url?: string;
-        check_suite_id: number;
-        check_suite_node_id: string;
-        check_suite_url?: string;
-        /** @enum {string|null} */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | null;
-        /** Format: date-time */
-        created_at: string;
-        event: string;
-        head_branch: string;
-        head_commit?: Record<string, unknown> | null;
-        head_repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: string | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        jobs_url?: string;
-        logs_url?: string;
-        name: string;
-        node_id: string;
-        path: string;
-        previous_attempt_url?: string | null;
-        pull_requests: {
-          base: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          head: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          id: number;
-          number: number;
-          /** Format: uri */
-          url: string;
-        }[];
-        referenced_workflows?:
-          | {
-              path: string;
-              ref?: string;
-              sha: string;
-            }[]
-          | null;
-        repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: string | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        rerun_url?: string;
-        run_attempt: number;
-        run_number: number;
-        /** Format: date-time */
-        run_started_at: string;
-        /** @enum {string} */
-        status:
-          | "requested"
-          | "in_progress"
-          | "completed"
-          | "queued"
-          | "waiting";
-        /** User */
-        triggering_actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        workflow_id: number;
-        workflow_url?: string;
-        display_title: string;
-      } | null;
-    };
-    "webhook-deployment-review-requested": {
-      /** @enum {string} */
-      action: "requested";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      environment: string;
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      /** User */
-      requestor: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      reviewers: {
-        /** User */
-        reviewer?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login?: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** @enum {string} */
-        type?: "User" | "Team";
-      }[];
-      sender: components["schemas"]["simple-user-webhooks"];
-      since: string;
-      workflow_job_run: {
-        conclusion: Record<string, unknown> | null;
-        created_at: string;
-        environment: string;
-        html_url: string;
-        id: number;
-        name: string | null;
-        status: string;
-        updated_at: string;
-      };
-      /** Deployment Workflow Run */
-      workflow_run: {
-        /** User */
-        actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        artifacts_url?: string;
-        cancel_url?: string;
-        check_suite_id: number;
-        check_suite_node_id: string;
-        check_suite_url?: string;
-        /** @enum {string|null} */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | null;
-        /** Format: date-time */
-        created_at: string;
-        event: string;
-        head_branch: string;
-        head_commit?: Record<string, unknown> | null;
-        head_repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: string | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        jobs_url?: string;
-        logs_url?: string;
-        name: string;
-        node_id: string;
-        path: string;
-        previous_attempt_url?: string | null;
-        pull_requests: {
-          base: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          head: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          id: number;
-          number: number;
-          /** Format: uri */
-          url: string;
-        }[];
-        referenced_workflows?:
-          | {
-              path: string;
-              ref?: string;
-              sha: string;
-            }[]
-          | null;
-        repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: string | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        rerun_url?: string;
-        run_attempt: number;
-        run_number: number;
-        /** Format: date-time */
-        run_started_at: string;
-        /** @enum {string} */
-        status:
-          | "requested"
-          | "in_progress"
-          | "completed"
-          | "queued"
-          | "waiting"
-          | "pending";
-        /** User */
-        triggering_actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        workflow_id: number;
-        workflow_url?: string;
-        display_title: string;
-      } | null;
-    };
-    /** deployment_status created event */
-    "webhook-deployment-status-created": {
-      /** @enum {string} */
-      action: "created";
-      check_run?: {
-        /** Format: date-time */
-        completed_at: string | null;
-        /**
-         * @description The result of the completed check run. This value will be `null` until the check run has completed.
-         * @enum {string|null}
-         */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | "skipped"
-          | null;
-        /** Format: uri */
-        details_url: string;
-        external_id: string;
-        /** @description The SHA of the commit that is being checked. */
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        /** @description The id of the check. */
-        id: number;
-        /** @description The name of the check run. */
-        name: string;
-        node_id: string;
-        /** Format: date-time */
-        started_at: string;
-        /**
-         * @description The current status of the check run. Can be `queued`, `in_progress`, or `completed`.
-         * @enum {string}
-         */
-        status: "queued" | "in_progress" | "completed" | "waiting" | "pending";
-        /** Format: uri */
-        url: string;
-      } | null;
-      /**
-       * Deployment
-       * @description The [deployment](https://docs.github.com/rest/deployments/deployments#list-deployments).
-       */
-      deployment: {
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        description: string | null;
-        environment: string;
-        id: number;
-        node_id: string;
-        original_environment: string;
-        payload: string | Record<string, never> | null;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "merge_queue_entry"
-            | "workflow_job"
-            | "pull_request_review_thread"
-            | "secret_scanning_alert_location"
-            | "merge_group"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        production_environment?: boolean;
-        ref: string;
-        /** Format: uri */
-        repository_url: string;
-        sha: string;
-        /** Format: uri */
-        statuses_url: string;
-        task: string;
-        transient_environment?: boolean;
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      /** @description The [deployment status](https://docs.github.com/rest/deployments/statuses#list-deployment-statuses). */
-      deployment_status: {
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: uri */
-        deployment_url: string;
-        /** @description The optional human-readable description added to the status. */
-        description: string;
-        environment: string;
-        /** Format: uri */
-        environment_url?: string;
-        id: number;
-        /** Format: uri */
-        log_url?: string;
-        node_id: string;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "pull_request_review_thread"
-            | "merge_queue_entry"
-            | "workflow_job"
-            | "merge_group"
-            | "secret_scanning_alert_location"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        /** Format: uri */
-        repository_url: string;
-        /** @description The new state. Can be `pending`, `success`, `failure`, or `error`. */
-        state: string;
-        /** @description The optional link added to the status. */
-        target_url: string;
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      /** Workflow */
-      workflow?: {
-        /** Format: uri */
-        badge_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string;
-        node_id: string;
-        path: string;
-        state: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      } | null;
-      /** Deployment Workflow Run */
-      workflow_run?: {
-        /** User */
-        actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        artifacts_url?: string;
-        cancel_url?: string;
-        check_suite_id: number;
-        check_suite_node_id: string;
-        check_suite_url?: string;
-        /** @enum {string|null} */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | null
-          | "startup_failure";
-        /** Format: date-time */
-        created_at: string;
-        display_title: string;
-        event: string;
-        head_branch: string;
-        head_commit?: Record<string, unknown> | null;
-        head_repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: Record<string, unknown> | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        jobs_url?: string;
-        logs_url?: string;
-        name: string;
-        node_id: string;
-        path: string;
-        previous_attempt_url?: Record<string, unknown> | null;
-        pull_requests: {
-          base: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          head: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          id: number;
-          number: number;
-          /** Format: uri */
-          url: string;
-        }[];
-        referenced_workflows?:
-          | {
-              path: string;
-              ref?: string;
-              sha: string;
-            }[]
-          | null;
-        repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: Record<string, unknown> | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        rerun_url?: string;
-        run_attempt: number;
-        run_number: number;
-        /** Format: date-time */
-        run_started_at: string;
-        /** @enum {string} */
-        status:
-          | "requested"
-          | "in_progress"
-          | "completed"
-          | "queued"
-          | "waiting"
-          | "pending";
-        /** User */
-        triggering_actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        workflow_id: number;
-        workflow_url?: string;
-      } | null;
-    };
-    /** discussion answered event */
-    "webhook-discussion-answered": {
-      /** @enum {string} */
-      action: "answered";
-      answer: {
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        body: string;
-        child_comment_count: number;
-        /** Format: date-time */
-        created_at: string;
-        discussion_id: number;
-        html_url: string;
-        id: number;
-        node_id: string;
-        parent_id: Record<string, unknown> | null;
-        /** Reactions */
-        reactions?: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        repository_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion category changed event */
-    "webhook-discussion-category-changed": {
-      /** @enum {string} */
-      action: "category_changed";
-      changes: {
-        category: {
-          from: {
-            /** Format: date-time */
-            created_at: string;
-            description: string;
-            emoji: string;
-            id: number;
-            is_answerable: boolean;
-            name: string;
-            node_id?: string;
-            repository_id: number;
-            slug: string;
-            updated_at: string;
-          };
-        };
-      };
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion closed event */
-    "webhook-discussion-closed": {
-      /** @enum {string} */
-      action: "closed";
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion_comment created event */
-    "webhook-discussion-comment-created": {
-      /** @enum {string} */
-      action: "created";
-      comment: {
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        body: string;
-        child_comment_count: number;
-        created_at: string;
-        discussion_id: number;
-        html_url: string;
-        id: number;
-        node_id: string;
-        parent_id: number | null;
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        repository_url: string;
-        updated_at: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion_comment deleted event */
-    "webhook-discussion-comment-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      comment: {
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        body: string;
-        child_comment_count: number;
-        created_at: string;
-        discussion_id: number;
-        html_url: string;
-        id: number;
-        node_id: string;
-        parent_id: number | null;
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        repository_url: string;
-        updated_at: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion_comment edited event */
-    "webhook-discussion-comment-edited": {
-      /** @enum {string} */
-      action: "edited";
-      changes: {
-        body: {
-          from: string;
-        };
-      };
-      comment: {
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        body: string;
-        child_comment_count: number;
-        created_at: string;
-        discussion_id: number;
-        html_url: string;
-        id: number;
-        node_id: string;
-        parent_id: number | null;
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        repository_url: string;
-        updated_at: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion created event */
-    "webhook-discussion-created": {
-      /** @enum {string} */
-      action: "created";
-      discussion: {
-        active_lock_reason: string | null;
-        answer_chosen_at: string | null;
-        /** User */
-        answer_chosen_by: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        answer_html_url: string | null;
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        body: string | null;
-        category: {
-          /** Format: date-time */
-          created_at: string;
-          description: string;
-          emoji: string;
-          id: number;
-          is_answerable: boolean;
-          name: string;
-          node_id?: string;
-          repository_id: number;
-          slug: string;
-          updated_at: string;
-        };
-        comments: number;
-        /** Format: date-time */
-        created_at: string;
-        html_url: string;
-        id: number;
-        locked: boolean;
-        node_id: string;
-        number: number;
-        /** Reactions */
-        reactions?: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        repository_url: string;
-        /** @enum {string} */
-        state: "open" | "locked" | "converting" | "transferring";
-        timeline_url?: string;
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      } & {
-        active_lock_reason?: Record<string, unknown> | null;
-        answer_chosen_at: Record<string, unknown> | null;
-        answer_chosen_by: Record<string, unknown> | null;
-        answer_html_url: string | null;
-        author_association?: string;
-        body?: string | null;
-        category?: {
-          created_at?: string;
-          description?: string;
-          emoji?: string;
-          id?: number;
-          is_answerable?: boolean;
-          name?: string;
-          node_id?: string;
-          repository_id?: number;
-          slug?: string;
-          updated_at?: string;
-        };
-        comments?: number;
-        created_at?: string;
-        html_url?: string;
-        id?: number;
-        /** @enum {boolean} */
-        locked: false;
-        node_id?: string;
-        number?: number;
-        reactions?: {
-          "+1"?: number;
-          "-1"?: number;
-          confused?: number;
-          eyes?: number;
-          heart?: number;
-          hooray?: number;
-          laugh?: number;
-          rocket?: number;
-          total_count?: number;
-          url?: string;
-        };
-        repository_url?: string;
-        /** @enum {string} */
-        state: "open" | "converting" | "transferring";
-        timeline_url?: string;
-        title?: string;
-        updated_at?: string;
-        user?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion deleted event */
-    "webhook-discussion-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion edited event */
-    "webhook-discussion-edited": {
-      /** @enum {string} */
-      action: "edited";
-      changes?: {
-        body?: {
-          from: string;
-        };
-        title?: {
-          from: string;
-        };
-      };
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion labeled event */
-    "webhook-discussion-labeled": {
-      /** @enum {string} */
-      action: "labeled";
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** Label */
-      label: {
-        /** @description 6-character hex code, without the leading #, identifying the color */
-        color: string;
-        default: boolean;
-        description: string | null;
-        id: number;
-        /** @description The name of the label. */
-        name: string;
-        node_id: string;
-        /**
-         * Format: uri
-         * @description URL for the label
-         */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion locked event */
-    "webhook-discussion-locked": {
-      /** @enum {string} */
-      action: "locked";
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion pinned event */
-    "webhook-discussion-pinned": {
-      /** @enum {string} */
-      action: "pinned";
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion reopened event */
-    "webhook-discussion-reopened": {
-      /** @enum {string} */
-      action: "reopened";
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion transferred event */
-    "webhook-discussion-transferred": {
-      /** @enum {string} */
-      action: "transferred";
-      changes: {
-        new_discussion: components["schemas"]["discussion"];
-        new_repository: components["schemas"]["repository-webhooks"];
-      };
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion unanswered event */
-    "webhook-discussion-unanswered": {
-      /** @enum {string} */
-      action: "unanswered";
-      discussion: components["schemas"]["discussion"];
-      old_answer: {
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        body: string;
-        child_comment_count: number;
-        /** Format: date-time */
-        created_at: string;
-        discussion_id: number;
-        html_url: string;
-        id: number;
-        node_id: string;
-        parent_id: Record<string, unknown> | null;
-        /** Reactions */
-        reactions?: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        repository_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion unlabeled event */
-    "webhook-discussion-unlabeled": {
-      /** @enum {string} */
-      action: "unlabeled";
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** Label */
-      label: {
-        /** @description 6-character hex code, without the leading #, identifying the color */
-        color: string;
-        default: boolean;
-        description: string | null;
-        id: number;
-        /** @description The name of the label. */
-        name: string;
-        node_id: string;
-        /**
-         * Format: uri
-         * @description URL for the label
-         */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion unlocked event */
-    "webhook-discussion-unlocked": {
-      /** @enum {string} */
-      action: "unlocked";
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** discussion unpinned event */
-    "webhook-discussion-unpinned": {
-      /** @enum {string} */
-      action: "unpinned";
-      discussion: components["schemas"]["discussion"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /**
-     * fork event
-     * @description A user forks a repository.
-     */
-    "webhook-fork": {
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      /** @description The created [`repository`](https://docs.github.com/rest/repos/repos#get-a-repository) resource. */
-      forkee: {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow private forks */
-        allow_forking?: boolean;
-        /**
-         * @description Whether to allow merge commits for pull requests.
-         * @default true
-         */
-        allow_merge_commit?: boolean;
-        /**
-         * @description Whether to allow rebase merges for pull requests.
-         * @default true
-         */
-        allow_rebase_merge?: boolean;
-        /**
-         * @description Whether to allow squash merges for pull requests.
-         * @default true
-         */
-        allow_squash_merge?: boolean;
-        allow_update_branch?: boolean;
-        /** Format: uri-template */
-        archive_url: string;
-        /**
-         * @description Whether the repository is archived.
-         * @default false
-         */
-        archived: boolean;
-        /** Format: uri-template */
-        assignees_url: string;
-        /** Format: uri-template */
-        blobs_url: string;
-        /** Format: uri-template */
-        branches_url: string;
-        /** Format: uri */
-        clone_url: string;
-        /** Format: uri-template */
-        collaborators_url: string;
-        /** Format: uri-template */
-        comments_url: string;
-        /** Format: uri-template */
-        commits_url: string;
-        /** Format: uri-template */
-        compare_url: string;
-        /** Format: uri-template */
-        contents_url: string;
-        /** Format: uri */
-        contributors_url: string;
-        created_at: number | string;
-        /** @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. */
-        custom_properties?: {
-          [key: string]: unknown;
-        };
-        /** @description The default branch of the repository. */
-        default_branch: string;
-        /**
-         * @description Whether to delete head branches when pull requests are merged
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /** Format: uri */
-        deployments_url: string;
-        description: string | null;
-        /** @description Returns whether or not this repository is disabled. */
-        disabled?: boolean;
-        /** Format: uri */
-        downloads_url: string;
-        /** Format: uri */
-        events_url: string;
-        fork: boolean;
-        forks: number;
-        forks_count: number;
-        /** Format: uri */
-        forks_url: string;
-        full_name: string;
-        /** Format: uri-template */
-        git_commits_url: string;
-        /** Format: uri-template */
-        git_refs_url: string;
-        /** Format: uri-template */
-        git_tags_url: string;
-        /** Format: uri */
-        git_url: string;
-        /**
-         * @description Whether downloads are enabled.
-         * @default true
-         */
-        has_downloads: boolean;
-        /**
-         * @description Whether issues are enabled.
-         * @default true
-         */
-        has_issues: boolean;
-        has_pages: boolean;
-        /**
-         * @description Whether projects are enabled.
-         * @default true
-         */
-        has_projects: boolean;
-        /**
-         * @description Whether the wiki is enabled.
-         * @default true
-         */
-        has_wiki: boolean;
-        homepage: string | null;
-        /** Format: uri */
-        hooks_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        is_template?: boolean;
-        /** Format: uri-template */
-        issue_comment_url: string;
-        /** Format: uri-template */
-        issue_events_url: string;
-        /** Format: uri-template */
-        issues_url: string;
-        /** Format: uri-template */
-        keys_url: string;
-        /** Format: uri-template */
-        labels_url: string;
-        language: string | null;
-        /** Format: uri */
-        languages_url: string;
-        /** License */
-        license: {
-          key: string;
-          name: string;
-          node_id: string;
-          spdx_id: string;
-          /** Format: uri */
-          url: string | null;
-        } | null;
-        master_branch?: string;
-        /** Format: uri */
-        merges_url: string;
-        /** Format: uri-template */
-        milestones_url: string;
-        /** Format: uri */
-        mirror_url: string | null;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** Format: uri-template */
-        notifications_url: string;
-        open_issues: number;
-        open_issues_count: number;
-        organization?: string;
-        /** User */
-        owner: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        permissions?: {
-          admin: boolean;
-          maintain?: boolean;
-          pull: boolean;
-          push: boolean;
-          triage?: boolean;
-        };
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-        public?: boolean;
-        /** Format: uri-template */
-        pulls_url: string;
-        pushed_at: number | string | null;
-        /** Format: uri-template */
-        releases_url: string;
-        role_name?: string | null;
-        size: number;
-        ssh_url: string;
-        stargazers?: number;
-        stargazers_count: number;
-        /** Format: uri */
-        stargazers_url: string;
-        /** Format: uri-template */
-        statuses_url: string;
-        /** Format: uri */
-        subscribers_url: string;
-        /** Format: uri */
-        subscription_url: string;
-        /** Format: uri */
-        svn_url: string;
-        /** Format: uri */
-        tags_url: string;
-        /** Format: uri */
-        teams_url: string;
-        topics: string[];
-        /** Format: uri-template */
-        trees_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** @enum {string} */
-        visibility: "public" | "private" | "internal";
-        watchers: number;
-        watchers_count: number;
-        /** @description Whether to require contributors to sign off on web-based commits */
-        web_commit_signoff_required?: boolean;
-      } & {
-        allow_forking?: boolean;
-        archive_url?: string;
-        archived?: boolean;
-        assignees_url?: string;
-        blobs_url?: string;
-        branches_url?: string;
-        clone_url?: string;
-        collaborators_url?: string;
-        comments_url?: string;
-        commits_url?: string;
-        compare_url?: string;
-        contents_url?: string;
-        contributors_url?: string;
-        created_at?: string;
-        default_branch?: string;
-        deployments_url?: string;
-        description?: string | null;
-        disabled?: boolean;
-        downloads_url?: string;
-        events_url?: string;
-        /** @enum {boolean} */
-        fork?: true;
-        forks?: number;
-        forks_count?: number;
-        forks_url?: string;
-        full_name?: string;
-        git_commits_url?: string;
-        git_refs_url?: string;
-        git_tags_url?: string;
-        git_url?: string;
-        has_downloads?: boolean;
-        has_issues?: boolean;
-        has_pages?: boolean;
-        has_projects?: boolean;
-        has_wiki?: boolean;
-        homepage?: string | null;
-        hooks_url?: string;
-        html_url?: string;
-        id?: number;
-        is_template?: boolean;
-        issue_comment_url?: string;
-        issue_events_url?: string;
-        issues_url?: string;
-        keys_url?: string;
-        labels_url?: string;
-        language?: Record<string, unknown> | null;
-        languages_url?: string;
-        license?: Record<string, unknown> | null;
-        merges_url?: string;
-        milestones_url?: string;
-        mirror_url?: Record<string, unknown> | null;
-        name?: string;
-        node_id?: string;
-        notifications_url?: string;
-        open_issues?: number;
-        open_issues_count?: number;
-        owner?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        private?: boolean;
-        public?: boolean;
-        pulls_url?: string;
-        pushed_at?: string;
-        releases_url?: string;
-        size?: number;
-        ssh_url?: string;
-        stargazers_count?: number;
-        stargazers_url?: string;
-        statuses_url?: string;
-        subscribers_url?: string;
-        subscription_url?: string;
-        svn_url?: string;
-        tags_url?: string;
-        teams_url?: string;
-        topics?: (Record<string, unknown> | null)[];
-        trees_url?: string;
-        updated_at?: string;
-        url?: string;
-        visibility?: string;
-        watchers?: number;
-        watchers_count?: number;
-      };
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** github_app_authorization revoked event */
-    "webhook-github-app-authorization-revoked": {
-      /** @enum {string} */
-      action: "revoked";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** gollum event */
-    "webhook-gollum": {
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description The pages that were updated. */
-      pages: {
-        /**
-         * @description The action that was performed on the page. Can be `created` or `edited`.
-         * @enum {string}
-         */
-        action: "created" | "edited";
-        /**
-         * Format: uri
-         * @description Points to the HTML wiki page.
-         */
-        html_url: string;
-        /** @description The name of the page. */
-        page_name: string;
-        /** @description The latest commit SHA of the page. */
-        sha: string;
-        summary: string | null;
-        /** @description The current page title. */
-        title: string;
-      }[];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** installation created event */
-    "webhook-installation-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation: components["schemas"]["installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description An array of repository objects that the installation can access. */
-      repositories?: {
-        full_name: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-      }[];
-      repository?: components["schemas"]["repository-webhooks"];
-      /** User */
-      requester?: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** installation deleted event */
-    "webhook-installation-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation: components["schemas"]["installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description An array of repository objects that the installation can access. */
-      repositories?: {
-        full_name: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-      }[];
-      repository?: components["schemas"]["repository-webhooks"];
-      requester?: Record<string, unknown> | null;
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** installation new_permissions_accepted event */
-    "webhook-installation-new-permissions-accepted": {
-      /** @enum {string} */
-      action: "new_permissions_accepted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation: components["schemas"]["installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description An array of repository objects that the installation can access. */
-      repositories?: {
-        full_name: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-      }[];
-      repository?: components["schemas"]["repository-webhooks"];
-      requester?: Record<string, unknown> | null;
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** installation_repositories added event */
-    "webhook-installation-repositories-added": {
-      /** @enum {string} */
-      action: "added";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation: components["schemas"]["installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description An array of repository objects, which were added to the installation. */
-      repositories_added: {
-        full_name: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-      }[];
-      /** @description An array of repository objects, which were removed from the installation. */
-      repositories_removed: {
-        full_name?: string;
-        /** @description Unique identifier of the repository */
-        id?: number;
-        /** @description The name of the repository. */
-        name?: string;
-        node_id?: string;
-        /** @description Whether the repository is private or public. */
-        private?: boolean;
-      }[];
-      repository?: components["schemas"]["repository-webhooks"];
-      /**
-       * @description Describe whether all repositories have been selected or there's a selection involved
-       * @enum {string}
-       */
-      repository_selection: "all" | "selected";
-      /** User */
-      requester: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** installation_repositories removed event */
-    "webhook-installation-repositories-removed": {
-      /** @enum {string} */
-      action: "removed";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation: components["schemas"]["installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description An array of repository objects, which were added to the installation. */
-      repositories_added: {
-        full_name: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-      }[];
-      /** @description An array of repository objects, which were removed from the installation. */
-      repositories_removed: {
-        full_name: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-      }[];
-      repository?: components["schemas"]["repository-webhooks"];
-      /**
-       * @description Describe whether all repositories have been selected or there's a selection involved
-       * @enum {string}
-       */
-      repository_selection: "all" | "selected";
-      /** User */
-      requester: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** installation suspend event */
-    "webhook-installation-suspend": {
-      /** @enum {string} */
-      action: "suspend";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation: components["schemas"]["installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description An array of repository objects that the installation can access. */
-      repositories?: {
-        full_name: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-      }[];
-      repository?: components["schemas"]["repository-webhooks"];
-      requester?: Record<string, unknown> | null;
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    "webhook-installation-target-renamed": {
-      account: {
-        archived_at?: string | null;
-        avatar_url: string;
-        created_at?: string;
-        description?: Record<string, unknown> | null;
-        events_url?: string;
-        followers?: number;
-        followers_url?: string;
-        following?: number;
-        following_url?: string;
-        gists_url?: string;
-        gravatar_id?: string;
-        has_organization_projects?: boolean;
-        has_repository_projects?: boolean;
-        hooks_url?: string;
-        html_url: string;
-        id: number;
-        is_verified?: boolean;
-        issues_url?: string;
-        login?: string;
-        members_url?: string;
-        name?: string;
-        node_id: string;
-        organizations_url?: string;
-        public_gists?: number;
-        public_members_url?: string;
-        public_repos?: number;
-        received_events_url?: string;
-        repos_url?: string;
-        site_admin?: boolean;
-        slug?: string;
-        starred_url?: string;
-        subscriptions_url?: string;
-        type?: string;
-        updated_at?: string;
-        url?: string;
-        website_url?: Record<string, unknown> | null;
-      };
-      /** @enum {string} */
-      action: "renamed";
-      changes: {
-        login?: {
-          from: string;
-        };
-        slug?: {
-          from: string;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-      target_type: string;
-    };
-    /** installation unsuspend event */
-    "webhook-installation-unsuspend": {
-      /** @enum {string} */
-      action: "unsuspend";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation: components["schemas"]["installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description An array of repository objects that the installation can access. */
-      repositories?: {
-        full_name: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-      }[];
-      repository?: components["schemas"]["repository-webhooks"];
-      requester?: Record<string, unknown> | null;
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issue_comment created event */
-    "webhook-issue-comment-created": {
-      /** @enum {string} */
-      action: "created";
-      /**
-       * issue comment
-       * @description The [comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment) itself.
-       */
-      comment: {
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue comment */
-        body: string;
-        /** Format: date-time */
-        created_at: string;
-        /** Format: uri */
-        html_url: string;
-        /**
-         * Format: int64
-         * @description Unique identifier of the issue comment
-         */
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        node_id: string;
-        performed_via_github_app: components["schemas"]["nullable-integration"];
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue comment
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) the comment belongs to. */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "reminder"
-            | "pull_request_review_thread"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      } & {
-        active_lock_reason?: string | null;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees?: (Record<string, unknown> | null)[];
-        author_association?: string;
-        body?: string | null;
-        closed_at?: string | null;
-        comments?: number;
-        comments_url?: string;
-        created_at?: string;
-        events_url?: string;
-        html_url?: string;
-        id?: number;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        labels_url?: string;
-        locked: boolean;
-        milestone?: Record<string, unknown> | null;
-        node_id?: string;
-        number?: number;
-        performed_via_github_app?: Record<string, unknown> | null;
-        reactions?: {
-          "+1"?: number;
-          "-1"?: number;
-          confused?: number;
-          eyes?: number;
-          heart?: number;
-          hooray?: number;
-          laugh?: number;
-          rocket?: number;
-          total_count?: number;
-          url?: string;
-        };
-        repository_url?: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        timeline_url?: string;
-        title?: string;
-        updated_at?: string;
-        url?: string;
-        user?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issue_comment deleted event */
-    "webhook-issue-comment-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      /**
-       * issue comment
-       * @description The [comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment) itself.
-       */
-      comment: {
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue comment */
-        body: string;
-        /** Format: date-time */
-        created_at: string;
-        /** Format: uri */
-        html_url: string;
-        /**
-         * Format: int64
-         * @description Unique identifier of the issue comment
-         */
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        node_id: string;
-        performed_via_github_app: components["schemas"]["nullable-integration"];
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue comment
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) the comment belongs to. */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      } & {
-        active_lock_reason?: string | null;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees?: (Record<string, unknown> | null)[];
-        author_association?: string;
-        body?: string | null;
-        closed_at?: string | null;
-        comments?: number;
-        comments_url?: string;
-        created_at?: string;
-        events_url?: string;
-        html_url?: string;
-        id?: number;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        labels_url?: string;
-        locked: boolean;
-        milestone?: Record<string, unknown> | null;
-        node_id?: string;
-        number?: number;
-        performed_via_github_app?: Record<string, unknown> | null;
-        reactions?: {
-          "+1"?: number;
-          "-1"?: number;
-          confused?: number;
-          eyes?: number;
-          heart?: number;
-          hooray?: number;
-          laugh?: number;
-          rocket?: number;
-          total_count?: number;
-          url?: string;
-        };
-        repository_url?: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        timeline_url?: string;
-        title?: string;
-        updated_at?: string;
-        url?: string;
-        user?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issue_comment edited event */
-    "webhook-issue-comment-edited": {
-      /** @enum {string} */
-      action: "edited";
-      /** @description The changes to the comment. */
-      changes: {
-        body?: {
-          /** @description The previous version of the body. */
-          from: string;
-        };
-      };
-      /**
-       * issue comment
-       * @description The [comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment) itself.
-       */
-      comment: {
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue comment */
-        body: string;
-        /** Format: date-time */
-        created_at: string;
-        /** Format: uri */
-        html_url: string;
-        /**
-         * Format: int64
-         * @description Unique identifier of the issue comment
-         */
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        node_id: string;
-        performed_via_github_app: components["schemas"]["nullable-integration"];
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue comment
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) the comment belongs to. */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "reminder"
-            | "pull_request_review_thread"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      } & {
-        active_lock_reason?: string | null;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees?: (Record<string, unknown> | null)[];
-        author_association?: string;
-        body?: string | null;
-        closed_at?: string | null;
-        comments?: number;
-        comments_url?: string;
-        created_at?: string;
-        events_url?: string;
-        html_url?: string;
-        id?: number;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        labels_url?: string;
-        locked: boolean;
-        milestone?: Record<string, unknown> | null;
-        node_id?: string;
-        number?: number;
-        performed_via_github_app?: Record<string, unknown> | null;
-        reactions?: {
-          "+1"?: number;
-          "-1"?: number;
-          confused?: number;
-          eyes?: number;
-          heart?: number;
-          hooray?: number;
-          laugh?: number;
-          rocket?: number;
-          total_count?: number;
-          url?: string;
-        };
-        repository_url?: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        timeline_url?: string;
-        title?: string;
-        updated_at?: string;
-        url?: string;
-        user?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues assigned event */
-    "webhook-issues-assigned": {
-      /**
-       * @description The action that was performed.
-       * @enum {string}
-       */
-      action: "assigned";
-      /** User */
-      assignee?: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Issue
-       * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself.
-       */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "reminder"
-            | "pull_request_review_thread"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues closed event */
-    "webhook-issues-closed": {
-      /**
-       * @description The action that was performed.
-       * @enum {string}
-       */
-      action: "closed";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself. */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "security_and_analysis"
-            | "reminder"
-            | "pull_request_review_thread"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      } & {
-        active_lock_reason?: string | null;
-        assignee?: Record<string, unknown> | null;
-        assignees?: (Record<string, unknown> | null)[];
-        author_association?: string;
-        body?: string | null;
-        closed_at: string | null;
-        comments?: number;
-        comments_url?: string;
-        created_at?: string;
-        events_url?: string;
-        html_url?: string;
-        id?: number;
-        labels?: (Record<string, unknown> | null)[];
-        labels_url?: string;
-        locked?: boolean;
-        milestone?: Record<string, unknown> | null;
-        node_id?: string;
-        number?: number;
-        performed_via_github_app?: Record<string, unknown> | null;
-        reactions?: {
-          "+1"?: number;
-          "-1"?: number;
-          confused?: number;
-          eyes?: number;
-          heart?: number;
-          hooray?: number;
-          laugh?: number;
-          rocket?: number;
-          total_count?: number;
-          url?: string;
-        };
-        repository_url?: string;
-        /** @enum {string} */
-        state: "closed" | "open";
-        timeline_url?: string;
-        title?: string;
-        updated_at?: string;
-        url?: string;
-        user?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues deleted event */
-    "webhook-issues-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Issue
-       * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself.
-       */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "reminder"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues demilestoned event */
-    "webhook-issues-demilestoned": {
-      /** @enum {string} */
-      action: "demilestoned";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      } & {
-        active_lock_reason?: string | null;
-        assignee?: Record<string, unknown> | null;
-        assignees?: (Record<string, unknown> | null)[];
-        author_association?: string;
-        body?: string | null;
-        closed_at?: string | null;
-        comments?: number;
-        comments_url?: string;
-        created_at?: string;
-        events_url?: string;
-        html_url?: string;
-        id?: number;
-        labels?: (Record<string, unknown> | null)[];
-        labels_url?: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id?: string;
-        number?: number;
-        performed_via_github_app?: Record<string, unknown> | null;
-        reactions?: {
-          "+1"?: number;
-          "-1"?: number;
-          confused?: number;
-          eyes?: number;
-          heart?: number;
-          hooray?: number;
-          laugh?: number;
-          rocket?: number;
-          total_count?: number;
-          url?: string;
-        };
-        repository_url?: string;
-        state?: string;
-        timeline_url?: string;
-        title?: string;
-        updated_at?: string;
-        url?: string;
-        user?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-      };
-      /**
-       * Milestone
-       * @description A collection of related issues and pull requests.
-       */
-      milestone?: {
-        /** Format: date-time */
-        closed_at: string | null;
-        closed_issues: number;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        description: string | null;
-        /** Format: date-time */
-        due_on: string | null;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        labels_url: string;
-        node_id: string;
-        /** @description The number of the milestone. */
-        number: number;
-        open_issues: number;
-        /**
-         * @description The state of the milestone.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** @description The title of the milestone. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues edited event */
-    "webhook-issues-edited": {
-      /** @enum {string} */
-      action: "edited";
-      /** @description The changes to the issue. */
-      changes: {
-        body?: {
-          /** @description The previous version of the body. */
-          from: string;
-        };
-        title?: {
-          /** @description The previous version of the title. */
-          from: string;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Issue
-       * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself.
-       */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "security_and_analysis"
-            | "pull_request_review_thread"
-            | "reminder"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      /** Label */
-      label?: {
-        /** @description 6-character hex code, without the leading #, identifying the color */
-        color: string;
-        default: boolean;
-        description: string | null;
-        id: number;
-        /** @description The name of the label. */
-        name: string;
-        node_id: string;
-        /**
-         * Format: uri
-         * @description URL for the label
-         */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues labeled event */
-    "webhook-issues-labeled": {
-      /** @enum {string} */
-      action: "labeled";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Issue
-       * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself.
-       */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "pull_request_review_thread"
-            | "reminder"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      /** Label */
-      label?: {
-        /** @description 6-character hex code, without the leading #, identifying the color */
-        color: string;
-        default: boolean;
-        description: string | null;
-        id: number;
-        /** @description The name of the label. */
-        name: string;
-        node_id: string;
-        /**
-         * Format: uri
-         * @description URL for the label
-         */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues locked event */
-    "webhook-issues-locked": {
-      /** @enum {string} */
-      action: "locked";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "reminder"
-            | "security_and_analysis"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      } & {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        assignee?: Record<string, unknown> | null;
-        assignees?: (Record<string, unknown> | null)[];
-        author_association?: string;
-        body?: string | null;
-        closed_at?: string | null;
-        comments?: number;
-        comments_url?: string;
-        created_at?: string;
-        events_url?: string;
-        html_url?: string;
-        id?: number;
-        labels?: (Record<string, unknown> | null)[];
-        labels_url?: string;
-        /** @enum {boolean} */
-        locked: true;
-        milestone?: Record<string, unknown> | null;
-        node_id?: string;
-        number?: number;
-        performed_via_github_app?: Record<string, unknown> | null;
-        reactions?: {
-          "+1"?: number;
-          "-1"?: number;
-          confused?: number;
-          eyes?: number;
-          heart?: number;
-          hooray?: number;
-          laugh?: number;
-          rocket?: number;
-          total_count?: number;
-          url?: string;
-        };
-        repository_url?: string;
-        state?: string;
-        timeline_url?: string;
-        title?: string;
-        updated_at?: string;
-        url?: string;
-        user?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues milestoned event */
-    "webhook-issues-milestoned": {
-      /** @enum {string} */
-      action: "milestoned";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "reminder"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      } & {
-        active_lock_reason?: string | null;
-        assignee?: Record<string, unknown> | null;
-        assignees?: (Record<string, unknown> | null)[];
-        author_association?: string;
-        body?: string | null;
-        closed_at?: string | null;
-        comments?: number;
-        comments_url?: string;
-        created_at?: string;
-        events_url?: string;
-        html_url?: string;
-        id?: number;
-        labels?: (Record<string, unknown> | null)[];
-        labels_url?: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        };
-        node_id?: string;
-        number?: number;
-        performed_via_github_app?: Record<string, unknown> | null;
-        reactions?: {
-          "+1"?: number;
-          "-1"?: number;
-          confused?: number;
-          eyes?: number;
-          heart?: number;
-          hooray?: number;
-          laugh?: number;
-          rocket?: number;
-          total_count?: number;
-          url?: string;
-        };
-        repository_url?: string;
-        state?: string;
-        timeline_url?: string;
-        title?: string;
-        updated_at?: string;
-        url?: string;
-        user?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-      };
-      /**
-       * Milestone
-       * @description A collection of related issues and pull requests.
-       */
-      milestone: {
-        /** Format: date-time */
-        closed_at: string | null;
-        closed_issues: number;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        description: string | null;
-        /** Format: date-time */
-        due_on: string | null;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        labels_url: string;
-        node_id: string;
-        /** @description The number of the milestone. */
-        number: number;
-        open_issues: number;
-        /**
-         * @description The state of the milestone.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** @description The title of the milestone. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues opened event */
-    "webhook-issues-opened": {
-      /** @enum {string} */
-      action: "opened";
-      changes?: {
-        /**
-         * Issue
-         * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself.
-         */
-        old_issue: {
-          /** @enum {string|null} */
-          active_lock_reason:
-            | "resolved"
-            | "off-topic"
-            | "too heated"
-            | "spam"
-            | null;
-          /** User */
-          assignee?: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          assignees: ({
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null)[];
-          /**
-           * AuthorAssociation
-           * @description How the author is associated with the repository.
-           * @enum {string}
-           */
-          author_association:
-            | "COLLABORATOR"
-            | "CONTRIBUTOR"
-            | "FIRST_TIMER"
-            | "FIRST_TIME_CONTRIBUTOR"
-            | "MANNEQUIN"
-            | "MEMBER"
-            | "NONE"
-            | "OWNER";
-          /** @description Contents of the issue */
-          body: string | null;
-          /** Format: date-time */
-          closed_at: string | null;
-          comments: number;
-          /** Format: uri */
-          comments_url: string;
-          /** Format: date-time */
-          created_at: string;
-          draft?: boolean;
-          /** Format: uri */
-          events_url: string;
-          /** Format: uri */
-          html_url: string;
-          /** Format: int64 */
-          id: number;
-          labels?: {
-            /** @description 6-character hex code, without the leading #, identifying the color */
-            color: string;
-            default: boolean;
-            description: string | null;
-            id: number;
-            /** @description The name of the label. */
-            name: string;
-            node_id: string;
-            /**
-             * Format: uri
-             * @description URL for the label
-             */
-            url: string;
-          }[];
-          /** Format: uri-template */
-          labels_url: string;
-          locked?: boolean;
-          /**
-           * Milestone
-           * @description A collection of related issues and pull requests.
-           */
-          milestone: {
-            /** Format: date-time */
-            closed_at: string | null;
-            closed_issues: number;
-            /** Format: date-time */
-            created_at: string;
-            /** User */
-            creator: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            description: string | null;
-            /** Format: date-time */
-            due_on: string | null;
-            /** Format: uri */
-            html_url: string;
-            id: number;
-            /** Format: uri */
-            labels_url: string;
-            node_id: string;
-            /** @description The number of the milestone. */
-            number: number;
-            open_issues: number;
-            /**
-             * @description The state of the milestone.
-             * @enum {string}
-             */
-            state: "open" | "closed";
-            /** @description The title of the milestone. */
-            title: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-          } | null;
-          node_id: string;
-          number: number;
-          /**
-           * App
-           * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-           */
-          performed_via_github_app?: {
-            /** Format: date-time */
-            created_at: string | null;
-            description: string | null;
-            /** @description The list of events for the GitHub app */
-            events?: (
-              | "branch_protection_rule"
-              | "check_run"
-              | "check_suite"
-              | "code_scanning_alert"
-              | "commit_comment"
-              | "content_reference"
-              | "create"
-              | "delete"
-              | "deployment"
-              | "deployment_review"
-              | "deployment_status"
-              | "deploy_key"
-              | "discussion"
-              | "discussion_comment"
-              | "fork"
-              | "gollum"
-              | "issues"
-              | "issue_comment"
-              | "label"
-              | "member"
-              | "membership"
-              | "milestone"
-              | "organization"
-              | "org_block"
-              | "page_build"
-              | "project"
-              | "project_card"
-              | "project_column"
-              | "public"
-              | "pull_request"
-              | "pull_request_review"
-              | "pull_request_review_comment"
-              | "push"
-              | "registry_package"
-              | "release"
-              | "repository"
-              | "repository_dispatch"
-              | "secret_scanning_alert"
-              | "star"
-              | "status"
-              | "team"
-              | "team_add"
-              | "watch"
-              | "workflow_dispatch"
-              | "workflow_run"
-            )[];
-            /** Format: uri */
-            external_url: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the GitHub app */
-            id: number | null;
-            /** @description The name of the GitHub app */
-            name: string;
-            node_id: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            /** @description The set of permissions for the GitHub app */
-            permissions?: {
-              /** @enum {string} */
-              actions?: "read" | "write";
-              /** @enum {string} */
-              administration?: "read" | "write";
-              /** @enum {string} */
-              checks?: "read" | "write";
-              /** @enum {string} */
-              content_references?: "read" | "write";
-              /** @enum {string} */
-              contents?: "read" | "write";
-              /** @enum {string} */
-              deployments?: "read" | "write";
-              /** @enum {string} */
-              discussions?: "read" | "write";
-              /** @enum {string} */
-              emails?: "read" | "write";
-              /** @enum {string} */
-              environments?: "read" | "write";
-              /** @enum {string} */
-              issues?: "read" | "write";
-              /** @enum {string} */
-              keys?: "read" | "write";
-              /** @enum {string} */
-              members?: "read" | "write";
-              /** @enum {string} */
-              metadata?: "read" | "write";
-              /** @enum {string} */
-              organization_administration?: "read" | "write";
-              /** @enum {string} */
-              organization_hooks?: "read" | "write";
-              /** @enum {string} */
-              organization_packages?: "read" | "write";
-              /** @enum {string} */
-              organization_plan?: "read" | "write";
-              /** @enum {string} */
-              organization_projects?: "read" | "write";
-              /** @enum {string} */
-              organization_secrets?: "read" | "write";
-              /** @enum {string} */
-              organization_self_hosted_runners?: "read" | "write";
-              /** @enum {string} */
-              organization_user_blocking?: "read" | "write";
-              /** @enum {string} */
-              packages?: "read" | "write";
-              /** @enum {string} */
-              pages?: "read" | "write";
-              /** @enum {string} */
-              pull_requests?: "read" | "write";
-              /** @enum {string} */
-              repository_hooks?: "read" | "write";
-              /** @enum {string} */
-              repository_projects?: "read" | "write";
-              /** @enum {string} */
-              secret_scanning_alerts?: "read" | "write";
-              /** @enum {string} */
-              secrets?: "read" | "write";
-              /** @enum {string} */
-              security_events?: "read" | "write";
-              /** @enum {string} */
-              security_scanning_alert?: "read" | "write";
-              /** @enum {string} */
-              single_file?: "read" | "write";
-              /** @enum {string} */
-              statuses?: "read" | "write";
-              /** @enum {string} */
-              team_discussions?: "read" | "write";
-              /** @enum {string} */
-              vulnerability_alerts?: "read" | "write";
-              /** @enum {string} */
-              workflows?: "read" | "write";
-            };
-            /** @description The slug name of the GitHub app */
-            slug?: string;
-            /** Format: date-time */
-            updated_at: string | null;
-          } | null;
-          pull_request?: {
-            /** Format: uri */
-            diff_url?: string;
-            /** Format: uri */
-            html_url?: string;
-            /** Format: date-time */
-            merged_at?: string | null;
-            /** Format: uri */
-            patch_url?: string;
-            /** Format: uri */
-            url?: string;
-          };
-          /** Reactions */
-          reactions: {
-            "+1": number;
-            "-1": number;
-            confused: number;
-            eyes: number;
-            heart: number;
-            hooray: number;
-            laugh: number;
-            rocket: number;
-            total_count: number;
-            /** Format: uri */
-            url: string;
-          };
-          /** Format: uri */
-          repository_url: string;
-          /**
-           * @description State of the issue; either 'open' or 'closed'
-           * @enum {string}
-           */
-          state?: "open" | "closed";
-          state_reason?: string | null;
-          /** Format: uri */
-          timeline_url?: string;
-          /** @description Title of the issue */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /**
-           * Format: uri
-           * @description URL for the issue
-           */
-          url: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        } | null;
-        /**
-         * Repository
-         * @description A git repository
-         */
-        old_repository: {
-          /**
-           * @description Whether to allow auto-merge for pull requests.
-           * @default false
-           */
-          allow_auto_merge?: boolean;
-          /** @description Whether to allow private forks */
-          allow_forking?: boolean;
-          /**
-           * @description Whether to allow merge commits for pull requests.
-           * @default true
-           */
-          allow_merge_commit?: boolean;
-          /**
-           * @description Whether to allow rebase merges for pull requests.
-           * @default true
-           */
-          allow_rebase_merge?: boolean;
-          /**
-           * @description Whether to allow squash merges for pull requests.
-           * @default true
-           */
-          allow_squash_merge?: boolean;
-          allow_update_branch?: boolean;
-          /** Format: uri-template */
-          archive_url: string;
-          /**
-           * @description Whether the repository is archived.
-           * @default false
-           */
-          archived: boolean;
-          /** Format: uri-template */
-          assignees_url: string;
-          /** Format: uri-template */
-          blobs_url: string;
-          /** Format: uri-template */
-          branches_url: string;
-          /** Format: uri */
-          clone_url: string;
-          /** Format: uri-template */
-          collaborators_url: string;
-          /** Format: uri-template */
-          comments_url: string;
-          /** Format: uri-template */
-          commits_url: string;
-          /** Format: uri-template */
-          compare_url: string;
-          /** Format: uri-template */
-          contents_url: string;
-          /** Format: uri */
-          contributors_url: string;
-          created_at: number | string;
-          /** @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. */
-          custom_properties?: {
-            [key: string]: unknown;
-          };
-          /** @description The default branch of the repository. */
-          default_branch: string;
-          /**
-           * @description Whether to delete head branches when pull requests are merged
-           * @default false
-           */
-          delete_branch_on_merge?: boolean;
-          /** Format: uri */
-          deployments_url: string;
-          description: string | null;
-          /** @description Returns whether or not this repository is disabled. */
-          disabled?: boolean;
-          /** Format: uri */
-          downloads_url: string;
-          /** Format: uri */
-          events_url: string;
-          fork: boolean;
-          forks: number;
-          forks_count: number;
-          /** Format: uri */
-          forks_url: string;
-          full_name: string;
-          /** Format: uri-template */
-          git_commits_url: string;
-          /** Format: uri-template */
-          git_refs_url: string;
-          /** Format: uri-template */
-          git_tags_url: string;
-          /** Format: uri */
-          git_url: string;
-          /** @description Whether the repository has discussions enabled. */
-          has_discussions?: boolean;
-          /**
-           * @description Whether downloads are enabled.
-           * @default true
-           */
-          has_downloads: boolean;
-          /**
-           * @description Whether issues are enabled.
-           * @default true
-           */
-          has_issues: boolean;
-          has_pages: boolean;
-          /**
-           * @description Whether projects are enabled.
-           * @default true
-           */
-          has_projects: boolean;
-          /**
-           * @description Whether the wiki is enabled.
-           * @default true
-           */
-          has_wiki: boolean;
-          homepage: string | null;
-          /** Format: uri */
-          hooks_url: string;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the repository */
-          id: number;
-          is_template?: boolean;
-          /** Format: uri-template */
-          issue_comment_url: string;
-          /** Format: uri-template */
-          issue_events_url: string;
-          /** Format: uri-template */
-          issues_url: string;
-          /** Format: uri-template */
-          keys_url: string;
-          /** Format: uri-template */
-          labels_url: string;
-          language: string | null;
-          /** Format: uri */
-          languages_url: string;
-          /** License */
-          license: {
-            key: string;
-            name: string;
-            node_id: string;
-            spdx_id: string;
-            /** Format: uri */
-            url: string | null;
-          } | null;
-          master_branch?: string;
-          /** Format: uri */
-          merges_url: string;
-          /** Format: uri-template */
-          milestones_url: string;
-          /** Format: uri */
-          mirror_url: string | null;
-          /** @description The name of the repository. */
-          name: string;
-          node_id: string;
-          /** Format: uri-template */
-          notifications_url: string;
-          open_issues: number;
-          open_issues_count: number;
-          organization?: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          permissions?: {
-            admin: boolean;
-            maintain?: boolean;
-            pull: boolean;
-            push: boolean;
-            triage?: boolean;
-          };
-          /** @description Whether the repository is private or public. */
-          private: boolean;
-          public?: boolean;
-          /** Format: uri-template */
-          pulls_url: string;
-          pushed_at: number | string | null;
-          /** Format: uri-template */
-          releases_url: string;
-          role_name?: string | null;
-          size: number;
-          ssh_url: string;
-          stargazers?: number;
-          stargazers_count: number;
-          /** Format: uri */
-          stargazers_url: string;
-          /** Format: uri-template */
-          statuses_url: string;
-          /** Format: uri */
-          subscribers_url: string;
-          /** Format: uri */
-          subscription_url: string;
-          /** Format: uri */
-          svn_url: string;
-          /** Format: uri */
-          tags_url: string;
-          /** Format: uri */
-          teams_url: string;
-          topics: string[];
-          /** Format: uri-template */
-          trees_url: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-          /** @enum {string} */
-          visibility: "public" | "private" | "internal";
-          watchers: number;
-          watchers_count: number;
-          /** @description Whether to require commit signoff. */
-          web_commit_signoff_required?: boolean;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Issue
-       * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself.
-       */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "security_and_analysis"
-            | "pull_request_review_thread"
-            | "reminder"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues pinned event */
-    "webhook-issues-pinned": {
-      /** @enum {string} */
-      action: "pinned";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Issue
-       * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself.
-       */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues reopened event */
-    "webhook-issues-reopened": {
-      /** @enum {string} */
-      action: "reopened";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "pull_request_review_thread"
-            | "reminder"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      } & {
-        active_lock_reason?: string | null;
-        assignee?: Record<string, unknown> | null;
-        assignees?: (Record<string, unknown> | null)[];
-        author_association?: string;
-        body?: string | null;
-        closed_at?: string | null;
-        comments?: number;
-        comments_url?: string;
-        created_at?: string;
-        events_url?: string;
-        html_url?: string;
-        id?: number;
-        labels?: (Record<string, unknown> | null)[];
-        labels_url?: string;
-        locked?: boolean;
-        milestone?: Record<string, unknown> | null;
-        node_id?: string;
-        number?: number;
-        performed_via_github_app?: Record<string, unknown> | null;
-        reactions?: {
-          "+1"?: number;
-          "-1"?: number;
-          confused?: number;
-          eyes?: number;
-          heart?: number;
-          hooray?: number;
-          laugh?: number;
-          rocket?: number;
-          total_count?: number;
-          url?: string;
-        };
-        repository_url?: string;
-        /** @enum {string} */
-        state: "open" | "closed";
-        timeline_url?: string;
-        title?: string;
-        updated_at?: string;
-        url?: string;
-        user?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues transferred event */
-    "webhook-issues-transferred": {
-      /** @enum {string} */
-      action: "transferred";
-      changes: {
-        /**
-         * Issue
-         * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself.
-         */
-        new_issue: {
-          /** @enum {string|null} */
-          active_lock_reason:
-            | "resolved"
-            | "off-topic"
-            | "too heated"
-            | "spam"
-            | null;
-          /** User */
-          assignee?: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          assignees: ({
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null)[];
-          /**
-           * AuthorAssociation
-           * @description How the author is associated with the repository.
-           * @enum {string}
-           */
-          author_association:
-            | "COLLABORATOR"
-            | "CONTRIBUTOR"
-            | "FIRST_TIMER"
-            | "FIRST_TIME_CONTRIBUTOR"
-            | "MANNEQUIN"
-            | "MEMBER"
-            | "NONE"
-            | "OWNER";
-          /** @description Contents of the issue */
-          body: string | null;
-          /** Format: date-time */
-          closed_at: string | null;
-          comments: number;
-          /** Format: uri */
-          comments_url: string;
-          /** Format: date-time */
-          created_at: string;
-          draft?: boolean;
-          /** Format: uri */
-          events_url: string;
-          /** Format: uri */
-          html_url: string;
-          /** Format: int64 */
-          id: number;
-          labels?: {
-            /** @description 6-character hex code, without the leading #, identifying the color */
-            color: string;
-            default: boolean;
-            description: string | null;
-            id: number;
-            /** @description The name of the label. */
-            name: string;
-            node_id: string;
-            /**
-             * Format: uri
-             * @description URL for the label
-             */
-            url: string;
-          }[];
-          /** Format: uri-template */
-          labels_url: string;
-          locked?: boolean;
-          /**
-           * Milestone
-           * @description A collection of related issues and pull requests.
-           */
-          milestone: {
-            /** Format: date-time */
-            closed_at: string | null;
-            closed_issues: number;
-            /** Format: date-time */
-            created_at: string;
-            /** User */
-            creator: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            description: string | null;
-            /** Format: date-time */
-            due_on: string | null;
-            /** Format: uri */
-            html_url: string;
-            id: number;
-            /** Format: uri */
-            labels_url: string;
-            node_id: string;
-            /** @description The number of the milestone. */
-            number: number;
-            open_issues: number;
-            /**
-             * @description The state of the milestone.
-             * @enum {string}
-             */
-            state: "open" | "closed";
-            /** @description The title of the milestone. */
-            title: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-          } | null;
-          node_id: string;
-          number: number;
-          /**
-           * App
-           * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-           */
-          performed_via_github_app?: {
-            /** Format: date-time */
-            created_at: string | null;
-            description: string | null;
-            /** @description The list of events for the GitHub app */
-            events?: (
-              | "branch_protection_rule"
-              | "check_run"
-              | "check_suite"
-              | "code_scanning_alert"
-              | "commit_comment"
-              | "content_reference"
-              | "create"
-              | "delete"
-              | "deployment"
-              | "deployment_review"
-              | "deployment_status"
-              | "deploy_key"
-              | "discussion"
-              | "discussion_comment"
-              | "fork"
-              | "gollum"
-              | "issues"
-              | "issue_comment"
-              | "label"
-              | "member"
-              | "membership"
-              | "milestone"
-              | "organization"
-              | "org_block"
-              | "page_build"
-              | "project"
-              | "project_card"
-              | "project_column"
-              | "public"
-              | "pull_request"
-              | "pull_request_review"
-              | "pull_request_review_comment"
-              | "push"
-              | "registry_package"
-              | "release"
-              | "repository"
-              | "repository_dispatch"
-              | "secret_scanning_alert"
-              | "star"
-              | "status"
-              | "team"
-              | "team_add"
-              | "watch"
-              | "workflow_dispatch"
-              | "workflow_run"
-            )[];
-            /** Format: uri */
-            external_url: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the GitHub app */
-            id: number | null;
-            /** @description The name of the GitHub app */
-            name: string;
-            node_id: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            /** @description The set of permissions for the GitHub app */
-            permissions?: {
-              /** @enum {string} */
-              actions?: "read" | "write";
-              /** @enum {string} */
-              administration?: "read" | "write";
-              /** @enum {string} */
-              checks?: "read" | "write";
-              /** @enum {string} */
-              content_references?: "read" | "write";
-              /** @enum {string} */
-              contents?: "read" | "write";
-              /** @enum {string} */
-              deployments?: "read" | "write";
-              /** @enum {string} */
-              discussions?: "read" | "write";
-              /** @enum {string} */
-              emails?: "read" | "write";
-              /** @enum {string} */
-              environments?: "read" | "write";
-              /** @enum {string} */
-              issues?: "read" | "write";
-              /** @enum {string} */
-              keys?: "read" | "write";
-              /** @enum {string} */
-              members?: "read" | "write";
-              /** @enum {string} */
-              metadata?: "read" | "write";
-              /** @enum {string} */
-              organization_administration?: "read" | "write";
-              /** @enum {string} */
-              organization_hooks?: "read" | "write";
-              /** @enum {string} */
-              organization_packages?: "read" | "write";
-              /** @enum {string} */
-              organization_plan?: "read" | "write";
-              /** @enum {string} */
-              organization_projects?: "read" | "write";
-              /** @enum {string} */
-              organization_secrets?: "read" | "write";
-              /** @enum {string} */
-              organization_self_hosted_runners?: "read" | "write";
-              /** @enum {string} */
-              organization_user_blocking?: "read" | "write";
-              /** @enum {string} */
-              packages?: "read" | "write";
-              /** @enum {string} */
-              pages?: "read" | "write";
-              /** @enum {string} */
-              pull_requests?: "read" | "write";
-              /** @enum {string} */
-              repository_hooks?: "read" | "write";
-              /** @enum {string} */
-              repository_projects?: "read" | "write";
-              /** @enum {string} */
-              secret_scanning_alerts?: "read" | "write";
-              /** @enum {string} */
-              secrets?: "read" | "write";
-              /** @enum {string} */
-              security_events?: "read" | "write";
-              /** @enum {string} */
-              security_scanning_alert?: "read" | "write";
-              /** @enum {string} */
-              single_file?: "read" | "write";
-              /** @enum {string} */
-              statuses?: "read" | "write";
-              /** @enum {string} */
-              team_discussions?: "read" | "write";
-              /** @enum {string} */
-              vulnerability_alerts?: "read" | "write";
-              /** @enum {string} */
-              workflows?: "read" | "write";
-            };
-            /** @description The slug name of the GitHub app */
-            slug?: string;
-            /** Format: date-time */
-            updated_at: string | null;
-          } | null;
-          pull_request?: {
-            /** Format: uri */
-            diff_url?: string;
-            /** Format: uri */
-            html_url?: string;
-            /** Format: date-time */
-            merged_at?: string | null;
-            /** Format: uri */
-            patch_url?: string;
-            /** Format: uri */
-            url?: string;
-          };
-          /** Reactions */
-          reactions: {
-            "+1": number;
-            "-1": number;
-            confused: number;
-            eyes: number;
-            heart: number;
-            hooray: number;
-            laugh: number;
-            rocket: number;
-            total_count: number;
-            /** Format: uri */
-            url: string;
-          };
-          /** Format: uri */
-          repository_url: string;
-          /**
-           * @description State of the issue; either 'open' or 'closed'
-           * @enum {string}
-           */
-          state?: "open" | "closed";
-          state_reason?: string | null;
-          /** Format: uri */
-          timeline_url?: string;
-          /** @description Title of the issue */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /**
-           * Format: uri
-           * @description URL for the issue
-           */
-          url: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /**
-         * Repository
-         * @description A git repository
-         */
-        new_repository: {
-          /**
-           * @description Whether to allow auto-merge for pull requests.
-           * @default false
-           */
-          allow_auto_merge?: boolean;
-          /** @description Whether to allow private forks */
-          allow_forking?: boolean;
-          /**
-           * @description Whether to allow merge commits for pull requests.
-           * @default true
-           */
-          allow_merge_commit?: boolean;
-          /**
-           * @description Whether to allow rebase merges for pull requests.
-           * @default true
-           */
-          allow_rebase_merge?: boolean;
-          /**
-           * @description Whether to allow squash merges for pull requests.
-           * @default true
-           */
-          allow_squash_merge?: boolean;
-          allow_update_branch?: boolean;
-          /** Format: uri-template */
-          archive_url: string;
-          /**
-           * @description Whether the repository is archived.
-           * @default false
-           */
-          archived: boolean;
-          /** Format: uri-template */
-          assignees_url: string;
-          /** Format: uri-template */
-          blobs_url: string;
-          /** Format: uri-template */
-          branches_url: string;
-          /** Format: uri */
-          clone_url: string;
-          /** Format: uri-template */
-          collaborators_url: string;
-          /** Format: uri-template */
-          comments_url: string;
-          /** Format: uri-template */
-          commits_url: string;
-          /** Format: uri-template */
-          compare_url: string;
-          /** Format: uri-template */
-          contents_url: string;
-          /** Format: uri */
-          contributors_url: string;
-          created_at: number | string;
-          /** @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. */
-          custom_properties?: {
-            [key: string]: unknown;
-          };
-          /** @description The default branch of the repository. */
-          default_branch: string;
-          /**
-           * @description Whether to delete head branches when pull requests are merged
-           * @default false
-           */
-          delete_branch_on_merge?: boolean;
-          /** Format: uri */
-          deployments_url: string;
-          description: string | null;
-          /** @description Returns whether or not this repository is disabled. */
-          disabled?: boolean;
-          /** Format: uri */
-          downloads_url: string;
-          /** Format: uri */
-          events_url: string;
-          fork: boolean;
-          forks: number;
-          forks_count: number;
-          /** Format: uri */
-          forks_url: string;
-          full_name: string;
-          /** Format: uri-template */
-          git_commits_url: string;
-          /** Format: uri-template */
-          git_refs_url: string;
-          /** Format: uri-template */
-          git_tags_url: string;
-          /** Format: uri */
-          git_url: string;
-          /**
-           * @description Whether downloads are enabled.
-           * @default true
-           */
-          has_downloads: boolean;
-          /**
-           * @description Whether issues are enabled.
-           * @default true
-           */
-          has_issues: boolean;
-          has_pages: boolean;
-          /**
-           * @description Whether projects are enabled.
-           * @default true
-           */
-          has_projects: boolean;
-          /**
-           * @description Whether the wiki is enabled.
-           * @default true
-           */
-          has_wiki: boolean;
-          /**
-           * @description Whether discussions are enabled.
-           * @default false
-           */
-          has_discussions: boolean;
-          homepage: string | null;
-          /** Format: uri */
-          hooks_url: string;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the repository */
-          id: number;
-          is_template?: boolean;
-          /** Format: uri-template */
-          issue_comment_url: string;
-          /** Format: uri-template */
-          issue_events_url: string;
-          /** Format: uri-template */
-          issues_url: string;
-          /** Format: uri-template */
-          keys_url: string;
-          /** Format: uri-template */
-          labels_url: string;
-          language: string | null;
-          /** Format: uri */
-          languages_url: string;
-          /** License */
-          license: {
-            key: string;
-            name: string;
-            node_id: string;
-            spdx_id: string;
-            /** Format: uri */
-            url: string | null;
-          } | null;
-          master_branch?: string;
-          /** Format: uri */
-          merges_url: string;
-          /** Format: uri-template */
-          milestones_url: string;
-          /** Format: uri */
-          mirror_url: string | null;
-          /** @description The name of the repository. */
-          name: string;
-          node_id: string;
-          /** Format: uri-template */
-          notifications_url: string;
-          open_issues: number;
-          open_issues_count: number;
-          organization?: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          permissions?: {
-            admin: boolean;
-            maintain?: boolean;
-            pull: boolean;
-            push: boolean;
-            triage?: boolean;
-          };
-          /** @description Whether the repository is private or public. */
-          private: boolean;
-          public?: boolean;
-          /** Format: uri-template */
-          pulls_url: string;
-          pushed_at: number | string | null;
-          /** Format: uri-template */
-          releases_url: string;
-          role_name?: string | null;
-          size: number;
-          ssh_url: string;
-          stargazers?: number;
-          stargazers_count: number;
-          /** Format: uri */
-          stargazers_url: string;
-          /** Format: uri-template */
-          statuses_url: string;
-          /** Format: uri */
-          subscribers_url: string;
-          /** Format: uri */
-          subscription_url: string;
-          /** Format: uri */
-          svn_url: string;
-          /** Format: uri */
-          tags_url: string;
-          /** Format: uri */
-          teams_url: string;
-          topics: string[];
-          /** Format: uri-template */
-          trees_url: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-          /** @enum {string} */
-          visibility: "public" | "private" | "internal";
-          watchers: number;
-          watchers_count: number;
-          /** @description Whether to require contributors to sign off on web-based commits */
-          web_commit_signoff_required?: boolean;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Issue
-       * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself.
-       */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues unassigned event */
-    "webhook-issues-unassigned": {
-      /**
-       * @description The action that was performed.
-       * @enum {string}
-       */
-      action: "unassigned";
-      /** User */
-      assignee?: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization" | "Mannequin";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Issue
-       * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself.
-       */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "reminder"
-            | "pull_request_review_thread"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues unlabeled event */
-    "webhook-issues-unlabeled": {
-      /** @enum {string} */
-      action: "unlabeled";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Issue
-       * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself.
-       */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-            | "reminder"
-            | "pull_request_review_thread"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write" | "admin";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      /** Label */
-      label?: {
-        /** @description 6-character hex code, without the leading #, identifying the color */
-        color: string;
-        default: boolean;
-        description: string | null;
-        id: number;
-        /** @description The name of the label. */
-        name: string;
-        node_id: string;
-        /**
-         * Format: uri
-         * @description URL for the label
-         */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues unlocked event */
-    "webhook-issues-unlocked": {
-      /** @enum {string} */
-      action: "unlocked";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      } & {
-        active_lock_reason: Record<string, unknown> | null;
-        assignee?: Record<string, unknown> | null;
-        assignees?: (Record<string, unknown> | null)[];
-        author_association?: string;
-        body?: string | null;
-        closed_at?: string | null;
-        comments?: number;
-        comments_url?: string;
-        created_at?: string;
-        events_url?: string;
-        html_url?: string;
-        id?: number;
-        labels?: (Record<string, unknown> | null)[];
-        labels_url?: string;
-        /** @enum {boolean} */
-        locked: false;
-        milestone?: Record<string, unknown> | null;
-        node_id?: string;
-        number?: number;
-        performed_via_github_app?: Record<string, unknown> | null;
-        reactions?: {
-          "+1"?: number;
-          "-1"?: number;
-          confused?: number;
-          eyes?: number;
-          heart?: number;
-          hooray?: number;
-          laugh?: number;
-          rocket?: number;
-          total_count?: number;
-          url?: string;
-        };
-        repository_url?: string;
-        state?: string;
-        timeline_url?: string;
-        title?: string;
-        updated_at?: string;
-        url?: string;
-        user?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** issues unpinned event */
-    "webhook-issues-unpinned": {
-      /** @enum {string} */
-      action: "unpinned";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Issue
-       * @description The [issue](https://docs.github.com/rest/issues/issues#get-an-issue) itself.
-       */
-      issue: {
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description Contents of the issue */
-        body: string | null;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments: number;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: date-time */
-        created_at: string;
-        draft?: boolean;
-        /** Format: uri */
-        events_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** Format: int64 */
-        id: number;
-        labels?: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        /** Format: uri-template */
-        labels_url: string;
-        locked?: boolean;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /**
-         * App
-         * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
-         */
-        performed_via_github_app?: {
-          /** Format: date-time */
-          created_at: string | null;
-          description: string | null;
-          /** @description The list of events for the GitHub app */
-          events?: (
-            | "branch_protection_rule"
-            | "check_run"
-            | "check_suite"
-            | "code_scanning_alert"
-            | "commit_comment"
-            | "content_reference"
-            | "create"
-            | "delete"
-            | "deployment"
-            | "deployment_review"
-            | "deployment_status"
-            | "deploy_key"
-            | "discussion"
-            | "discussion_comment"
-            | "fork"
-            | "gollum"
-            | "issues"
-            | "issue_comment"
-            | "label"
-            | "member"
-            | "membership"
-            | "milestone"
-            | "organization"
-            | "org_block"
-            | "page_build"
-            | "project"
-            | "project_card"
-            | "project_column"
-            | "public"
-            | "pull_request"
-            | "pull_request_review"
-            | "pull_request_review_comment"
-            | "push"
-            | "registry_package"
-            | "release"
-            | "repository"
-            | "repository_dispatch"
-            | "secret_scanning_alert"
-            | "star"
-            | "status"
-            | "team"
-            | "team_add"
-            | "watch"
-            | "workflow_dispatch"
-            | "workflow_run"
-          )[];
-          /** Format: uri */
-          external_url: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the GitHub app */
-          id: number | null;
-          /** @description The name of the GitHub app */
-          name: string;
-          node_id: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description The set of permissions for the GitHub app */
-          permissions?: {
-            /** @enum {string} */
-            actions?: "read" | "write";
-            /** @enum {string} */
-            administration?: "read" | "write";
-            /** @enum {string} */
-            checks?: "read" | "write";
-            /** @enum {string} */
-            content_references?: "read" | "write";
-            /** @enum {string} */
-            contents?: "read" | "write";
-            /** @enum {string} */
-            deployments?: "read" | "write";
-            /** @enum {string} */
-            discussions?: "read" | "write";
-            /** @enum {string} */
-            emails?: "read" | "write";
-            /** @enum {string} */
-            environments?: "read" | "write";
-            /** @enum {string} */
-            issues?: "read" | "write";
-            /** @enum {string} */
-            keys?: "read" | "write";
-            /** @enum {string} */
-            members?: "read" | "write";
-            /** @enum {string} */
-            metadata?: "read" | "write";
-            /** @enum {string} */
-            organization_administration?: "read" | "write";
-            /** @enum {string} */
-            organization_hooks?: "read" | "write";
-            /** @enum {string} */
-            organization_packages?: "read" | "write";
-            /** @enum {string} */
-            organization_plan?: "read" | "write";
-            /** @enum {string} */
-            organization_projects?: "read" | "write";
-            /** @enum {string} */
-            organization_secrets?: "read" | "write";
-            /** @enum {string} */
-            organization_self_hosted_runners?: "read" | "write";
-            /** @enum {string} */
-            organization_user_blocking?: "read" | "write";
-            /** @enum {string} */
-            packages?: "read" | "write";
-            /** @enum {string} */
-            pages?: "read" | "write";
-            /** @enum {string} */
-            pull_requests?: "read" | "write";
-            /** @enum {string} */
-            repository_hooks?: "read" | "write";
-            /** @enum {string} */
-            repository_projects?: "read" | "write";
-            /** @enum {string} */
-            secret_scanning_alerts?: "read" | "write";
-            /** @enum {string} */
-            secrets?: "read" | "write";
-            /** @enum {string} */
-            security_events?: "read" | "write";
-            /** @enum {string} */
-            security_scanning_alert?: "read" | "write";
-            /** @enum {string} */
-            single_file?: "read" | "write";
-            /** @enum {string} */
-            statuses?: "read" | "write";
-            /** @enum {string} */
-            team_discussions?: "read" | "write";
-            /** @enum {string} */
-            vulnerability_alerts?: "read" | "write";
-            /** @enum {string} */
-            workflows?: "read" | "write";
-          };
-          /** @description The slug name of the GitHub app */
-          slug?: string;
-          /** Format: date-time */
-          updated_at: string | null;
-        } | null;
-        pull_request?: {
-          /** Format: uri */
-          diff_url?: string;
-          /** Format: uri */
-          html_url?: string;
-          /** Format: date-time */
-          merged_at?: string | null;
-          /** Format: uri */
-          patch_url?: string;
-          /** Format: uri */
-          url?: string;
-        };
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        repository_url: string;
-        /**
-         * @description State of the issue; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state?: "open" | "closed";
-        state_reason?: string | null;
-        /** Format: uri */
-        timeline_url?: string;
-        /** @description Title of the issue */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the issue
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** label created event */
-    "webhook-label-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** Label */
-      label: {
-        /** @description 6-character hex code, without the leading #, identifying the color */
-        color: string;
-        default: boolean;
-        description: string | null;
-        id: number;
-        /** @description The name of the label. */
-        name: string;
-        node_id: string;
-        /**
-         * Format: uri
-         * @description URL for the label
-         */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** label deleted event */
-    "webhook-label-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** Label */
-      label: {
-        /** @description 6-character hex code, without the leading #, identifying the color */
-        color: string;
-        default: boolean;
-        description: string | null;
-        id: number;
-        /** @description The name of the label. */
-        name: string;
-        node_id: string;
-        /**
-         * Format: uri
-         * @description URL for the label
-         */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** label edited event */
-    "webhook-label-edited": {
-      /** @enum {string} */
-      action: "edited";
-      /** @description The changes to the label if the action was `edited`. */
-      changes?: {
-        color?: {
-          /** @description The previous version of the color if the action was `edited`. */
-          from: string;
-        };
-        description?: {
-          /** @description The previous version of the description if the action was `edited`. */
-          from: string;
-        };
-        name?: {
-          /** @description The previous version of the name if the action was `edited`. */
-          from: string;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** Label */
-      label: {
-        /** @description 6-character hex code, without the leading #, identifying the color */
-        color: string;
-        default: boolean;
-        description: string | null;
-        id: number;
-        /** @description The name of the label. */
-        name: string;
-        node_id: string;
-        /**
-         * Format: uri
-         * @description URL for the label
-         */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** marketplace_purchase cancelled event */
-    "webhook-marketplace-purchase-cancelled": {
-      /** @enum {string} */
-      action: "cancelled";
-      effective_date: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      marketplace_purchase: {
-        account: {
-          id: number;
-          login: string;
-          node_id: string;
-          organization_billing_email: string | null;
-          type: string;
-        };
-        billing_cycle: string;
-        free_trial_ends_on: string | null;
-        next_billing_date?: string | null;
-        on_free_trial: boolean;
-        plan: {
-          bullets: string[];
-          description: string;
-          has_free_trial: boolean;
-          id: number;
-          monthly_price_in_cents: number;
-          name: string;
-          /** @enum {string} */
-          price_model: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name: string | null;
-          yearly_price_in_cents: number;
-        };
-        unit_count: number;
-      } & {
-        account?: {
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organization_billing_email?: string | null;
-          type?: string;
-        };
-        billing_cycle?: string;
-        free_trial_ends_on?: string | null;
-        next_billing_date: string | null;
-        on_free_trial?: boolean;
-        plan?: {
-          bullets?: (string | null)[];
-          description?: string;
-          has_free_trial?: boolean;
-          id?: number;
-          monthly_price_in_cents?: number;
-          name?: string;
-          /** @enum {string} */
-          price_model?: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name?: string | null;
-          yearly_price_in_cents?: number;
-        };
-        unit_count?: number;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Marketplace Purchase */
-      previous_marketplace_purchase?: {
-        account: {
-          id: number;
-          login: string;
-          node_id: string;
-          organization_billing_email: string | null;
-          type: string;
-        };
-        billing_cycle: string;
-        free_trial_ends_on: Record<string, unknown> | null;
-        next_billing_date?: string | null;
-        on_free_trial: boolean;
-        plan: {
-          bullets: string[];
-          description: string;
-          has_free_trial: boolean;
-          id: number;
-          monthly_price_in_cents: number;
-          name: string;
-          /** @enum {string} */
-          price_model: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name: string | null;
-          yearly_price_in_cents: number;
-        };
-        unit_count: number;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** marketplace_purchase changed event */
-    "webhook-marketplace-purchase-changed": {
-      /** @enum {string} */
-      action: "changed";
-      effective_date: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      marketplace_purchase: {
-        account: {
-          id: number;
-          login: string;
-          node_id: string;
-          organization_billing_email: string | null;
-          type: string;
-        };
-        billing_cycle: string;
-        free_trial_ends_on: string | null;
-        next_billing_date?: string | null;
-        on_free_trial: boolean;
-        plan: {
-          bullets: string[];
-          description: string;
-          has_free_trial: boolean;
-          id: number;
-          monthly_price_in_cents: number;
-          name: string;
-          /** @enum {string} */
-          price_model: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name: string | null;
-          yearly_price_in_cents: number;
-        };
-        unit_count: number;
-      } & {
-        account?: {
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organization_billing_email?: string | null;
-          type?: string;
-        };
-        billing_cycle?: string;
-        free_trial_ends_on?: string | null;
-        next_billing_date: string | null;
-        on_free_trial?: boolean;
-        plan?: {
-          bullets?: (string | null)[];
-          description?: string;
-          has_free_trial?: boolean;
-          id?: number;
-          monthly_price_in_cents?: number;
-          name?: string;
-          /** @enum {string} */
-          price_model?: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name?: string | null;
-          yearly_price_in_cents?: number;
-        };
-        unit_count?: number;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Marketplace Purchase */
-      previous_marketplace_purchase?: {
-        account: {
-          id: number;
-          login: string;
-          node_id: string;
-          organization_billing_email: string | null;
-          type: string;
-        };
-        billing_cycle: string;
-        free_trial_ends_on: string | null;
-        next_billing_date?: string | null;
-        on_free_trial: boolean | null;
-        plan: {
-          bullets: string[];
-          description: string;
-          has_free_trial: boolean;
-          id: number;
-          monthly_price_in_cents: number;
-          name: string;
-          /** @enum {string} */
-          price_model: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name: string | null;
-          yearly_price_in_cents: number;
-        };
-        unit_count: number;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** marketplace_purchase pending_change event */
-    "webhook-marketplace-purchase-pending-change": {
-      /** @enum {string} */
-      action: "pending_change";
-      effective_date: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      marketplace_purchase: {
-        account: {
-          id: number;
-          login: string;
-          node_id: string;
-          organization_billing_email: string | null;
-          type: string;
-        };
-        billing_cycle: string;
-        free_trial_ends_on: string | null;
-        next_billing_date?: string | null;
-        on_free_trial: boolean;
-        plan: {
-          bullets: string[];
-          description: string;
-          has_free_trial: boolean;
-          id: number;
-          monthly_price_in_cents: number;
-          name: string;
-          /** @enum {string} */
-          price_model: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name: string | null;
-          yearly_price_in_cents: number;
-        };
-        unit_count: number;
-      } & {
-        account?: {
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organization_billing_email?: string | null;
-          type?: string;
-        };
-        billing_cycle?: string;
-        free_trial_ends_on?: string | null;
-        next_billing_date: string | null;
-        on_free_trial?: boolean;
-        plan?: {
-          bullets?: (string | null)[];
-          description?: string;
-          has_free_trial?: boolean;
-          id?: number;
-          monthly_price_in_cents?: number;
-          name?: string;
-          /** @enum {string} */
-          price_model?: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name?: string | null;
-          yearly_price_in_cents?: number;
-        };
-        unit_count?: number;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Marketplace Purchase */
-      previous_marketplace_purchase?: {
-        account: {
-          id: number;
-          login: string;
-          node_id: string;
-          organization_billing_email: string | null;
-          type: string;
-        };
-        billing_cycle: string;
-        free_trial_ends_on: string | null;
-        next_billing_date?: string | null;
-        on_free_trial: boolean;
-        plan: {
-          bullets: string[];
-          description: string;
-          has_free_trial: boolean;
-          id: number;
-          monthly_price_in_cents: number;
-          name: string;
-          /** @enum {string} */
-          price_model: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name: string | null;
-          yearly_price_in_cents: number;
-        };
-        unit_count: number;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** marketplace_purchase pending_change_cancelled event */
-    "webhook-marketplace-purchase-pending-change-cancelled": {
-      /** @enum {string} */
-      action: "pending_change_cancelled";
-      effective_date: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      marketplace_purchase: {
-        account: {
-          id: number;
-          login: string;
-          node_id: string;
-          organization_billing_email: string | null;
-          type: string;
-        };
-        billing_cycle: string;
-        free_trial_ends_on: Record<string, unknown> | null;
-        next_billing_date?: string | null;
-        on_free_trial: boolean;
-        plan: {
-          bullets: string[];
-          description: string;
-          has_free_trial: boolean;
-          id: number;
-          monthly_price_in_cents: number;
-          name: string;
-          /** @enum {string} */
-          price_model: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name: string | null;
-          yearly_price_in_cents: number;
-        };
-        unit_count: number;
-      } & {
-        next_billing_date: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Marketplace Purchase */
-      previous_marketplace_purchase?: {
-        account: {
-          id: number;
-          login: string;
-          node_id: string;
-          organization_billing_email: string | null;
-          type: string;
-        };
-        billing_cycle: string;
-        free_trial_ends_on: Record<string, unknown> | null;
-        next_billing_date?: string | null;
-        on_free_trial: boolean;
-        plan: {
-          bullets: string[];
-          description: string;
-          has_free_trial: boolean;
-          id: number;
-          monthly_price_in_cents: number;
-          name: string;
-          /** @enum {string} */
-          price_model: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name: string | null;
-          yearly_price_in_cents: number;
-        };
-        unit_count: number;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** marketplace_purchase purchased event */
-    "webhook-marketplace-purchase-purchased": {
-      /** @enum {string} */
-      action: "purchased";
-      effective_date: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      marketplace_purchase: {
-        account: {
-          id: number;
-          login: string;
-          node_id: string;
-          organization_billing_email: string | null;
-          type: string;
-        };
-        billing_cycle: string;
-        free_trial_ends_on: string | null;
-        next_billing_date?: string | null;
-        on_free_trial: boolean;
-        plan: {
-          bullets: string[];
-          description: string;
-          has_free_trial: boolean;
-          id: number;
-          monthly_price_in_cents: number;
-          name: string;
-          /** @enum {string} */
-          price_model: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name: string | null;
-          yearly_price_in_cents: number;
-        };
-        unit_count: number;
-      } & {
-        account?: {
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organization_billing_email?: string | null;
-          type?: string;
-        };
-        billing_cycle?: string;
-        free_trial_ends_on?: string | null;
-        next_billing_date: string | null;
-        on_free_trial?: boolean;
-        plan?: {
-          bullets?: (string | null)[];
-          description?: string;
-          has_free_trial?: boolean;
-          id?: number;
-          monthly_price_in_cents?: number;
-          name?: string;
-          /** @enum {string} */
-          price_model?: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name?: string | null;
-          yearly_price_in_cents?: number;
-        };
-        unit_count?: number;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Marketplace Purchase */
-      previous_marketplace_purchase?: {
-        account: {
-          id: number;
-          login: string;
-          node_id: string;
-          organization_billing_email: string | null;
-          type: string;
-        };
-        billing_cycle: string;
-        free_trial_ends_on: Record<string, unknown> | null;
-        next_billing_date?: string | null;
-        on_free_trial: boolean;
-        plan: {
-          bullets: string[];
-          description: string;
-          has_free_trial: boolean;
-          id: number;
-          monthly_price_in_cents: number;
-          name: string;
-          /** @enum {string} */
-          price_model: "FREE" | "FLAT_RATE" | "PER_UNIT";
-          unit_name: string | null;
-          yearly_price_in_cents: number;
-        };
-        unit_count: number;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** member added event */
-    "webhook-member-added": {
-      /** @enum {string} */
-      action: "added";
-      changes?: {
-        permission?: {
-          /** @enum {string} */
-          to: "write" | "admin" | "read";
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** User */
-      member: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** member edited event */
-    "webhook-member-edited": {
-      /** @enum {string} */
-      action: "edited";
-      /** @description The changes to the collaborator permissions */
-      changes: {
-        old_permission?: {
-          /** @description The previous permissions of the collaborator if the action was edited. */
-          from: string;
-        };
-        permission?: {
-          from?: string | null;
-          to?: string | null;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** User */
-      member: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** member removed event */
-    "webhook-member-removed": {
-      /** @enum {string} */
-      action: "removed";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** User */
-      member: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** membership added event */
-    "webhook-membership-added": {
-      /** @enum {string} */
-      action: "added";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** User */
-      member: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      organization: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      /**
-       * @description The scope of the membership. Currently, can only be `team`.
-       * @enum {string}
-       */
-      scope: "team";
-      /** User */
-      sender: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      /**
-       * Team
-       * @description Groups of organization members that gives permissions on specified repositories.
-       */
-      team: {
-        deleted?: boolean;
-        /** @description Description of the team */
-        description?: string | null;
-        /** Format: uri */
-        html_url?: string;
-        /** @description Unique identifier of the team */
-        id: number;
-        /** Format: uri-template */
-        members_url?: string;
-        /** @description Name of the team */
-        name: string;
-        node_id?: string;
-        parent?: {
-          /** @description Description of the team */
-          description: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url: string;
-          /** @description Name of the team */
-          name: string;
-          node_id: string;
-          /** @description Permission that the team will have for its repositories */
-          permission: string;
-          /** @enum {string} */
-          privacy: "open" | "closed" | "secret";
-          /**
-           * @description Whether team members will receive notifications when their team is @mentioned
-           * @enum {string}
-           */
-          notification_setting:
-            | "notifications_enabled"
-            | "notifications_disabled";
-          /** Format: uri */
-          repositories_url: string;
-          slug: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url: string;
-        } | null;
-        /** @description Permission that the team will have for its repositories */
-        permission?: string;
-        /** @enum {string} */
-        privacy?: "open" | "closed" | "secret";
-        /** @enum {string} */
-        notification_setting?:
-          | "notifications_enabled"
-          | "notifications_disabled";
-        /** Format: uri */
-        repositories_url?: string;
-        slug?: string;
-        /**
-         * Format: uri
-         * @description URL for the team
-         */
-        url?: string;
-      };
-    };
-    /** membership removed event */
-    "webhook-membership-removed": {
-      /** @enum {string} */
-      action: "removed";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** User */
-      member: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      organization: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      /**
-       * @description The scope of the membership. Currently, can only be `team`.
-       * @enum {string}
-       */
-      scope: "team" | "organization";
-      /** User */
-      sender: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      /**
-       * Team
-       * @description Groups of organization members that gives permissions on specified repositories.
-       */
-      team: {
-        deleted?: boolean;
-        /** @description Description of the team */
-        description?: string | null;
-        /** Format: uri */
-        html_url?: string;
-        /** @description Unique identifier of the team */
-        id: number;
-        /** Format: uri-template */
-        members_url?: string;
-        /** @description Name of the team */
-        name: string;
-        node_id?: string;
-        parent?: {
-          /** @description Description of the team */
-          description: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url: string;
-          /** @description Name of the team */
-          name: string;
-          node_id: string;
-          /** @description Permission that the team will have for its repositories */
-          permission: string;
-          /** @enum {string} */
-          privacy: "open" | "closed" | "secret";
-          /**
-           * @description Whether team members will receive notifications when their team is @mentioned
-           * @enum {string}
-           */
-          notification_setting:
-            | "notifications_enabled"
-            | "notifications_disabled";
-          /** Format: uri */
-          repositories_url: string;
-          slug: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url: string;
-        } | null;
-        /** @description Permission that the team will have for its repositories */
-        permission?: string;
-        /** @enum {string} */
-        privacy?: "open" | "closed" | "secret";
-        /** @enum {string} */
-        notification_setting?:
-          | "notifications_enabled"
-          | "notifications_disabled";
-        /** Format: uri */
-        repositories_url?: string;
-        slug?: string;
-        /**
-         * Format: uri
-         * @description URL for the team
-         */
-        url?: string;
-      };
-    };
-    "webhook-merge-group-checks-requested": {
-      /** @enum {string} */
-      action: "checks_requested";
-      installation?: components["schemas"]["simple-installation"];
-      merge_group: components["schemas"]["merge-group"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    "webhook-merge-group-destroyed": {
-      /** @enum {string} */
-      action: "destroyed";
-      /**
-       * @description Explains why the merge group is being destroyed. The group could have been merged, removed from the queue (dequeued), or invalidated by an earlier queue entry being dequeued (invalidated).
-       * @enum {string}
-       */
-      reason?: "merged" | "invalidated" | "dequeued";
-      installation?: components["schemas"]["simple-installation"];
-      merge_group: components["schemas"]["merge-group"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** meta deleted event */
-    "webhook-meta-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      /** @description The modified webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace. */
-      hook: {
-        active: boolean;
-        config: {
-          /** @enum {string} */
-          content_type: "json" | "form";
-          insecure_ssl: string;
-          secret?: string;
-          /** Format: uri */
-          url: string;
-        };
-        created_at: string;
-        events: (
-          | "*"
-          | "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"
-        )[];
-        id: number;
-        name: string;
-        type: string;
-        updated_at: string;
-      };
-      /** @description The id of the modified webhook. */
-      hook_id: number;
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["nullable-repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** milestone closed event */
-    "webhook-milestone-closed": {
-      /** @enum {string} */
-      action: "closed";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Milestone
-       * @description A collection of related issues and pull requests.
-       */
-      milestone: {
-        /** Format: date-time */
-        closed_at: string | null;
-        closed_issues: number;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        description: string | null;
-        /** Format: date-time */
-        due_on: string | null;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        labels_url: string;
-        node_id: string;
-        /** @description The number of the milestone. */
-        number: number;
-        open_issues: number;
-        /**
-         * @description The state of the milestone.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** @description The title of the milestone. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** milestone created event */
-    "webhook-milestone-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Milestone
-       * @description A collection of related issues and pull requests.
-       */
-      milestone: {
-        /** Format: date-time */
-        closed_at: string | null;
-        closed_issues: number;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        description: string | null;
-        /** Format: date-time */
-        due_on: string | null;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        labels_url: string;
-        node_id: string;
-        /** @description The number of the milestone. */
-        number: number;
-        open_issues: number;
-        /**
-         * @description The state of the milestone.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** @description The title of the milestone. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** milestone deleted event */
-    "webhook-milestone-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Milestone
-       * @description A collection of related issues and pull requests.
-       */
-      milestone: {
-        /** Format: date-time */
-        closed_at: string | null;
-        closed_issues: number;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        description: string | null;
-        /** Format: date-time */
-        due_on: string | null;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        labels_url: string;
-        node_id: string;
-        /** @description The number of the milestone. */
-        number: number;
-        open_issues: number;
-        /**
-         * @description The state of the milestone.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** @description The title of the milestone. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** milestone edited event */
-    "webhook-milestone-edited": {
-      /** @enum {string} */
-      action: "edited";
-      /** @description The changes to the milestone if the action was `edited`. */
-      changes: {
-        description?: {
-          /** @description The previous version of the description if the action was `edited`. */
-          from: string;
-        };
-        due_on?: {
-          /** @description The previous version of the due date if the action was `edited`. */
-          from: string;
-        };
-        title?: {
-          /** @description The previous version of the title if the action was `edited`. */
-          from: string;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Milestone
-       * @description A collection of related issues and pull requests.
-       */
-      milestone: {
-        /** Format: date-time */
-        closed_at: string | null;
-        closed_issues: number;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        description: string | null;
-        /** Format: date-time */
-        due_on: string | null;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        labels_url: string;
-        node_id: string;
-        /** @description The number of the milestone. */
-        number: number;
-        open_issues: number;
-        /**
-         * @description The state of the milestone.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** @description The title of the milestone. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** milestone opened event */
-    "webhook-milestone-opened": {
-      /** @enum {string} */
-      action: "opened";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Milestone
-       * @description A collection of related issues and pull requests.
-       */
-      milestone: {
-        /** Format: date-time */
-        closed_at: string | null;
-        closed_issues: number;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        description: string | null;
-        /** Format: date-time */
-        due_on: string | null;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        labels_url: string;
-        node_id: string;
-        /** @description The number of the milestone. */
-        number: number;
-        open_issues: number;
-        /**
-         * @description The state of the milestone.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** @description The title of the milestone. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** org_block blocked event */
-    "webhook-org-block-blocked": {
-      /** @enum {string} */
-      action: "blocked";
-      /** User */
-      blocked_user: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** org_block unblocked event */
-    "webhook-org-block-unblocked": {
-      /** @enum {string} */
-      action: "unblocked";
-      /** User */
-      blocked_user: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** organization deleted event */
-    "webhook-organization-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Membership
-       * @description The membership between the user and the organization. Not present when the action is `member_invited`.
-       */
-      membership?: {
-        /** Format: uri */
-        organization_url: string;
-        role: string;
-        state: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      organization: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** organization member_added event */
-    "webhook-organization-member-added": {
-      /** @enum {string} */
-      action: "member_added";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Membership
-       * @description The membership between the user and the organization. Not present when the action is `member_invited`.
-       */
-      membership: {
-        /** Format: uri */
-        organization_url: string;
-        role: string;
-        state: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      organization: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** organization member_invited event */
-    "webhook-organization-member-invited": {
-      /** @enum {string} */
-      action: "member_invited";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The invitation for the user or email if the action is `member_invited`. */
-      invitation: {
-        /** Format: date-time */
-        created_at: string;
-        email: string | null;
-        /** Format: date-time */
-        failed_at: string | null;
-        failed_reason: string | null;
-        id: number;
-        /** Format: uri */
-        invitation_teams_url: string;
-        /** User */
-        inviter: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        login: string | null;
-        node_id: string;
-        role: string;
-        team_count: number;
-        invitation_source?: string;
-      };
-      organization: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      /** User */
-      user?: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-    };
-    /** organization member_removed event */
-    "webhook-organization-member-removed": {
-      /** @enum {string} */
-      action: "member_removed";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Membership
-       * @description The membership between the user and the organization. Not present when the action is `member_invited`.
-       */
-      membership: {
-        /** Format: uri */
-        organization_url: string;
-        role: string;
-        state: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      organization: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** organization renamed event */
-    "webhook-organization-renamed": {
-      /** @enum {string} */
-      action: "renamed";
-      changes?: {
-        login?: {
-          from?: string;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /**
-       * Membership
-       * @description The membership between the user and the organization. Not present when the action is `member_invited`.
-       */
-      membership?: {
-        /** Format: uri */
-        organization_url: string;
-        role: string;
-        state: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      organization: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Ruby Gems metadata */
-    "webhook-rubygems-metadata": {
-      name?: string;
-      description?: string;
-      readme?: string;
-      homepage?: string;
-      version_info?: {
-        version?: string;
-      };
-      platform?: string;
-      metadata?: {
-        [key: string]: string;
-      };
-      repo?: string;
-      dependencies?: {
-        [key: string]: string;
-      }[];
-      commit_oid?: string;
-    };
-    /** package published event */
-    "webhook-package-published": {
-      /** @enum {string} */
-      action: "published";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description Information about the package. */
-      package: {
-        created_at: string | null;
-        description: string | null;
-        ecosystem: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string;
-        namespace: string;
-        /** User */
-        owner: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        package_type: string;
-        package_version: {
-          /** User */
-          author?: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          body?: string | Record<string, never>;
-          body_html?: string;
-          container_metadata?: {
-            labels?: Record<string, unknown> | null;
-            manifest?: Record<string, unknown> | null;
-            tag?: {
-              digest?: string;
-              name?: string;
-            };
-          } | null;
-          created_at?: string;
-          description: string;
-          docker_metadata?: {
-            tags?: string[];
-          }[];
-          draft?: boolean;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          installation_command: string;
-          manifest?: string;
-          metadata: {
-            [key: string]: unknown;
-          }[];
-          name: string;
-          npm_metadata?: {
-            name?: string;
-            version?: string;
-            npm_user?: string;
-            author?: Record<string, unknown> | null;
-            bugs?: Record<string, unknown> | null;
-            dependencies?: Record<string, never>;
-            dev_dependencies?: Record<string, never>;
-            peer_dependencies?: Record<string, never>;
-            optional_dependencies?: Record<string, never>;
-            description?: string;
-            dist?: Record<string, unknown> | null;
-            git_head?: string;
-            homepage?: string;
-            license?: string;
-            main?: string;
-            repository?: Record<string, unknown> | null;
-            scripts?: Record<string, never>;
-            id?: string;
-            node_version?: string;
-            npm_version?: string;
-            has_shrinkwrap?: boolean;
-            maintainers?: Record<string, never>[];
-            contributors?: Record<string, never>[];
-            engines?: Record<string, never>;
-            keywords?: string[];
-            files?: string[];
-            bin?: Record<string, never>;
-            man?: Record<string, never>;
-            directories?: Record<string, unknown> | null;
-            os?: string[];
-            cpu?: string[];
-            readme?: string;
-            installation_command?: string;
-            release_id?: number;
-            commit_oid?: string;
-            published_via_actions?: boolean;
-            deleted_by_id?: number;
-          } | null;
-          nuget_metadata?:
-            | {
-                id?: number | string;
-                name?: string;
-                value?: OneOf<
-                  [
-                    boolean,
-                    string,
-                    number,
-                    {
-                      url?: string;
-                      branch?: string;
-                      commit?: string;
-                      type?: string;
-                    },
-                  ]
-                >;
-              }[]
-            | null;
-          package_files: {
-            content_type: string;
-            created_at: string;
-            /** Format: uri */
-            download_url: string;
-            id: number;
-            md5: string | null;
-            name: string;
-            sha1: string | null;
-            sha256: string | null;
-            size: number;
-            state: string | null;
-            updated_at: string;
-          }[];
-          package_url?: string;
-          prerelease?: boolean;
-          release?: {
-            /** User */
-            author: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            created_at: string;
-            draft: boolean;
-            /** Format: uri */
-            html_url: string;
-            id: number;
-            name: string | null;
-            prerelease: boolean;
-            published_at: string;
-            tag_name: string;
-            target_commitish: string;
-            /** Format: uri */
-            url: string;
-          };
-          rubygems_metadata?: components["schemas"]["webhook-rubygems-metadata"][];
-          source_url?: string;
-          summary: string;
-          tag_name?: string;
-          target_commitish?: string;
-          target_oid?: string;
-          updated_at?: string;
-          version: string;
-        } | null;
-        registry: {
-          /** Format: uri */
-          about_url: string;
-          name: string;
-          type: string;
-          /** Format: uri */
-          url: string;
-          vendor: string;
-        } | null;
-        updated_at: string | null;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** package updated event */
-    "webhook-package-updated": {
-      /** @enum {string} */
-      action: "updated";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** @description Information about the package. */
-      package: {
-        created_at: string;
-        description: string | null;
-        ecosystem: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string;
-        namespace: string;
-        /** User */
-        owner: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        package_type: string;
-        package_version: {
-          /** User */
-          author: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          body: string;
-          body_html: string;
-          created_at: string;
-          description: string;
-          docker_metadata?: {
-            tags?: string[];
-          }[];
-          draft?: boolean;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          installation_command: string;
-          manifest?: string;
-          metadata: {
-            [key: string]: unknown;
-          }[];
-          name: string;
-          package_files: {
-            content_type: string;
-            created_at: string;
-            /** Format: uri */
-            download_url: string;
-            id: number;
-            md5: string | null;
-            name: string;
-            sha1: string | null;
-            sha256: string;
-            size: number;
-            state: string;
-            updated_at: string;
-          }[];
-          package_url?: string;
-          prerelease?: boolean;
-          release?: {
-            /** User */
-            author: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            created_at: string;
-            draft: boolean;
-            /** Format: uri */
-            html_url: string;
-            id: number;
-            name: string;
-            prerelease: boolean;
-            published_at: string;
-            tag_name: string;
-            target_commitish: string;
-            /** Format: uri */
-            url: string;
-          };
-          rubygems_metadata?: components["schemas"]["webhook-rubygems-metadata"][];
-          /** Format: uri */
-          source_url?: string;
-          summary: string;
-          tag_name?: string;
-          target_commitish: string;
-          target_oid: string;
-          updated_at: string;
-          version: string;
-        };
-        registry: {
-          /** Format: uri */
-          about_url: string;
-          name: string;
-          type: string;
-          /** Format: uri */
-          url: string;
-          vendor: string;
-        } | null;
-        updated_at: string;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** page_build event */
-    "webhook-page-build": {
-      /** @description The [List GitHub Pages builds](https://docs.github.com/rest/pages/pages#list-github-pages-builds) itself. */
-      build: {
-        commit: string | null;
-        created_at: string;
-        duration: number;
-        error: {
-          message: string | null;
-        };
-        /** User */
-        pusher: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        status: string;
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      id: number;
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** personal_access_token_request approved event */
-    "webhook-personal-access-token-request-approved": {
-      /** @enum {string} */
-      action: "approved";
-      personal_access_token_request: components["schemas"]["personal-access-token-request"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      installation: components["schemas"]["simple-installation"];
-    };
-    /** personal_access_token_request cancelled event */
-    "webhook-personal-access-token-request-cancelled": {
-      /** @enum {string} */
-      action: "cancelled";
-      personal_access_token_request: components["schemas"]["personal-access-token-request"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      installation: components["schemas"]["simple-installation"];
-    };
-    /** personal_access_token_request created event */
-    "webhook-personal-access-token-request-created": {
-      /** @enum {string} */
-      action: "created";
-      personal_access_token_request: components["schemas"]["personal-access-token-request"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      installation: components["schemas"]["simple-installation"];
-    };
-    /** personal_access_token_request denied event */
-    "webhook-personal-access-token-request-denied": {
-      /** @enum {string} */
-      action: "denied";
-      personal_access_token_request: components["schemas"]["personal-access-token-request"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      installation: components["schemas"]["simple-installation"];
-    };
-    "webhook-ping": {
-      /**
-       * Webhook
-       * @description The webhook that is being pinged
-       */
-      hook?: {
-        /** @description Determines whether the hook is actually triggered for the events it subscribes to. */
-        active: boolean;
-        /** @description Only included for GitHub Apps. When you register a new GitHub App, GitHub sends a ping event to the webhook URL you specified during registration. The GitHub App ID sent in this field is required for authenticating an app. */
-        app_id?: number;
-        config: {
-          content_type?: components["schemas"]["webhook-config-content-type"];
-          insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"];
-          secret?: components["schemas"]["webhook-config-secret"];
-          url?: components["schemas"]["webhook-config-url"];
-        };
-        /** Format: date-time */
-        created_at: string;
-        /** Format: uri */
-        deliveries_url?: string;
-        /** @description Determines what events the hook is triggered for. Default: ['push']. */
-        events: string[];
-        /** @description Unique identifier of the webhook. */
-        id: number;
-        last_response?: components["schemas"]["hook-response"];
-        /**
-         * @description The type of webhook. The only valid value is 'web'.
-         * @enum {string}
-         */
-        name: "web";
-        /** Format: uri */
-        ping_url?: string;
-        /** Format: uri */
-        test_url?: string;
-        type: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url?: string;
-      };
-      /** @description The ID of the webhook that triggered the ping. */
-      hook_id?: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-      /** @description Random string of GitHub zen. */
-      zen?: string;
-    };
-    /** @description The webhooks ping payload encoded with URL encoding. */
-    "webhook-ping-form-encoded": {
-      /** @description A URL-encoded string of the ping JSON payload. The decoded payload is a JSON object. */
-      payload: string;
-    };
-    /** project_card converted event */
-    "webhook-project-card-converted": {
-      /** @enum {string} */
-      action: "converted";
-      changes: {
-        note: {
-          from: string;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project Card */
-      project_card: {
-        after_id?: number | null;
-        /** @description Whether or not the card is archived */
-        archived: boolean;
-        column_id: number;
-        /** Format: uri */
-        column_url: string;
-        /** Format: uri */
-        content_url?: string;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** @description The project card's ID */
-        id: number;
-        node_id: string;
-        note: string | null;
-        /** Format: uri */
-        project_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project_card created event */
-    "webhook-project-card-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project Card */
-      project_card: {
-        after_id?: number | null;
-        /** @description Whether or not the card is archived */
-        archived: boolean;
-        column_id: number;
-        /** Format: uri */
-        column_url: string;
-        /** Format: uri */
-        content_url?: string;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** @description The project card's ID */
-        id: number;
-        node_id: string;
-        note: string | null;
-        /** Format: uri */
-        project_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project_card deleted event */
-    "webhook-project-card-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project Card */
-      project_card: {
-        after_id?: number | null;
-        /** @description Whether or not the card is archived */
-        archived: boolean;
-        column_id: number | null;
-        /** Format: uri */
-        column_url: string;
-        /** Format: uri */
-        content_url?: string;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** @description The project card's ID */
-        id: number;
-        node_id: string;
-        note: string | null;
-        /** Format: uri */
-        project_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["nullable-repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project_card edited event */
-    "webhook-project-card-edited": {
-      /** @enum {string} */
-      action: "edited";
-      changes: {
-        note: {
-          from: string | null;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project Card */
-      project_card: {
-        after_id?: number | null;
-        /** @description Whether or not the card is archived */
-        archived: boolean;
-        column_id: number;
-        /** Format: uri */
-        column_url: string;
-        /** Format: uri */
-        content_url?: string;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** @description The project card's ID */
-        id: number;
-        node_id: string;
-        note: string | null;
-        /** Format: uri */
-        project_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project_card moved event */
-    "webhook-project-card-moved": {
-      /** @enum {string} */
-      action: "moved";
-      changes?: {
-        column_id: {
-          from: number;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      project_card: {
-        after_id?: number | null;
-        /** @description Whether or not the card is archived */
-        archived: boolean;
-        column_id: number;
-        /** Format: uri */
-        column_url: string;
-        /** Format: uri */
-        content_url?: string;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** @description The project card's ID */
-        id: number;
-        node_id: string;
-        note: string | null;
-        /** Format: uri */
-        project_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      } & {
-        after_id: number | null;
-        archived?: boolean;
-        column_id?: number;
-        column_url?: string;
-        created_at?: string;
-        creator?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        } | null;
-        id?: number;
-        node_id?: string;
-        note?: string | null;
-        project_url?: string;
-        updated_at?: string;
-        url?: string;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project closed event */
-    "webhook-project-closed": {
-      /** @enum {string} */
-      action: "closed";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project */
-      project: {
-        /** @description Body of the project */
-        body: string | null;
-        /** Format: uri */
-        columns_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** @description Name of the project */
-        name: string;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        owner_url: string;
-        /**
-         * @description State of the project; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project_column created event */
-    "webhook-project-column-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project Column */
-      project_column: {
-        after_id?: number | null;
-        /** Format: uri */
-        cards_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** @description The unique identifier of the project column */
-        id: number;
-        /** @description Name of the project column */
-        name: string;
-        node_id: string;
-        /** Format: uri */
-        project_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project_column deleted event */
-    "webhook-project-column-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project Column */
-      project_column: {
-        after_id?: number | null;
-        /** Format: uri */
-        cards_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** @description The unique identifier of the project column */
-        id: number;
-        /** @description Name of the project column */
-        name: string;
-        node_id: string;
-        /** Format: uri */
-        project_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["nullable-repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project_column edited event */
-    "webhook-project-column-edited": {
-      /** @enum {string} */
-      action: "edited";
-      changes: {
-        name?: {
-          from: string;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project Column */
-      project_column: {
-        after_id?: number | null;
-        /** Format: uri */
-        cards_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** @description The unique identifier of the project column */
-        id: number;
-        /** @description Name of the project column */
-        name: string;
-        node_id: string;
-        /** Format: uri */
-        project_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project_column moved event */
-    "webhook-project-column-moved": {
-      /** @enum {string} */
-      action: "moved";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project Column */
-      project_column: {
-        after_id?: number | null;
-        /** Format: uri */
-        cards_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** @description The unique identifier of the project column */
-        id: number;
-        /** @description Name of the project column */
-        name: string;
-        node_id: string;
-        /** Format: uri */
-        project_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project created event */
-    "webhook-project-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project */
-      project: {
-        /** @description Body of the project */
-        body: string | null;
-        /** Format: uri */
-        columns_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** @description Name of the project */
-        name: string;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        owner_url: string;
-        /**
-         * @description State of the project; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project deleted event */
-    "webhook-project-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project */
-      project: {
-        /** @description Body of the project */
-        body: string | null;
-        /** Format: uri */
-        columns_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** @description Name of the project */
-        name: string;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        owner_url: string;
-        /**
-         * @description State of the project; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["nullable-repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project edited event */
-    "webhook-project-edited": {
-      /** @enum {string} */
-      action: "edited";
-      /** @description The changes to the project if the action was `edited`. */
-      changes?: {
-        body?: {
-          /** @description The previous version of the body if the action was `edited`. */
-          from: string;
-        };
-        name?: {
-          /** @description The changes to the project if the action was `edited`. */
-          from: string;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project */
-      project: {
-        /** @description Body of the project */
-        body: string | null;
-        /** Format: uri */
-        columns_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** @description Name of the project */
-        name: string;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        owner_url: string;
-        /**
-         * @description State of the project; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** project reopened event */
-    "webhook-project-reopened": {
-      /** @enum {string} */
-      action: "reopened";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Project */
-      project: {
-        /** @description Body of the project */
-        body: string | null;
-        /** Format: uri */
-        columns_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** User */
-        creator: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** @description Name of the project */
-        name: string;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        owner_url: string;
-        /**
-         * @description State of the project; either 'open' or 'closed'
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Projects v2 Project Closed Event */
-    "webhook-projects-v2-project-closed": {
-      /** @enum {string} */
-      action: "closed";
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      projects_v2: components["schemas"]["projects-v2"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** @description A project was created */
-    "webhook-projects-v2-project-created": {
-      /** @enum {string} */
-      action: "created";
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      projects_v2: components["schemas"]["projects-v2"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Projects v2 Project Deleted Event */
-    "webhook-projects-v2-project-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      projects_v2: components["schemas"]["projects-v2"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Projects v2 Project Edited Event */
-    "webhook-projects-v2-project-edited": {
-      /** @enum {string} */
-      action: "edited";
-      changes: {
-        description?: {
-          from?: string | null;
-          to?: string | null;
-        };
-        public?: {
-          from?: boolean;
-          to?: boolean;
-        };
-        short_description?: {
-          from?: string | null;
-          to?: string | null;
-        };
-        title?: {
-          from?: string;
-          to?: string;
-        };
-      };
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      projects_v2: components["schemas"]["projects-v2"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Projects v2 Item Archived Event */
-    "webhook-projects-v2-item-archived": {
-      /** @enum {string} */
-      action: "archived";
-      changes: {
-        archived_at?: {
-          /** Format: date-time */
-          from?: string | null;
-          /** Format: date-time */
-          to?: string | null;
-        };
-      };
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      projects_v2_item: components["schemas"]["projects-v2-item"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Projects v2 Item Converted Event */
-    "webhook-projects-v2-item-converted": {
-      /** @enum {string} */
-      action: "converted";
-      changes: {
-        content_type?: {
-          from?: string | null;
-          to?: string;
-        };
-      };
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      projects_v2_item: components["schemas"]["projects-v2-item"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Projects v2 Item Created Event */
-    "webhook-projects-v2-item-created": {
-      /** @enum {string} */
-      action: "created";
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      projects_v2_item: components["schemas"]["projects-v2-item"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Projects v2 Item Deleted Event */
-    "webhook-projects-v2-item-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      projects_v2_item: components["schemas"]["projects-v2-item"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Projects v2 Item Edited Event */
-    "webhook-projects-v2-item-edited": {
-      /** @enum {string} */
-      action: "edited";
-      changes?: OneOf<
-        [
-          {
-            field_value: {
-              field_node_id?: string;
-              field_type?: string;
-            };
-          },
-          {
-            body: {
-              from?: string | null;
-              to?: string | null;
-            };
-          },
-        ]
-      >;
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      projects_v2_item: components["schemas"]["projects-v2-item"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Projects v2 Item Reordered Event */
-    "webhook-projects-v2-item-reordered": {
-      /** @enum {string} */
-      action: "reordered";
-      changes: {
-        previous_projects_v2_item_node_id?: {
-          from?: string | null;
-          to?: string | null;
-        };
-      };
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      projects_v2_item: components["schemas"]["projects-v2-item"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Projects v2 Item Restored Event */
-    "webhook-projects-v2-item-restored": {
-      /** @enum {string} */
-      action: "restored";
-      changes: {
-        archived_at?: {
-          /** Format: date-time */
-          from?: string | null;
-          /** Format: date-time */
-          to?: string | null;
-        };
-      };
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      projects_v2_item: components["schemas"]["projects-v2-item"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Projects v2 Project Reopened Event */
-    "webhook-projects-v2-project-reopened": {
-      /** @enum {string} */
-      action: "reopened";
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      projects_v2: components["schemas"]["projects-v2"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** public event */
-    "webhook-public": {
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request assigned event */
-    "webhook-pull-request-assigned": {
-      /** @enum {string} */
-      action: "assigned";
-      /** User */
-      assignee: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string | null;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request auto_merge_disabled event */
-    "webhook-pull-request-auto-merge-disabled": {
-      /** @enum {string} */
-      action: "auto_merge_disabled";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      reason: string;
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request auto_merge_enabled event */
-    "webhook-pull-request-auto-merge-enabled": {
-      /** @enum {string} */
-      action: "auto_merge_enabled";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      reason?: string;
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request closed event */
-    "webhook-pull-request-closed": {
-      /** @enum {string} */
-      action: "closed";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      pull_request: components["schemas"]["pull-request"] & {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow updating the pull request's branch. */
-        allow_update_branch?: boolean;
-        /**
-         * @description Whether to delete head branches when pull requests are merged.
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /**
-         * @description The default value for a merge commit message.
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `PR_BODY` - default to the pull request's body.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-        /**
-         * @description The default value for a merge commit title.
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., "Merge pull request #123 from branch-name").
-         * @enum {string}
-         */
-        merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-        /**
-         * @description The default value for a squash merge commit message:
-         * - `PR_BODY` - default to the pull request's body.
-         * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-        /**
-         * @description The default value for a squash merge commit title:
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-         * @enum {string}
-         */
-        squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-        /**
-         * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.**
-         * @default false
-         */
-        use_squash_pr_title_as_default?: boolean;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request converted_to_draft event */
-    "webhook-pull-request-converted-to-draft": {
-      /** @enum {string} */
-      action: "converted_to_draft";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      pull_request: components["schemas"]["pull-request"] & {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow updating the pull request's branch. */
-        allow_update_branch?: boolean;
-        /**
-         * @description Whether to delete head branches when pull requests are merged.
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /**
-         * @description The default value for a merge commit message.
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `PR_BODY` - default to the pull request's body.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-        /**
-         * @description The default value for a merge commit title.
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., "Merge pull request #123 from branch-name").
-         * @enum {string}
-         */
-        merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-        /**
-         * @description The default value for a squash merge commit message:
-         * - `PR_BODY` - default to the pull request's body.
-         * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-        /**
-         * @description The default value for a squash merge commit title:
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-         * @enum {string}
-         */
-        squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-        /**
-         * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.**
-         * @default false
-         */
-        use_squash_pr_title_as_default?: boolean;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request demilestoned event */
-    "webhook-pull-request-demilestoned": {
-      /** @enum {string} */
-      action: "demilestoned";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      milestone?: components["schemas"]["milestone"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description?: string | null;
-              /** Format: uri */
-              html_url?: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url?: string;
-              /** @description Name of the team */
-              name: string;
-              node_id?: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission?: string;
-              /** @enum {string} */
-              privacy?: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url?: string;
-              slug?: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url?: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request dequeued event */
-    "webhook-pull-request-dequeued": {
-      /** @enum {string} */
-      action: "dequeued";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description?: string | null;
-              /** Format: uri */
-              html_url?: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url?: string;
-              /** @description Name of the team */
-              name: string;
-              node_id?: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission?: string;
-              /** @enum {string} */
-              privacy?: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url?: string;
-              slug?: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url?: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      reason: string;
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request edited event */
-    "webhook-pull-request-edited": {
-      /** @enum {string} */
-      action: "edited";
-      /** @description The changes to the comment if the action was `edited`. */
-      changes: {
-        base?: {
-          ref: {
-            from: string;
-          };
-          sha: {
-            from: string;
-          };
-        };
-        body?: {
-          /** @description The previous version of the body if the action was `edited`. */
-          from: string;
-        };
-        title?: {
-          /** @description The previous version of the title if the action was `edited`. */
-          from: string;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      pull_request: components["schemas"]["pull-request"] & {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow updating the pull request's branch. */
-        allow_update_branch?: boolean;
-        /**
-         * @description Whether to delete head branches when pull requests are merged.
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /**
-         * @description The default value for a merge commit message.
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `PR_BODY` - default to the pull request's body.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-        /**
-         * @description The default value for a merge commit title.
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., "Merge pull request #123 from branch-name").
-         * @enum {string}
-         */
-        merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-        /**
-         * @description The default value for a squash merge commit message:
-         * - `PR_BODY` - default to the pull request's body.
-         * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-        /**
-         * @description The default value for a squash merge commit title:
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-         * @enum {string}
-         */
-        squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-        /**
-         * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-         * @default false
-         */
-        use_squash_pr_title_as_default?: boolean;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request enqueued event */
-    "webhook-pull-request-enqueued": {
-      /** @enum {string} */
-      action: "enqueued";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description?: string | null;
-              /** Format: uri */
-              html_url?: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url?: string;
-              /** @description Name of the team */
-              name: string;
-              node_id?: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission?: string;
-              /** @enum {string} */
-              privacy?: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url?: string;
-              slug?: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url?: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request labeled event */
-    "webhook-pull-request-labeled": {
-      /** @enum {string} */
-      action: "labeled";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** Label */
-      label?: {
-        /** @description 6-character hex code, without the leading #, identifying the color */
-        color: string;
-        default: boolean;
-        description: string | null;
-        id: number;
-        /** @description The name of the label. */
-        name: string;
-        node_id: string;
-        /**
-         * Format: uri
-         * @description URL for the label
-         */
-        url: string;
-      };
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string | null;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request locked event */
-    "webhook-pull-request-locked": {
-      /** @enum {string} */
-      action: "locked";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string | null;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request milestoned event */
-    "webhook-pull-request-milestoned": {
-      /** @enum {string} */
-      action: "milestoned";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      milestone?: components["schemas"]["milestone"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description?: string | null;
-              /** Format: uri */
-              html_url?: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url?: string;
-              /** @description Name of the team */
-              name: string;
-              node_id?: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission?: string;
-              /** @enum {string} */
-              privacy?: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url?: string;
-              slug?: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url?: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request opened event */
-    "webhook-pull-request-opened": {
-      /** @enum {string} */
-      action: "opened";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      pull_request: components["schemas"]["pull-request"] & {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow updating the pull request's branch. */
-        allow_update_branch?: boolean;
-        /**
-         * @description Whether to delete head branches when pull requests are merged.
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /**
-         * @description The default value for a merge commit message.
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `PR_BODY` - default to the pull request's body.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-        /**
-         * @description The default value for a merge commit title.
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-         * @enum {string}
-         */
-        merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-        /**
-         * @description The default value for a squash merge commit message:
-         * - `PR_BODY` - default to the pull request's body.
-         * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-        /**
-         * @description The default value for a squash merge commit title:
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-         * @enum {string}
-         */
-        squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-        /**
-         * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.**
-         * @default false
-         */
-        use_squash_pr_title_as_default?: boolean;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request ready_for_review event */
-    "webhook-pull-request-ready-for-review": {
-      /** @enum {string} */
-      action: "ready_for_review";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      pull_request: components["schemas"]["pull-request"] & {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow updating the pull request's branch. */
-        allow_update_branch?: boolean;
-        /**
-         * @description Whether to delete head branches when pull requests are merged.
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /**
-         * @description The default value for a merge commit message.
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `PR_BODY` - default to the pull request's body.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-        /**
-         * @description The default value for a merge commit title.
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., "Merge pull request #123 from branch-name").
-         * @enum {string}
-         */
-        merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-        /**
-         * @description The default value for a squash merge commit message:
-         * - `PR_BODY` - default to the pull request's body.
-         * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-        /**
-         * @description The default value for a squash merge commit title:
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-         * @enum {string}
-         */
-        squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-        /**
-         * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.**
-         * @default false
-         */
-        use_squash_pr_title_as_default?: boolean;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request reopened event */
-    "webhook-pull-request-reopened": {
-      /** @enum {string} */
-      action: "reopened";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      pull_request: components["schemas"]["pull-request"] & {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow updating the pull request's branch. */
-        allow_update_branch?: boolean;
-        /**
-         * @description Whether to delete head branches when pull requests are merged.
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /**
-         * @description The default value for a merge commit message.
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `PR_BODY` - default to the pull request's body.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-        /**
-         * @description The default value for a merge commit title.
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., "Merge pull request #123 from branch-name").
-         * @enum {string}
-         */
-        merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-        /**
-         * @description The default value for a squash merge commit message:
-         * - `PR_BODY` - default to the pull request's body.
-         * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-         * - `BLANK` - default to a blank commit message.
-         * @enum {string}
-         */
-        squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-        /**
-         * @description The default value for a squash merge commit title:
-         * - `PR_TITLE` - default to the pull request's title.
-         * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-         * @enum {string}
-         */
-        squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-        /**
-         * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.**
-         * @default false
-         */
-        use_squash_pr_title_as_default?: boolean;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request_review_comment created event */
-    "webhook-pull-request-review-comment-created": {
-      /** @enum {string} */
-      action: "created";
-      /**
-       * Pull Request Review Comment
-       * @description The [comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request) itself.
-       */
-      comment: {
-        _links: {
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          pull_request: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description The text of the comment. */
-        body: string;
-        /** @description The SHA of the commit to which the comment applies. */
-        commit_id: string;
-        /** Format: date-time */
-        created_at: string;
-        /** @description The diff of the line that the comment refers to. */
-        diff_hunk: string;
-        /**
-         * Format: uri
-         * @description HTML URL for the pull request review comment.
-         */
-        html_url: string;
-        /** @description The ID of the pull request review comment. */
-        id: number;
-        /** @description The comment ID to reply to. */
-        in_reply_to_id?: number;
-        /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */
-        line: number | null;
-        /** @description The node ID of the pull request review comment. */
-        node_id: string;
-        /** @description The SHA of the original commit to which the comment applies. */
-        original_commit_id: string;
-        /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */
-        original_line: number | null;
-        /** @description The index of the original line in the diff to which the comment applies. */
-        original_position: number;
-        /** @description The first line of the range for a multi-line comment. */
-        original_start_line: number | null;
-        /** @description The relative path of the file to which the comment applies. */
-        path: string;
-        /** @description The line index in the diff to which the comment applies. */
-        position: number | null;
-        /** @description The ID of the pull request review to which the comment belongs. */
-        pull_request_review_id: number | null;
-        /**
-         * Format: uri
-         * @description URL for the pull request that the review comment belongs to.
-         */
-        pull_request_url: string;
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /**
-         * @description The side of the first line of the range for a multi-line comment.
-         * @enum {string}
-         */
-        side: "LEFT" | "RIGHT";
-        /** @description The first line of the range for a multi-line comment. */
-        start_line: number | null;
-        /**
-         * @description The side of the first line of the range for a multi-line comment.
-         * @default RIGHT
-         * @enum {string|null}
-         */
-        start_side: "LEFT" | "RIGHT" | null;
-        /**
-         * @description The level at which the comment is targeted, can be a diff line or a file.
-         * @enum {string}
-         */
-        subject_type?: "line" | "file";
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the pull request review comment
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge?: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        closed_at: string | null;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: uri */
-        commits_url: string;
-        created_at: string;
-        /** Format: uri */
-        diff_url: string;
-        draft?: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions?: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        merge_commit_sha: string | null;
-        merged_at: string | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        /** Format: uri */
-        review_comments_url: string;
-        /** @enum {string} */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        title: string;
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request_review_comment deleted event */
-    "webhook-pull-request-review-comment-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      /**
-       * Pull Request Review Comment
-       * @description The [comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request) itself.
-       */
-      comment: {
-        _links: {
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          pull_request: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description The text of the comment. */
-        body: string;
-        /** @description The SHA of the commit to which the comment applies. */
-        commit_id: string;
-        /** Format: date-time */
-        created_at: string;
-        /** @description The diff of the line that the comment refers to. */
-        diff_hunk: string;
-        /**
-         * Format: uri
-         * @description HTML URL for the pull request review comment.
-         */
-        html_url: string;
-        /** @description The ID of the pull request review comment. */
-        id: number;
-        /** @description The comment ID to reply to. */
-        in_reply_to_id?: number;
-        /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */
-        line: number | null;
-        /** @description The node ID of the pull request review comment. */
-        node_id: string;
-        /** @description The SHA of the original commit to which the comment applies. */
-        original_commit_id: string;
-        /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */
-        original_line: number;
-        /** @description The index of the original line in the diff to which the comment applies. */
-        original_position: number;
-        /** @description The first line of the range for a multi-line comment. */
-        original_start_line: number | null;
-        /** @description The relative path of the file to which the comment applies. */
-        path: string;
-        /** @description The line index in the diff to which the comment applies. */
-        position: number | null;
-        /** @description The ID of the pull request review to which the comment belongs. */
-        pull_request_review_id: number | null;
-        /**
-         * Format: uri
-         * @description URL for the pull request that the review comment belongs to.
-         */
-        pull_request_url: string;
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /**
-         * @description The side of the first line of the range for a multi-line comment.
-         * @enum {string}
-         */
-        side: "LEFT" | "RIGHT";
-        /** @description The first line of the range for a multi-line comment. */
-        start_line: number | null;
-        /**
-         * @description The side of the first line of the range for a multi-line comment.
-         * @default RIGHT
-         * @enum {string|null}
-         */
-        start_side: "LEFT" | "RIGHT" | null;
-        /**
-         * @description The level at which the comment is targeted, can be a diff line or a file.
-         * @enum {string}
-         */
-        subject_type?: "line" | "file";
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the pull request review comment
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge?: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        closed_at: string | null;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: uri */
-        commits_url: string;
-        created_at: string;
-        /** Format: uri */
-        diff_url: string;
-        draft?: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        merge_commit_sha: string | null;
-        merged_at: string | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description?: string | null;
-              /** Format: uri */
-              html_url?: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url?: string;
-              /** @description Name of the team */
-              name: string;
-              node_id?: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission?: string;
-              /** @enum {string} */
-              privacy?: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url?: string;
-              slug?: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url?: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        /** Format: uri */
-        review_comments_url: string;
-        /** @enum {string} */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        title: string;
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request_review_comment edited event */
-    "webhook-pull-request-review-comment-edited": {
-      /** @enum {string} */
-      action: "edited";
-      /** @description The changes to the comment. */
-      changes: {
-        body?: {
-          /** @description The previous version of the body. */
-          from: string;
-        };
-      };
-      /**
-       * Pull Request Review Comment
-       * @description The [comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request) itself.
-       */
-      comment: {
-        _links: {
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          pull_request: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description The text of the comment. */
-        body: string;
-        /** @description The SHA of the commit to which the comment applies. */
-        commit_id: string;
-        /** Format: date-time */
-        created_at: string;
-        /** @description The diff of the line that the comment refers to. */
-        diff_hunk: string;
-        /**
-         * Format: uri
-         * @description HTML URL for the pull request review comment.
-         */
-        html_url: string;
-        /** @description The ID of the pull request review comment. */
-        id: number;
-        /** @description The comment ID to reply to. */
-        in_reply_to_id?: number;
-        /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */
-        line: number | null;
-        /** @description The node ID of the pull request review comment. */
-        node_id: string;
-        /** @description The SHA of the original commit to which the comment applies. */
-        original_commit_id: string;
-        /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */
-        original_line: number;
-        /** @description The index of the original line in the diff to which the comment applies. */
-        original_position: number;
-        /** @description The first line of the range for a multi-line comment. */
-        original_start_line: number | null;
-        /** @description The relative path of the file to which the comment applies. */
-        path: string;
-        /** @description The line index in the diff to which the comment applies. */
-        position: number | null;
-        /** @description The ID of the pull request review to which the comment belongs. */
-        pull_request_review_id: number | null;
-        /**
-         * Format: uri
-         * @description URL for the pull request that the review comment belongs to.
-         */
-        pull_request_url: string;
-        /** Reactions */
-        reactions: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /**
-         * @description The side of the first line of the range for a multi-line comment.
-         * @enum {string}
-         */
-        side: "LEFT" | "RIGHT";
-        /** @description The first line of the range for a multi-line comment. */
-        start_line: number | null;
-        /**
-         * @description The side of the first line of the range for a multi-line comment.
-         * @default RIGHT
-         * @enum {string|null}
-         */
-        start_side: "LEFT" | "RIGHT" | null;
-        /**
-         * @description The level at which the comment is targeted, can be a diff line or a file.
-         * @enum {string}
-         */
-        subject_type?: "line" | "file";
-        /** Format: date-time */
-        updated_at: string;
-        /**
-         * Format: uri
-         * @description URL for the pull request review comment
-         */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge?: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        closed_at: string | null;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: uri */
-        commits_url: string;
-        created_at: string;
-        /** Format: uri */
-        diff_url: string;
-        draft?: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        merge_commit_sha: string | null;
-        merged_at: string | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description?: string | null;
-              /** Format: uri */
-              html_url?: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url?: string;
-              /** @description Name of the team */
-              name: string;
-              node_id?: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission?: string;
-              /** @enum {string} */
-              privacy?: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url?: string;
-              slug?: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url?: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        /** Format: uri */
-        review_comments_url: string;
-        /** @enum {string} */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        title: string;
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request_review dismissed event */
-    "webhook-pull-request-review-dismissed": {
-      /** @enum {string} */
-      action: "dismissed";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Simple Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        closed_at: string | null;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: uri */
-        commits_url: string;
-        created_at: string;
-        /** Format: uri */
-        diff_url: string;
-        draft: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        merge_commit_sha: string | null;
-        merged_at: string | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        /** Format: uri */
-        review_comments_url: string;
-        /** @enum {string} */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        title: string;
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      /** @description The review that was affected. */
-      review: {
-        _links: {
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          pull_request: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description The text of the review. */
-        body: string | null;
-        /** @description A commit SHA for the review. */
-        commit_id: string;
-        /** Format: uri */
-        html_url: string;
-        /** @description Unique identifier of the review */
-        id: number;
-        node_id: string;
-        /** Format: uri */
-        pull_request_url: string;
-        /** @enum {string} */
-        state: "dismissed" | "approved" | "changes_requested";
-        /** Format: date-time */
-        submitted_at: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request_review edited event */
-    "webhook-pull-request-review-edited": {
-      /** @enum {string} */
-      action: "edited";
-      changes: {
-        body?: {
-          /** @description The previous version of the body if the action was `edited`. */
-          from: string;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Simple Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        closed_at: string | null;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: uri */
-        commits_url: string;
-        created_at: string;
-        /** Format: uri */
-        diff_url: string;
-        draft: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        merge_commit_sha: string | null;
-        merged_at: string | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        /** Format: uri */
-        review_comments_url: string;
-        /** @enum {string} */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        title: string;
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      /** @description The review that was affected. */
-      review: {
-        _links: {
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          pull_request: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description The text of the review. */
-        body: string | null;
-        /** @description A commit SHA for the review. */
-        commit_id: string;
-        /** Format: uri */
-        html_url: string;
-        /** @description Unique identifier of the review */
-        id: number;
-        node_id: string;
-        /** Format: uri */
-        pull_request_url: string;
-        state: string;
-        /** Format: date-time */
-        submitted_at: string | null;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request review_request_removed event */
-    "webhook-pull-request-review-request-removed": OneOf<
-      [
-        {
-          /** @enum {string} */
-          action: "review_request_removed";
-          enterprise?: components["schemas"]["enterprise-webhooks"];
-          installation?: components["schemas"]["simple-installation"];
-          /** @description The pull request number. */
-          number: number;
-          organization?: components["schemas"]["organization-simple-webhooks"];
-          /** Pull Request */
-          pull_request: {
-            _links: {
-              /** Link */
-              comments: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              commits: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              html: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              issue: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              review_comment: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              review_comments: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              self: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              statuses: {
-                /** Format: uri-template */
-                href: string;
-              };
-            };
-            /** @enum {string|null} */
-            active_lock_reason:
-              | "resolved"
-              | "off-topic"
-              | "too heated"
-              | "spam"
-              | null;
-            additions?: number;
-            /** User */
-            assignee: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            assignees: ({
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null)[];
-            /**
-             * AuthorAssociation
-             * @description How the author is associated with the repository.
-             * @enum {string}
-             */
-            author_association:
-              | "COLLABORATOR"
-              | "CONTRIBUTOR"
-              | "FIRST_TIMER"
-              | "FIRST_TIME_CONTRIBUTOR"
-              | "MANNEQUIN"
-              | "MEMBER"
-              | "NONE"
-              | "OWNER";
-            /**
-             * PullRequestAutoMerge
-             * @description The status of auto merging a pull request.
-             */
-            auto_merge: {
-              /** @description Commit message for the merge commit. */
-              commit_message: string | null;
-              /** @description Title for the merge commit message. */
-              commit_title: string | null;
-              /** User */
-              enabled_by: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-              /**
-               * @description The merge method to use.
-               * @enum {string}
-               */
-              merge_method: "merge" | "squash" | "rebase";
-            } | null;
-            base: {
-              label: string;
-              ref: string;
-              /**
-               * Repository
-               * @description A git repository
-               */
-              repo: {
-                /**
-                 * @description Whether to allow auto-merge for pull requests.
-                 * @default false
-                 */
-                allow_auto_merge?: boolean;
-                /** @description Whether to allow private forks */
-                allow_forking?: boolean;
-                /**
-                 * @description Whether to allow merge commits for pull requests.
-                 * @default true
-                 */
-                allow_merge_commit?: boolean;
-                /**
-                 * @description Whether to allow rebase merges for pull requests.
-                 * @default true
-                 */
-                allow_rebase_merge?: boolean;
-                /**
-                 * @description Whether to allow squash merges for pull requests.
-                 * @default true
-                 */
-                allow_squash_merge?: boolean;
-                allow_update_branch?: boolean;
-                /** Format: uri-template */
-                archive_url: string;
-                /**
-                 * @description Whether the repository is archived.
-                 * @default false
-                 */
-                archived: boolean;
-                /** Format: uri-template */
-                assignees_url: string;
-                /** Format: uri-template */
-                blobs_url: string;
-                /** Format: uri-template */
-                branches_url: string;
-                /** Format: uri */
-                clone_url: string;
-                /** Format: uri-template */
-                collaborators_url: string;
-                /** Format: uri-template */
-                comments_url: string;
-                /** Format: uri-template */
-                commits_url: string;
-                /** Format: uri-template */
-                compare_url: string;
-                /** Format: uri-template */
-                contents_url: string;
-                /** Format: uri */
-                contributors_url: string;
-                created_at: number | string;
-                /** @description The default branch of the repository. */
-                default_branch: string;
-                /**
-                 * @description Whether to delete head branches when pull requests are merged
-                 * @default false
-                 */
-                delete_branch_on_merge?: boolean;
-                /** Format: uri */
-                deployments_url: string;
-                description: string | null;
-                /** @description Returns whether or not this repository is disabled. */
-                disabled?: boolean;
-                /** Format: uri */
-                downloads_url: string;
-                /** Format: uri */
-                events_url: string;
-                fork: boolean;
-                forks: number;
-                forks_count: number;
-                /** Format: uri */
-                forks_url: string;
-                full_name: string;
-                /** Format: uri-template */
-                git_commits_url: string;
-                /** Format: uri-template */
-                git_refs_url: string;
-                /** Format: uri-template */
-                git_tags_url: string;
-                /** Format: uri */
-                git_url: string;
-                /**
-                 * @description Whether downloads are enabled.
-                 * @default true
-                 */
-                has_downloads: boolean;
-                /**
-                 * @description Whether issues are enabled.
-                 * @default true
-                 */
-                has_issues: boolean;
-                has_pages: boolean;
-                /**
-                 * @description Whether projects are enabled.
-                 * @default true
-                 */
-                has_projects: boolean;
-                /**
-                 * @description Whether the wiki is enabled.
-                 * @default true
-                 */
-                has_wiki: boolean;
-                /**
-                 * @description Whether discussions are enabled.
-                 * @default false
-                 */
-                has_discussions: boolean;
-                homepage: string | null;
-                /** Format: uri */
-                hooks_url: string;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the repository */
-                id: number;
-                is_template?: boolean;
-                /** Format: uri-template */
-                issue_comment_url: string;
-                /** Format: uri-template */
-                issue_events_url: string;
-                /** Format: uri-template */
-                issues_url: string;
-                /** Format: uri-template */
-                keys_url: string;
-                /** Format: uri-template */
-                labels_url: string;
-                language: string | null;
-                /** Format: uri */
-                languages_url: string;
-                /** License */
-                license: {
-                  key: string;
-                  name: string;
-                  node_id: string;
-                  spdx_id: string;
-                  /** Format: uri */
-                  url: string | null;
-                } | null;
-                master_branch?: string;
-                /**
-                 * @description The default value for a merge commit message.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-                /**
-                 * @description The default value for a merge commit title.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-                 * @enum {string}
-                 */
-                merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-                /** Format: uri */
-                merges_url: string;
-                /** Format: uri-template */
-                milestones_url: string;
-                /** Format: uri */
-                mirror_url: string | null;
-                /** @description The name of the repository. */
-                name: string;
-                node_id: string;
-                /** Format: uri-template */
-                notifications_url: string;
-                open_issues: number;
-                open_issues_count: number;
-                organization?: string;
-                /** User */
-                owner: {
-                  /** Format: uri */
-                  avatar_url?: string;
-                  deleted?: boolean;
-                  email?: string | null;
-                  /** Format: uri-template */
-                  events_url?: string;
-                  /** Format: uri */
-                  followers_url?: string;
-                  /** Format: uri-template */
-                  following_url?: string;
-                  /** Format: uri-template */
-                  gists_url?: string;
-                  gravatar_id?: string;
-                  /** Format: uri */
-                  html_url?: string;
-                  id: number;
-                  login: string;
-                  name?: string;
-                  node_id?: string;
-                  /** Format: uri */
-                  organizations_url?: string;
-                  /** Format: uri */
-                  received_events_url?: string;
-                  /** Format: uri */
-                  repos_url?: string;
-                  site_admin?: boolean;
-                  /** Format: uri-template */
-                  starred_url?: string;
-                  /** Format: uri */
-                  subscriptions_url?: string;
-                  /** @enum {string} */
-                  type?: "Bot" | "User" | "Organization";
-                  /** Format: uri */
-                  url?: string;
-                } | null;
-                permissions?: {
-                  admin: boolean;
-                  maintain?: boolean;
-                  pull: boolean;
-                  push: boolean;
-                  triage?: boolean;
-                };
-                /** @description Whether the repository is private or public. */
-                private: boolean;
-                public?: boolean;
-                /** Format: uri-template */
-                pulls_url: string;
-                pushed_at: number | string | null;
-                /** Format: uri-template */
-                releases_url: string;
-                role_name?: string | null;
-                size: number;
-                /**
-                 * @description The default value for a squash merge commit message.
-                 * @enum {string}
-                 */
-                squash_merge_commit_message?:
-                  | "PR_BODY"
-                  | "COMMIT_MESSAGES"
-                  | "BLANK";
-                /**
-                 * @description The default value for a squash merge commit title.
-                 * @enum {string}
-                 */
-                squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-                ssh_url: string;
-                stargazers?: number;
-                stargazers_count: number;
-                /** Format: uri */
-                stargazers_url: string;
-                /** Format: uri-template */
-                statuses_url: string;
-                /** Format: uri */
-                subscribers_url: string;
-                /** Format: uri */
-                subscription_url: string;
-                /** Format: uri */
-                svn_url: string;
-                /** Format: uri */
-                tags_url: string;
-                /** Format: uri */
-                teams_url: string;
-                topics: string[];
-                /** Format: uri-template */
-                trees_url: string;
-                /** Format: date-time */
-                updated_at: string;
-                /** Format: uri */
-                url: string;
-                /**
-                 * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-                 * @default false
-                 */
-                use_squash_pr_title_as_default?: boolean;
-                /** @enum {string} */
-                visibility: "public" | "private" | "internal";
-                watchers: number;
-                watchers_count: number;
-                /** @description Whether to require contributors to sign off on web-based commits */
-                web_commit_signoff_required?: boolean;
-              };
-              sha: string;
-              /** User */
-              user: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-            };
-            body: string | null;
-            changed_files?: number;
-            /** Format: date-time */
-            closed_at: string | null;
-            comments?: number;
-            /** Format: uri */
-            comments_url: string;
-            commits?: number;
-            /** Format: uri */
-            commits_url: string;
-            /** Format: date-time */
-            created_at: string;
-            deletions?: number;
-            /** Format: uri */
-            diff_url: string;
-            /** @description Indicates whether or not the pull request is a draft. */
-            draft: boolean;
-            head: {
-              label: string;
-              ref: string;
-              /**
-               * Repository
-               * @description A git repository
-               */
-              repo: {
-                /**
-                 * @description Whether to allow auto-merge for pull requests.
-                 * @default false
-                 */
-                allow_auto_merge?: boolean;
-                /** @description Whether to allow private forks */
-                allow_forking?: boolean;
-                /**
-                 * @description Whether to allow merge commits for pull requests.
-                 * @default true
-                 */
-                allow_merge_commit?: boolean;
-                /**
-                 * @description Whether to allow rebase merges for pull requests.
-                 * @default true
-                 */
-                allow_rebase_merge?: boolean;
-                /**
-                 * @description Whether to allow squash merges for pull requests.
-                 * @default true
-                 */
-                allow_squash_merge?: boolean;
-                allow_update_branch?: boolean;
-                /** Format: uri-template */
-                archive_url: string;
-                /**
-                 * @description Whether the repository is archived.
-                 * @default false
-                 */
-                archived: boolean;
-                /** Format: uri-template */
-                assignees_url: string;
-                /** Format: uri-template */
-                blobs_url: string;
-                /** Format: uri-template */
-                branches_url: string;
-                /** Format: uri */
-                clone_url: string;
-                /** Format: uri-template */
-                collaborators_url: string;
-                /** Format: uri-template */
-                comments_url: string;
-                /** Format: uri-template */
-                commits_url: string;
-                /** Format: uri-template */
-                compare_url: string;
-                /** Format: uri-template */
-                contents_url: string;
-                /** Format: uri */
-                contributors_url: string;
-                created_at: number | string;
-                /** @description The default branch of the repository. */
-                default_branch: string;
-                /**
-                 * @description Whether to delete head branches when pull requests are merged
-                 * @default false
-                 */
-                delete_branch_on_merge?: boolean;
-                /** Format: uri */
-                deployments_url: string;
-                description: string | null;
-                /** @description Returns whether or not this repository is disabled. */
-                disabled?: boolean;
-                /** Format: uri */
-                downloads_url: string;
-                /** Format: uri */
-                events_url: string;
-                fork: boolean;
-                forks: number;
-                forks_count: number;
-                /** Format: uri */
-                forks_url: string;
-                full_name: string;
-                /** Format: uri-template */
-                git_commits_url: string;
-                /** Format: uri-template */
-                git_refs_url: string;
-                /** Format: uri-template */
-                git_tags_url: string;
-                /** Format: uri */
-                git_url: string;
-                /**
-                 * @description Whether downloads are enabled.
-                 * @default true
-                 */
-                has_downloads: boolean;
-                /**
-                 * @description Whether issues are enabled.
-                 * @default true
-                 */
-                has_issues: boolean;
-                has_pages: boolean;
-                /**
-                 * @description Whether projects are enabled.
-                 * @default true
-                 */
-                has_projects: boolean;
-                /**
-                 * @description Whether the wiki is enabled.
-                 * @default true
-                 */
-                has_wiki: boolean;
-                /**
-                 * @description Whether discussions are enabled.
-                 * @default false
-                 */
-                has_discussions: boolean;
-                homepage: string | null;
-                /** Format: uri */
-                hooks_url: string;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the repository */
-                id: number;
-                is_template?: boolean;
-                /** Format: uri-template */
-                issue_comment_url: string;
-                /** Format: uri-template */
-                issue_events_url: string;
-                /** Format: uri-template */
-                issues_url: string;
-                /** Format: uri-template */
-                keys_url: string;
-                /** Format: uri-template */
-                labels_url: string;
-                language: string | null;
-                /** Format: uri */
-                languages_url: string;
-                /** License */
-                license: {
-                  key: string;
-                  name: string;
-                  node_id: string;
-                  spdx_id: string;
-                  /** Format: uri */
-                  url: string | null;
-                } | null;
-                master_branch?: string;
-                /**
-                 * @description The default value for a merge commit message.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-                /**
-                 * @description The default value for a merge commit title.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-                 * @enum {string}
-                 */
-                merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-                /** Format: uri */
-                merges_url: string;
-                /** Format: uri-template */
-                milestones_url: string;
-                /** Format: uri */
-                mirror_url: string | null;
-                /** @description The name of the repository. */
-                name: string;
-                node_id: string;
-                /** Format: uri-template */
-                notifications_url: string;
-                open_issues: number;
-                open_issues_count: number;
-                organization?: string;
-                /** User */
-                owner: {
-                  /** Format: uri */
-                  avatar_url?: string;
-                  deleted?: boolean;
-                  email?: string | null;
-                  /** Format: uri-template */
-                  events_url?: string;
-                  /** Format: uri */
-                  followers_url?: string;
-                  /** Format: uri-template */
-                  following_url?: string;
-                  /** Format: uri-template */
-                  gists_url?: string;
-                  gravatar_id?: string;
-                  /** Format: uri */
-                  html_url?: string;
-                  id: number;
-                  login: string;
-                  name?: string;
-                  node_id?: string;
-                  /** Format: uri */
-                  organizations_url?: string;
-                  /** Format: uri */
-                  received_events_url?: string;
-                  /** Format: uri */
-                  repos_url?: string;
-                  site_admin?: boolean;
-                  /** Format: uri-template */
-                  starred_url?: string;
-                  /** Format: uri */
-                  subscriptions_url?: string;
-                  /** @enum {string} */
-                  type?: "Bot" | "User" | "Organization";
-                  /** Format: uri */
-                  url?: string;
-                } | null;
-                permissions?: {
-                  admin: boolean;
-                  maintain?: boolean;
-                  pull: boolean;
-                  push: boolean;
-                  triage?: boolean;
-                };
-                /** @description Whether the repository is private or public. */
-                private: boolean;
-                public?: boolean;
-                /** Format: uri-template */
-                pulls_url: string;
-                pushed_at: number | string | null;
-                /** Format: uri-template */
-                releases_url: string;
-                role_name?: string | null;
-                size: number;
-                /**
-                 * @description The default value for a squash merge commit message:
-                 *
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                squash_merge_commit_message?:
-                  | "PR_BODY"
-                  | "COMMIT_MESSAGES"
-                  | "BLANK";
-                /**
-                 * @description The default value for a squash merge commit title:
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-                 * @enum {string}
-                 */
-                squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-                ssh_url: string;
-                stargazers?: number;
-                stargazers_count: number;
-                /** Format: uri */
-                stargazers_url: string;
-                /** Format: uri-template */
-                statuses_url: string;
-                /** Format: uri */
-                subscribers_url: string;
-                /** Format: uri */
-                subscription_url: string;
-                /** Format: uri */
-                svn_url: string;
-                /** Format: uri */
-                tags_url: string;
-                /** Format: uri */
-                teams_url: string;
-                topics: string[];
-                /** Format: uri-template */
-                trees_url: string;
-                /** Format: date-time */
-                updated_at: string;
-                /** Format: uri */
-                url: string;
-                /**
-                 * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-                 * @default false
-                 */
-                use_squash_pr_title_as_default?: boolean;
-                /** @enum {string} */
-                visibility: "public" | "private" | "internal";
-                watchers: number;
-                watchers_count: number;
-                /** @description Whether to require contributors to sign off on web-based commits */
-                web_commit_signoff_required?: boolean;
-              };
-              sha: string;
-              /** User */
-              user: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-            };
-            /** Format: uri */
-            html_url: string;
-            id: number;
-            /** Format: uri */
-            issue_url: string;
-            labels: {
-              /** @description 6-character hex code, without the leading #, identifying the color */
-              color: string;
-              default: boolean;
-              description: string | null;
-              id: number;
-              /** @description The name of the label. */
-              name: string;
-              node_id: string;
-              /**
-               * Format: uri
-               * @description URL for the label
-               */
-              url: string;
-            }[];
-            locked: boolean;
-            /** @description Indicates whether maintainers can modify the pull request. */
-            maintainer_can_modify?: boolean;
-            merge_commit_sha: string | null;
-            mergeable?: boolean | null;
-            mergeable_state?: string;
-            merged?: boolean | null;
-            /** Format: date-time */
-            merged_at: string | null;
-            /** User */
-            merged_by?: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            /**
-             * Milestone
-             * @description A collection of related issues and pull requests.
-             */
-            milestone: {
-              /** Format: date-time */
-              closed_at: string | null;
-              closed_issues: number;
-              /** Format: date-time */
-              created_at: string;
-              /** User */
-              creator: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-              description: string | null;
-              /** Format: date-time */
-              due_on: string | null;
-              /** Format: uri */
-              html_url: string;
-              id: number;
-              /** Format: uri */
-              labels_url: string;
-              node_id: string;
-              /** @description The number of the milestone. */
-              number: number;
-              open_issues: number;
-              /**
-               * @description The state of the milestone.
-               * @enum {string}
-               */
-              state: "open" | "closed";
-              /** @description The title of the milestone. */
-              title: string;
-              /** Format: date-time */
-              updated_at: string;
-              /** Format: uri */
-              url: string;
-            } | null;
-            node_id: string;
-            /** @description Number uniquely identifying the pull request within its repository. */
-            number: number;
-            /** Format: uri */
-            patch_url: string;
-            rebaseable?: boolean | null;
-            requested_reviewers: OneOf<
-              [
-                {
-                  /** Format: uri */
-                  avatar_url?: string;
-                  deleted?: boolean;
-                  email?: string | null;
-                  /** Format: uri-template */
-                  events_url?: string;
-                  /** Format: uri */
-                  followers_url?: string;
-                  /** Format: uri-template */
-                  following_url?: string;
-                  /** Format: uri-template */
-                  gists_url?: string;
-                  gravatar_id?: string;
-                  /** Format: uri */
-                  html_url?: string;
-                  id: number;
-                  login: string;
-                  name?: string;
-                  node_id?: string;
-                  /** Format: uri */
-                  organizations_url?: string;
-                  /** Format: uri */
-                  received_events_url?: string;
-                  /** Format: uri */
-                  repos_url?: string;
-                  site_admin?: boolean;
-                  /** Format: uri-template */
-                  starred_url?: string;
-                  /** Format: uri */
-                  subscriptions_url?: string;
-                  /** @enum {string} */
-                  type?: "Bot" | "User" | "Organization";
-                  /** Format: uri */
-                  url?: string;
-                } | null,
-                {
-                  deleted?: boolean;
-                  /** @description Description of the team */
-                  description: string | null;
-                  /** Format: uri */
-                  html_url: string;
-                  /** @description Unique identifier of the team */
-                  id: number;
-                  /** Format: uri-template */
-                  members_url: string;
-                  /** @description Name of the team */
-                  name: string;
-                  node_id: string;
-                  parent?: {
-                    /** @description Description of the team */
-                    description: string | null;
-                    /** Format: uri */
-                    html_url: string;
-                    /** @description Unique identifier of the team */
-                    id: number;
-                    /** Format: uri-template */
-                    members_url: string;
-                    /** @description Name of the team */
-                    name: string;
-                    node_id: string;
-                    /** @description Permission that the team will have for its repositories */
-                    permission: string;
-                    /** @enum {string} */
-                    privacy: "open" | "closed" | "secret";
-                    /** Format: uri */
-                    repositories_url: string;
-                    slug: string;
-                    /**
-                     * Format: uri
-                     * @description URL for the team
-                     */
-                    url: string;
-                  } | null;
-                  /** @description Permission that the team will have for its repositories */
-                  permission: string;
-                  /** @enum {string} */
-                  privacy: "open" | "closed" | "secret";
-                  /** Format: uri */
-                  repositories_url: string;
-                  slug: string;
-                  /**
-                   * Format: uri
-                   * @description URL for the team
-                   */
-                  url: string;
-                },
-              ]
-            >[];
-            requested_teams: {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            }[];
-            /** Format: uri-template */
-            review_comment_url: string;
-            review_comments?: number;
-            /** Format: uri */
-            review_comments_url: string;
-            /**
-             * @description State of this Pull Request. Either `open` or `closed`.
-             * @enum {string}
-             */
-            state: "open" | "closed";
-            /** Format: uri */
-            statuses_url: string;
-            /** @description The title of the pull request. */
-            title: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /** User */
-            user: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-          };
-          repository: components["schemas"]["repository-webhooks"];
-          /** User */
-          requested_reviewer: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          sender: components["schemas"]["simple-user-webhooks"];
-        },
-        {
-          /** @enum {string} */
-          action: "review_request_removed";
-          enterprise?: components["schemas"]["enterprise-webhooks"];
-          installation?: components["schemas"]["simple-installation"];
-          /** @description The pull request number. */
-          number: number;
-          organization?: components["schemas"]["organization-simple-webhooks"];
-          /** Pull Request */
-          pull_request: {
-            _links: {
-              /** Link */
-              comments: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              commits: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              html: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              issue: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              review_comment: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              review_comments: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              self: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              statuses: {
-                /** Format: uri-template */
-                href: string;
-              };
-            };
-            /** @enum {string|null} */
-            active_lock_reason:
-              | "resolved"
-              | "off-topic"
-              | "too heated"
-              | "spam"
-              | null;
-            additions?: number;
-            /** User */
-            assignee: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            assignees: ({
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null)[];
-            /**
-             * AuthorAssociation
-             * @description How the author is associated with the repository.
-             * @enum {string}
-             */
-            author_association:
-              | "COLLABORATOR"
-              | "CONTRIBUTOR"
-              | "FIRST_TIMER"
-              | "FIRST_TIME_CONTRIBUTOR"
-              | "MANNEQUIN"
-              | "MEMBER"
-              | "NONE"
-              | "OWNER";
-            /**
-             * PullRequestAutoMerge
-             * @description The status of auto merging a pull request.
-             */
-            auto_merge: {
-              /** @description Commit message for the merge commit. */
-              commit_message: string | null;
-              /** @description Title for the merge commit message. */
-              commit_title: string | null;
-              /** User */
-              enabled_by: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-              /**
-               * @description The merge method to use.
-               * @enum {string}
-               */
-              merge_method: "merge" | "squash" | "rebase";
-            } | null;
-            base: {
-              label: string;
-              ref: string;
-              /**
-               * Repository
-               * @description A git repository
-               */
-              repo: {
-                /**
-                 * @description Whether to allow auto-merge for pull requests.
-                 * @default false
-                 */
-                allow_auto_merge?: boolean;
-                /** @description Whether to allow private forks */
-                allow_forking?: boolean;
-                /**
-                 * @description Whether to allow merge commits for pull requests.
-                 * @default true
-                 */
-                allow_merge_commit?: boolean;
-                /**
-                 * @description Whether to allow rebase merges for pull requests.
-                 * @default true
-                 */
-                allow_rebase_merge?: boolean;
-                /**
-                 * @description Whether to allow squash merges for pull requests.
-                 * @default true
-                 */
-                allow_squash_merge?: boolean;
-                allow_update_branch?: boolean;
-                /** Format: uri-template */
-                archive_url: string;
-                /**
-                 * @description Whether the repository is archived.
-                 * @default false
-                 */
-                archived: boolean;
-                /** Format: uri-template */
-                assignees_url: string;
-                /** Format: uri-template */
-                blobs_url: string;
-                /** Format: uri-template */
-                branches_url: string;
-                /** Format: uri */
-                clone_url: string;
-                /** Format: uri-template */
-                collaborators_url: string;
-                /** Format: uri-template */
-                comments_url: string;
-                /** Format: uri-template */
-                commits_url: string;
-                /** Format: uri-template */
-                compare_url: string;
-                /** Format: uri-template */
-                contents_url: string;
-                /** Format: uri */
-                contributors_url: string;
-                created_at: number | string;
-                /** @description The default branch of the repository. */
-                default_branch: string;
-                /**
-                 * @description Whether to delete head branches when pull requests are merged
-                 * @default false
-                 */
-                delete_branch_on_merge?: boolean;
-                /** Format: uri */
-                deployments_url: string;
-                description: string | null;
-                /** @description Returns whether or not this repository is disabled. */
-                disabled?: boolean;
-                /** Format: uri */
-                downloads_url: string;
-                /** Format: uri */
-                events_url: string;
-                fork: boolean;
-                forks: number;
-                forks_count: number;
-                /** Format: uri */
-                forks_url: string;
-                full_name: string;
-                /** Format: uri-template */
-                git_commits_url: string;
-                /** Format: uri-template */
-                git_refs_url: string;
-                /** Format: uri-template */
-                git_tags_url: string;
-                /** Format: uri */
-                git_url: string;
-                /**
-                 * @description Whether downloads are enabled.
-                 * @default true
-                 */
-                has_downloads: boolean;
-                /**
-                 * @description Whether issues are enabled.
-                 * @default true
-                 */
-                has_issues: boolean;
-                has_pages: boolean;
-                /**
-                 * @description Whether projects are enabled.
-                 * @default true
-                 */
-                has_projects: boolean;
-                /**
-                 * @description Whether the wiki is enabled.
-                 * @default true
-                 */
-                has_wiki: boolean;
-                /**
-                 * @description Whether discussions are enabled.
-                 * @default false
-                 */
-                has_discussions: boolean;
-                homepage: string | null;
-                /** Format: uri */
-                hooks_url: string;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the repository */
-                id: number;
-                is_template?: boolean;
-                /** Format: uri-template */
-                issue_comment_url: string;
-                /** Format: uri-template */
-                issue_events_url: string;
-                /** Format: uri-template */
-                issues_url: string;
-                /** Format: uri-template */
-                keys_url: string;
-                /** Format: uri-template */
-                labels_url: string;
-                language: string | null;
-                /** Format: uri */
-                languages_url: string;
-                /** License */
-                license: {
-                  key: string;
-                  name: string;
-                  node_id: string;
-                  spdx_id: string;
-                  /** Format: uri */
-                  url: string | null;
-                } | null;
-                master_branch?: string;
-                /**
-                 * @description The default value for a merge commit message.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-                /**
-                 * @description The default value for a merge commit title.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-                 * @enum {string}
-                 */
-                merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-                /** Format: uri */
-                merges_url: string;
-                /** Format: uri-template */
-                milestones_url: string;
-                /** Format: uri */
-                mirror_url: string | null;
-                /** @description The name of the repository. */
-                name: string;
-                node_id: string;
-                /** Format: uri-template */
-                notifications_url: string;
-                open_issues: number;
-                open_issues_count: number;
-                organization?: string;
-                /** User */
-                owner: {
-                  /** Format: uri */
-                  avatar_url?: string;
-                  deleted?: boolean;
-                  email?: string | null;
-                  /** Format: uri-template */
-                  events_url?: string;
-                  /** Format: uri */
-                  followers_url?: string;
-                  /** Format: uri-template */
-                  following_url?: string;
-                  /** Format: uri-template */
-                  gists_url?: string;
-                  gravatar_id?: string;
-                  /** Format: uri */
-                  html_url?: string;
-                  id: number;
-                  login: string;
-                  name?: string;
-                  node_id?: string;
-                  /** Format: uri */
-                  organizations_url?: string;
-                  /** Format: uri */
-                  received_events_url?: string;
-                  /** Format: uri */
-                  repos_url?: string;
-                  site_admin?: boolean;
-                  /** Format: uri-template */
-                  starred_url?: string;
-                  /** Format: uri */
-                  subscriptions_url?: string;
-                  /** @enum {string} */
-                  type?: "Bot" | "User" | "Organization";
-                  /** Format: uri */
-                  url?: string;
-                } | null;
-                permissions?: {
-                  admin: boolean;
-                  maintain?: boolean;
-                  pull: boolean;
-                  push: boolean;
-                  triage?: boolean;
-                };
-                /** @description Whether the repository is private or public. */
-                private: boolean;
-                public?: boolean;
-                /** Format: uri-template */
-                pulls_url: string;
-                pushed_at: number | string | null;
-                /** Format: uri-template */
-                releases_url: string;
-                role_name?: string | null;
-                size: number;
-                /**
-                 * @description The default value for a squash merge commit message:
-                 *
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                squash_merge_commit_message?:
-                  | "PR_BODY"
-                  | "COMMIT_MESSAGES"
-                  | "BLANK";
-                /**
-                 * @description The default value for a squash merge commit title:
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-                 * @enum {string}
-                 */
-                squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-                ssh_url: string;
-                stargazers?: number;
-                stargazers_count: number;
-                /** Format: uri */
-                stargazers_url: string;
-                /** Format: uri-template */
-                statuses_url: string;
-                /** Format: uri */
-                subscribers_url: string;
-                /** Format: uri */
-                subscription_url: string;
-                /** Format: uri */
-                svn_url: string;
-                /** Format: uri */
-                tags_url: string;
-                /** Format: uri */
-                teams_url: string;
-                topics: string[];
-                /** Format: uri-template */
-                trees_url: string;
-                /** Format: date-time */
-                updated_at: string;
-                /** Format: uri */
-                url: string;
-                /**
-                 * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-                 * @default false
-                 */
-                use_squash_pr_title_as_default?: boolean;
-                /** @enum {string} */
-                visibility: "public" | "private" | "internal";
-                watchers: number;
-                watchers_count: number;
-                /** @description Whether to require contributors to sign off on web-based commits */
-                web_commit_signoff_required?: boolean;
-              };
-              sha: string;
-              /** User */
-              user: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-            };
-            body: string | null;
-            changed_files?: number;
-            /** Format: date-time */
-            closed_at: string | null;
-            comments?: number;
-            /** Format: uri */
-            comments_url: string;
-            commits?: number;
-            /** Format: uri */
-            commits_url: string;
-            /** Format: date-time */
-            created_at: string;
-            deletions?: number;
-            /** Format: uri */
-            diff_url: string;
-            /** @description Indicates whether or not the pull request is a draft. */
-            draft: boolean;
-            head: {
-              label: string;
-              ref: string;
-              /**
-               * Repository
-               * @description A git repository
-               */
-              repo: {
-                /**
-                 * @description Whether to allow auto-merge for pull requests.
-                 * @default false
-                 */
-                allow_auto_merge?: boolean;
-                /** @description Whether to allow private forks */
-                allow_forking?: boolean;
-                /**
-                 * @description Whether to allow merge commits for pull requests.
-                 * @default true
-                 */
-                allow_merge_commit?: boolean;
-                /**
-                 * @description Whether to allow rebase merges for pull requests.
-                 * @default true
-                 */
-                allow_rebase_merge?: boolean;
-                /**
-                 * @description Whether to allow squash merges for pull requests.
-                 * @default true
-                 */
-                allow_squash_merge?: boolean;
-                allow_update_branch?: boolean;
-                /** Format: uri-template */
-                archive_url: string;
-                /**
-                 * @description Whether the repository is archived.
-                 * @default false
-                 */
-                archived: boolean;
-                /** Format: uri-template */
-                assignees_url: string;
-                /** Format: uri-template */
-                blobs_url: string;
-                /** Format: uri-template */
-                branches_url: string;
-                /** Format: uri */
-                clone_url: string;
-                /** Format: uri-template */
-                collaborators_url: string;
-                /** Format: uri-template */
-                comments_url: string;
-                /** Format: uri-template */
-                commits_url: string;
-                /** Format: uri-template */
-                compare_url: string;
-                /** Format: uri-template */
-                contents_url: string;
-                /** Format: uri */
-                contributors_url: string;
-                created_at: number | string;
-                /** @description The default branch of the repository. */
-                default_branch: string;
-                /**
-                 * @description Whether to delete head branches when pull requests are merged
-                 * @default false
-                 */
-                delete_branch_on_merge?: boolean;
-                /** Format: uri */
-                deployments_url: string;
-                description: string | null;
-                /** @description Returns whether or not this repository is disabled. */
-                disabled?: boolean;
-                /** Format: uri */
-                downloads_url: string;
-                /** Format: uri */
-                events_url: string;
-                fork: boolean;
-                forks: number;
-                forks_count: number;
-                /** Format: uri */
-                forks_url: string;
-                full_name: string;
-                /** Format: uri-template */
-                git_commits_url: string;
-                /** Format: uri-template */
-                git_refs_url: string;
-                /** Format: uri-template */
-                git_tags_url: string;
-                /** Format: uri */
-                git_url: string;
-                /**
-                 * @description Whether downloads are enabled.
-                 * @default true
-                 */
-                has_downloads: boolean;
-                /**
-                 * @description Whether issues are enabled.
-                 * @default true
-                 */
-                has_issues: boolean;
-                has_pages: boolean;
-                /**
-                 * @description Whether projects are enabled.
-                 * @default true
-                 */
-                has_projects: boolean;
-                /**
-                 * @description Whether the wiki is enabled.
-                 * @default true
-                 */
-                has_wiki: boolean;
-                /**
-                 * @description Whether discussions are enabled.
-                 * @default false
-                 */
-                has_discussions: boolean;
-                homepage: string | null;
-                /** Format: uri */
-                hooks_url: string;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the repository */
-                id: number;
-                is_template?: boolean;
-                /** Format: uri-template */
-                issue_comment_url: string;
-                /** Format: uri-template */
-                issue_events_url: string;
-                /** Format: uri-template */
-                issues_url: string;
-                /** Format: uri-template */
-                keys_url: string;
-                /** Format: uri-template */
-                labels_url: string;
-                language: string | null;
-                /** Format: uri */
-                languages_url: string;
-                /** License */
-                license: {
-                  key: string;
-                  name: string;
-                  node_id: string;
-                  spdx_id: string;
-                  /** Format: uri */
-                  url: string | null;
-                } | null;
-                master_branch?: string;
-                /**
-                 * @description The default value for a merge commit message.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-                /**
-                 * @description The default value for a merge commit title.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-                 * @enum {string}
-                 */
-                merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-                /** Format: uri */
-                merges_url: string;
-                /** Format: uri-template */
-                milestones_url: string;
-                /** Format: uri */
-                mirror_url: string | null;
-                /** @description The name of the repository. */
-                name: string;
-                node_id: string;
-                /** Format: uri-template */
-                notifications_url: string;
-                open_issues: number;
-                open_issues_count: number;
-                organization?: string;
-                /** User */
-                owner: {
-                  /** Format: uri */
-                  avatar_url?: string;
-                  deleted?: boolean;
-                  email?: string | null;
-                  /** Format: uri-template */
-                  events_url?: string;
-                  /** Format: uri */
-                  followers_url?: string;
-                  /** Format: uri-template */
-                  following_url?: string;
-                  /** Format: uri-template */
-                  gists_url?: string;
-                  gravatar_id?: string;
-                  /** Format: uri */
-                  html_url?: string;
-                  id: number;
-                  login: string;
-                  name?: string;
-                  node_id?: string;
-                  /** Format: uri */
-                  organizations_url?: string;
-                  /** Format: uri */
-                  received_events_url?: string;
-                  /** Format: uri */
-                  repos_url?: string;
-                  site_admin?: boolean;
-                  /** Format: uri-template */
-                  starred_url?: string;
-                  /** Format: uri */
-                  subscriptions_url?: string;
-                  /** @enum {string} */
-                  type?: "Bot" | "User" | "Organization";
-                  /** Format: uri */
-                  url?: string;
-                } | null;
-                permissions?: {
-                  admin: boolean;
-                  maintain?: boolean;
-                  pull: boolean;
-                  push: boolean;
-                  triage?: boolean;
-                };
-                /** @description Whether the repository is private or public. */
-                private: boolean;
-                public?: boolean;
-                /** Format: uri-template */
-                pulls_url: string;
-                pushed_at: number | string | null;
-                /** Format: uri-template */
-                releases_url: string;
-                role_name?: string | null;
-                size: number;
-                /**
-                 * @description The default value for a squash merge commit message:
-                 *
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                squash_merge_commit_message?:
-                  | "PR_BODY"
-                  | "COMMIT_MESSAGES"
-                  | "BLANK";
-                /**
-                 * @description The default value for a squash merge commit title:
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-                 * @enum {string}
-                 */
-                squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-                ssh_url: string;
-                stargazers?: number;
-                stargazers_count: number;
-                /** Format: uri */
-                stargazers_url: string;
-                /** Format: uri-template */
-                statuses_url: string;
-                /** Format: uri */
-                subscribers_url: string;
-                /** Format: uri */
-                subscription_url: string;
-                /** Format: uri */
-                svn_url: string;
-                /** Format: uri */
-                tags_url: string;
-                /** Format: uri */
-                teams_url: string;
-                topics: string[];
-                /** Format: uri-template */
-                trees_url: string;
-                /** Format: date-time */
-                updated_at: string;
-                /** Format: uri */
-                url: string;
-                /**
-                 * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-                 * @default false
-                 */
-                use_squash_pr_title_as_default?: boolean;
-                /** @enum {string} */
-                visibility: "public" | "private" | "internal";
-                watchers: number;
-                watchers_count: number;
-                /** @description Whether to require contributors to sign off on web-based commits */
-                web_commit_signoff_required?: boolean;
-              };
-              sha: string;
-              /** User */
-              user: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-            };
-            /** Format: uri */
-            html_url: string;
-            id: number;
-            /** Format: uri */
-            issue_url: string;
-            labels: {
-              /** @description 6-character hex code, without the leading #, identifying the color */
-              color: string;
-              default: boolean;
-              description: string | null;
-              id: number;
-              /** @description The name of the label. */
-              name: string;
-              node_id: string;
-              /**
-               * Format: uri
-               * @description URL for the label
-               */
-              url: string;
-            }[];
-            locked: boolean;
-            /** @description Indicates whether maintainers can modify the pull request. */
-            maintainer_can_modify?: boolean;
-            merge_commit_sha: string | null;
-            mergeable?: boolean | null;
-            mergeable_state?: string;
-            merged?: boolean | null;
-            /** Format: date-time */
-            merged_at: string | null;
-            /** User */
-            merged_by?: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            /**
-             * Milestone
-             * @description A collection of related issues and pull requests.
-             */
-            milestone: {
-              /** Format: date-time */
-              closed_at: string | null;
-              closed_issues: number;
-              /** Format: date-time */
-              created_at: string;
-              /** User */
-              creator: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-              description: string | null;
-              /** Format: date-time */
-              due_on: string | null;
-              /** Format: uri */
-              html_url: string;
-              id: number;
-              /** Format: uri */
-              labels_url: string;
-              node_id: string;
-              /** @description The number of the milestone. */
-              number: number;
-              open_issues: number;
-              /**
-               * @description The state of the milestone.
-               * @enum {string}
-               */
-              state: "open" | "closed";
-              /** @description The title of the milestone. */
-              title: string;
-              /** Format: date-time */
-              updated_at: string;
-              /** Format: uri */
-              url: string;
-            } | null;
-            node_id: string;
-            /** @description Number uniquely identifying the pull request within its repository. */
-            number: number;
-            /** Format: uri */
-            patch_url: string;
-            rebaseable?: boolean | null;
-            requested_reviewers: OneOf<
-              [
-                {
-                  /** Format: uri */
-                  avatar_url?: string;
-                  deleted?: boolean;
-                  email?: string | null;
-                  /** Format: uri-template */
-                  events_url?: string;
-                  /** Format: uri */
-                  followers_url?: string;
-                  /** Format: uri-template */
-                  following_url?: string;
-                  /** Format: uri-template */
-                  gists_url?: string;
-                  gravatar_id?: string;
-                  /** Format: uri */
-                  html_url?: string;
-                  id: number;
-                  login: string;
-                  name?: string;
-                  node_id?: string;
-                  /** Format: uri */
-                  organizations_url?: string;
-                  /** Format: uri */
-                  received_events_url?: string;
-                  /** Format: uri */
-                  repos_url?: string;
-                  site_admin?: boolean;
-                  /** Format: uri-template */
-                  starred_url?: string;
-                  /** Format: uri */
-                  subscriptions_url?: string;
-                  /** @enum {string} */
-                  type?: "Bot" | "User" | "Organization";
-                  /** Format: uri */
-                  url?: string;
-                } | null,
-                {
-                  deleted?: boolean;
-                  /** @description Description of the team */
-                  description: string | null;
-                  /** Format: uri */
-                  html_url: string;
-                  /** @description Unique identifier of the team */
-                  id: number;
-                  /** Format: uri-template */
-                  members_url: string;
-                  /** @description Name of the team */
-                  name: string;
-                  node_id: string;
-                  parent?: {
-                    /** @description Description of the team */
-                    description: string | null;
-                    /** Format: uri */
-                    html_url: string;
-                    /** @description Unique identifier of the team */
-                    id: number;
-                    /** Format: uri-template */
-                    members_url: string;
-                    /** @description Name of the team */
-                    name: string;
-                    node_id: string;
-                    /** @description Permission that the team will have for its repositories */
-                    permission: string;
-                    /** @enum {string} */
-                    privacy: "open" | "closed" | "secret";
-                    /** Format: uri */
-                    repositories_url: string;
-                    slug: string;
-                    /**
-                     * Format: uri
-                     * @description URL for the team
-                     */
-                    url: string;
-                  } | null;
-                  /** @description Permission that the team will have for its repositories */
-                  permission: string;
-                  /** @enum {string} */
-                  privacy: "open" | "closed" | "secret";
-                  /** Format: uri */
-                  repositories_url: string;
-                  slug: string;
-                  /**
-                   * Format: uri
-                   * @description URL for the team
-                   */
-                  url: string;
-                },
-              ]
-            >[];
-            requested_teams: {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            }[];
-            /** Format: uri-template */
-            review_comment_url: string;
-            review_comments?: number;
-            /** Format: uri */
-            review_comments_url: string;
-            /**
-             * @description State of this Pull Request. Either `open` or `closed`.
-             * @enum {string}
-             */
-            state: "open" | "closed";
-            /** Format: uri */
-            statuses_url: string;
-            /** @description The title of the pull request. */
-            title: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /** User */
-            user: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-          };
-          repository: components["schemas"]["repository-webhooks"];
-          /**
-           * Team
-           * @description Groups of organization members that gives permissions on specified repositories.
-           */
-          requested_team: {
-            deleted?: boolean;
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            parent?: {
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            } | null;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          };
-          sender: components["schemas"]["simple-user-webhooks"];
-        },
-      ]
-    >;
-    /** pull_request review_requested event */
-    "webhook-pull-request-review-requested": OneOf<
-      [
-        {
-          /** @enum {string} */
-          action: "review_requested";
-          enterprise?: components["schemas"]["enterprise-webhooks"];
-          installation?: components["schemas"]["simple-installation"];
-          /** @description The pull request number. */
-          number: number;
-          organization?: components["schemas"]["organization-simple-webhooks"];
-          /** Pull Request */
-          pull_request: {
-            _links: {
-              /** Link */
-              comments: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              commits: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              html: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              issue: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              review_comment: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              review_comments: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              self: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              statuses: {
-                /** Format: uri-template */
-                href: string;
-              };
-            };
-            /** @enum {string|null} */
-            active_lock_reason:
-              | "resolved"
-              | "off-topic"
-              | "too heated"
-              | "spam"
-              | null;
-            additions?: number;
-            /** User */
-            assignee: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            assignees: ({
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null)[];
-            /**
-             * AuthorAssociation
-             * @description How the author is associated with the repository.
-             * @enum {string}
-             */
-            author_association:
-              | "COLLABORATOR"
-              | "CONTRIBUTOR"
-              | "FIRST_TIMER"
-              | "FIRST_TIME_CONTRIBUTOR"
-              | "MANNEQUIN"
-              | "MEMBER"
-              | "NONE"
-              | "OWNER";
-            /**
-             * PullRequestAutoMerge
-             * @description The status of auto merging a pull request.
-             */
-            auto_merge: {
-              /** @description Commit message for the merge commit. */
-              commit_message: string | null;
-              /** @description Title for the merge commit message. */
-              commit_title: string | null;
-              /** User */
-              enabled_by: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-              /**
-               * @description The merge method to use.
-               * @enum {string}
-               */
-              merge_method: "merge" | "squash" | "rebase";
-            } | null;
-            base: {
-              label: string;
-              ref: string;
-              /**
-               * Repository
-               * @description A git repository
-               */
-              repo: {
-                /**
-                 * @description Whether to allow auto-merge for pull requests.
-                 * @default false
-                 */
-                allow_auto_merge?: boolean;
-                /** @description Whether to allow private forks */
-                allow_forking?: boolean;
-                /**
-                 * @description Whether to allow merge commits for pull requests.
-                 * @default true
-                 */
-                allow_merge_commit?: boolean;
-                /**
-                 * @description Whether to allow rebase merges for pull requests.
-                 * @default true
-                 */
-                allow_rebase_merge?: boolean;
-                /**
-                 * @description Whether to allow squash merges for pull requests.
-                 * @default true
-                 */
-                allow_squash_merge?: boolean;
-                allow_update_branch?: boolean;
-                /** Format: uri-template */
-                archive_url: string;
-                /**
-                 * @description Whether the repository is archived.
-                 * @default false
-                 */
-                archived: boolean;
-                /** Format: uri-template */
-                assignees_url: string;
-                /** Format: uri-template */
-                blobs_url: string;
-                /** Format: uri-template */
-                branches_url: string;
-                /** Format: uri */
-                clone_url: string;
-                /** Format: uri-template */
-                collaborators_url: string;
-                /** Format: uri-template */
-                comments_url: string;
-                /** Format: uri-template */
-                commits_url: string;
-                /** Format: uri-template */
-                compare_url: string;
-                /** Format: uri-template */
-                contents_url: string;
-                /** Format: uri */
-                contributors_url: string;
-                created_at: number | string;
-                /** @description The default branch of the repository. */
-                default_branch: string;
-                /**
-                 * @description Whether to delete head branches when pull requests are merged
-                 * @default false
-                 */
-                delete_branch_on_merge?: boolean;
-                /** Format: uri */
-                deployments_url: string;
-                description: string | null;
-                /** @description Returns whether or not this repository is disabled. */
-                disabled?: boolean;
-                /** Format: uri */
-                downloads_url: string;
-                /** Format: uri */
-                events_url: string;
-                fork: boolean;
-                forks: number;
-                forks_count: number;
-                /** Format: uri */
-                forks_url: string;
-                full_name: string;
-                /** Format: uri-template */
-                git_commits_url: string;
-                /** Format: uri-template */
-                git_refs_url: string;
-                /** Format: uri-template */
-                git_tags_url: string;
-                /** Format: uri */
-                git_url: string;
-                /**
-                 * @description Whether downloads are enabled.
-                 * @default true
-                 */
-                has_downloads: boolean;
-                /**
-                 * @description Whether issues are enabled.
-                 * @default true
-                 */
-                has_issues: boolean;
-                has_pages: boolean;
-                /**
-                 * @description Whether projects are enabled.
-                 * @default true
-                 */
-                has_projects: boolean;
-                /**
-                 * @description Whether the wiki is enabled.
-                 * @default true
-                 */
-                has_wiki: boolean;
-                /**
-                 * @description Whether discussions are enabled.
-                 * @default false
-                 */
-                has_discussions: boolean;
-                homepage: string | null;
-                /** Format: uri */
-                hooks_url: string;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the repository */
-                id: number;
-                is_template?: boolean;
-                /** Format: uri-template */
-                issue_comment_url: string;
-                /** Format: uri-template */
-                issue_events_url: string;
-                /** Format: uri-template */
-                issues_url: string;
-                /** Format: uri-template */
-                keys_url: string;
-                /** Format: uri-template */
-                labels_url: string;
-                language: string | null;
-                /** Format: uri */
-                languages_url: string;
-                /** License */
-                license: {
-                  key: string;
-                  name: string;
-                  node_id: string;
-                  spdx_id: string;
-                  /** Format: uri */
-                  url: string | null;
-                } | null;
-                master_branch?: string;
-                /**
-                 * @description The default value for a merge commit message.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-                /**
-                 * @description The default value for a merge commit title.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-                 * @enum {string}
-                 */
-                merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-                /** Format: uri */
-                merges_url: string;
-                /** Format: uri-template */
-                milestones_url: string;
-                /** Format: uri */
-                mirror_url: string | null;
-                /** @description The name of the repository. */
-                name: string;
-                node_id: string;
-                /** Format: uri-template */
-                notifications_url: string;
-                open_issues: number;
-                open_issues_count: number;
-                organization?: string;
-                /** User */
-                owner: {
-                  /** Format: uri */
-                  avatar_url?: string;
-                  deleted?: boolean;
-                  email?: string | null;
-                  /** Format: uri-template */
-                  events_url?: string;
-                  /** Format: uri */
-                  followers_url?: string;
-                  /** Format: uri-template */
-                  following_url?: string;
-                  /** Format: uri-template */
-                  gists_url?: string;
-                  gravatar_id?: string;
-                  /** Format: uri */
-                  html_url?: string;
-                  id: number;
-                  login: string;
-                  name?: string;
-                  node_id?: string;
-                  /** Format: uri */
-                  organizations_url?: string;
-                  /** Format: uri */
-                  received_events_url?: string;
-                  /** Format: uri */
-                  repos_url?: string;
-                  site_admin?: boolean;
-                  /** Format: uri-template */
-                  starred_url?: string;
-                  /** Format: uri */
-                  subscriptions_url?: string;
-                  /** @enum {string} */
-                  type?: "Bot" | "User" | "Organization";
-                  /** Format: uri */
-                  url?: string;
-                } | null;
-                permissions?: {
-                  admin: boolean;
-                  maintain?: boolean;
-                  pull: boolean;
-                  push: boolean;
-                  triage?: boolean;
-                };
-                /** @description Whether the repository is private or public. */
-                private: boolean;
-                public?: boolean;
-                /** Format: uri-template */
-                pulls_url: string;
-                pushed_at: number | string | null;
-                /** Format: uri-template */
-                releases_url: string;
-                role_name?: string | null;
-                size: number;
-                /**
-                 * @description The default value for a squash merge commit message:
-                 *
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                squash_merge_commit_message?:
-                  | "PR_BODY"
-                  | "COMMIT_MESSAGES"
-                  | "BLANK";
-                /**
-                 * @description The default value for a squash merge commit title:
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-                 * @enum {string}
-                 */
-                squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-                ssh_url: string;
-                stargazers?: number;
-                stargazers_count: number;
-                /** Format: uri */
-                stargazers_url: string;
-                /** Format: uri-template */
-                statuses_url: string;
-                /** Format: uri */
-                subscribers_url: string;
-                /** Format: uri */
-                subscription_url: string;
-                /** Format: uri */
-                svn_url: string;
-                /** Format: uri */
-                tags_url: string;
-                /** Format: uri */
-                teams_url: string;
-                topics: string[];
-                /** Format: uri-template */
-                trees_url: string;
-                /** Format: date-time */
-                updated_at: string;
-                /** Format: uri */
-                url: string;
-                /**
-                 * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-                 * @default false
-                 */
-                use_squash_pr_title_as_default?: boolean;
-                /** @enum {string} */
-                visibility: "public" | "private" | "internal";
-                watchers: number;
-                watchers_count: number;
-                /** @description Whether to require contributors to sign off on web-based commits */
-                web_commit_signoff_required?: boolean;
-              };
-              sha: string;
-              /** User */
-              user: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-            };
-            body: string | null;
-            changed_files?: number;
-            /** Format: date-time */
-            closed_at: string | null;
-            comments?: number;
-            /** Format: uri */
-            comments_url: string;
-            commits?: number;
-            /** Format: uri */
-            commits_url: string;
-            /** Format: date-time */
-            created_at: string;
-            deletions?: number;
-            /** Format: uri */
-            diff_url: string;
-            /** @description Indicates whether or not the pull request is a draft. */
-            draft: boolean;
-            head: {
-              label: string;
-              ref: string;
-              /**
-               * Repository
-               * @description A git repository
-               */
-              repo: {
-                /**
-                 * @description Whether to allow auto-merge for pull requests.
-                 * @default false
-                 */
-                allow_auto_merge?: boolean;
-                /** @description Whether to allow private forks */
-                allow_forking?: boolean;
-                /**
-                 * @description Whether to allow merge commits for pull requests.
-                 * @default true
-                 */
-                allow_merge_commit?: boolean;
-                /**
-                 * @description Whether to allow rebase merges for pull requests.
-                 * @default true
-                 */
-                allow_rebase_merge?: boolean;
-                /**
-                 * @description Whether to allow squash merges for pull requests.
-                 * @default true
-                 */
-                allow_squash_merge?: boolean;
-                allow_update_branch?: boolean;
-                /** Format: uri-template */
-                archive_url: string;
-                /**
-                 * @description Whether the repository is archived.
-                 * @default false
-                 */
-                archived: boolean;
-                /** Format: uri-template */
-                assignees_url: string;
-                /** Format: uri-template */
-                blobs_url: string;
-                /** Format: uri-template */
-                branches_url: string;
-                /** Format: uri */
-                clone_url: string;
-                /** Format: uri-template */
-                collaborators_url: string;
-                /** Format: uri-template */
-                comments_url: string;
-                /** Format: uri-template */
-                commits_url: string;
-                /** Format: uri-template */
-                compare_url: string;
-                /** Format: uri-template */
-                contents_url: string;
-                /** Format: uri */
-                contributors_url: string;
-                created_at: number | string;
-                /** @description The default branch of the repository. */
-                default_branch: string;
-                /**
-                 * @description Whether to delete head branches when pull requests are merged
-                 * @default false
-                 */
-                delete_branch_on_merge?: boolean;
-                /** Format: uri */
-                deployments_url: string;
-                description: string | null;
-                /** @description Returns whether or not this repository is disabled. */
-                disabled?: boolean;
-                /** Format: uri */
-                downloads_url: string;
-                /** Format: uri */
-                events_url: string;
-                fork: boolean;
-                forks: number;
-                forks_count: number;
-                /** Format: uri */
-                forks_url: string;
-                full_name: string;
-                /** Format: uri-template */
-                git_commits_url: string;
-                /** Format: uri-template */
-                git_refs_url: string;
-                /** Format: uri-template */
-                git_tags_url: string;
-                /** Format: uri */
-                git_url: string;
-                /**
-                 * @description Whether downloads are enabled.
-                 * @default true
-                 */
-                has_downloads: boolean;
-                /**
-                 * @description Whether issues are enabled.
-                 * @default true
-                 */
-                has_issues: boolean;
-                has_pages: boolean;
-                /**
-                 * @description Whether projects are enabled.
-                 * @default true
-                 */
-                has_projects: boolean;
-                /**
-                 * @description Whether the wiki is enabled.
-                 * @default true
-                 */
-                has_wiki: boolean;
-                /**
-                 * @description Whether discussions are enabled.
-                 * @default false
-                 */
-                has_discussions: boolean;
-                homepage: string | null;
-                /** Format: uri */
-                hooks_url: string;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the repository */
-                id: number;
-                is_template?: boolean;
-                /** Format: uri-template */
-                issue_comment_url: string;
-                /** Format: uri-template */
-                issue_events_url: string;
-                /** Format: uri-template */
-                issues_url: string;
-                /** Format: uri-template */
-                keys_url: string;
-                /** Format: uri-template */
-                labels_url: string;
-                language: string | null;
-                /** Format: uri */
-                languages_url: string;
-                /** License */
-                license: {
-                  key: string;
-                  name: string;
-                  node_id: string;
-                  spdx_id: string;
-                  /** Format: uri */
-                  url: string | null;
-                } | null;
-                master_branch?: string;
-                /**
-                 * @description The default value for a merge commit message.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-                /**
-                 * @description The default value for a merge commit title.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-                 * @enum {string}
-                 */
-                merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-                /** Format: uri */
-                merges_url: string;
-                /** Format: uri-template */
-                milestones_url: string;
-                /** Format: uri */
-                mirror_url: string | null;
-                /** @description The name of the repository. */
-                name: string;
-                node_id: string;
-                /** Format: uri-template */
-                notifications_url: string;
-                open_issues: number;
-                open_issues_count: number;
-                organization?: string;
-                /** User */
-                owner: {
-                  /** Format: uri */
-                  avatar_url?: string;
-                  deleted?: boolean;
-                  email?: string | null;
-                  /** Format: uri-template */
-                  events_url?: string;
-                  /** Format: uri */
-                  followers_url?: string;
-                  /** Format: uri-template */
-                  following_url?: string;
-                  /** Format: uri-template */
-                  gists_url?: string;
-                  gravatar_id?: string;
-                  /** Format: uri */
-                  html_url?: string;
-                  id: number;
-                  login: string;
-                  name?: string;
-                  node_id?: string;
-                  /** Format: uri */
-                  organizations_url?: string;
-                  /** Format: uri */
-                  received_events_url?: string;
-                  /** Format: uri */
-                  repos_url?: string;
-                  site_admin?: boolean;
-                  /** Format: uri-template */
-                  starred_url?: string;
-                  /** Format: uri */
-                  subscriptions_url?: string;
-                  /** @enum {string} */
-                  type?: "Bot" | "User" | "Organization";
-                  /** Format: uri */
-                  url?: string;
-                } | null;
-                permissions?: {
-                  admin: boolean;
-                  maintain?: boolean;
-                  pull: boolean;
-                  push: boolean;
-                  triage?: boolean;
-                };
-                /** @description Whether the repository is private or public. */
-                private: boolean;
-                public?: boolean;
-                /** Format: uri-template */
-                pulls_url: string;
-                pushed_at: number | string | null;
-                /** Format: uri-template */
-                releases_url: string;
-                role_name?: string | null;
-                size: number;
-                /**
-                 * @description The default value for a squash merge commit message:
-                 *
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                squash_merge_commit_message?:
-                  | "PR_BODY"
-                  | "COMMIT_MESSAGES"
-                  | "BLANK";
-                /**
-                 * @description The default value for a squash merge commit title:
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-                 * @enum {string}
-                 */
-                squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-                ssh_url: string;
-                stargazers?: number;
-                stargazers_count: number;
-                /** Format: uri */
-                stargazers_url: string;
-                /** Format: uri-template */
-                statuses_url: string;
-                /** Format: uri */
-                subscribers_url: string;
-                /** Format: uri */
-                subscription_url: string;
-                /** Format: uri */
-                svn_url: string;
-                /** Format: uri */
-                tags_url: string;
-                /** Format: uri */
-                teams_url: string;
-                topics: string[];
-                /** Format: uri-template */
-                trees_url: string;
-                /** Format: date-time */
-                updated_at: string;
-                /** Format: uri */
-                url: string;
-                /**
-                 * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-                 * @default false
-                 */
-                use_squash_pr_title_as_default?: boolean;
-                /** @enum {string} */
-                visibility: "public" | "private" | "internal";
-                watchers: number;
-                watchers_count: number;
-                /** @description Whether to require contributors to sign off on web-based commits */
-                web_commit_signoff_required?: boolean;
-              };
-              sha: string;
-              /** User */
-              user: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-            };
-            /** Format: uri */
-            html_url: string;
-            id: number;
-            /** Format: uri */
-            issue_url: string;
-            labels: {
-              /** @description 6-character hex code, without the leading #, identifying the color */
-              color: string;
-              default: boolean;
-              description: string | null;
-              id: number;
-              /** @description The name of the label. */
-              name: string;
-              node_id: string;
-              /**
-               * Format: uri
-               * @description URL for the label
-               */
-              url: string;
-            }[];
-            locked: boolean;
-            /** @description Indicates whether maintainers can modify the pull request. */
-            maintainer_can_modify?: boolean;
-            merge_commit_sha: string | null;
-            mergeable?: boolean | null;
-            mergeable_state?: string;
-            merged?: boolean | null;
-            /** Format: date-time */
-            merged_at: string | null;
-            /** User */
-            merged_by?: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            /**
-             * Milestone
-             * @description A collection of related issues and pull requests.
-             */
-            milestone: {
-              /** Format: date-time */
-              closed_at: string | null;
-              closed_issues: number;
-              /** Format: date-time */
-              created_at: string;
-              /** User */
-              creator: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization" | "Mannequin";
-                /** Format: uri */
-                url?: string;
-              } | null;
-              description: string | null;
-              /** Format: date-time */
-              due_on: string | null;
-              /** Format: uri */
-              html_url: string;
-              id: number;
-              /** Format: uri */
-              labels_url: string;
-              node_id: string;
-              /** @description The number of the milestone. */
-              number: number;
-              open_issues: number;
-              /**
-               * @description The state of the milestone.
-               * @enum {string}
-               */
-              state: "open" | "closed";
-              /** @description The title of the milestone. */
-              title: string;
-              /** Format: date-time */
-              updated_at: string;
-              /** Format: uri */
-              url: string;
-            } | null;
-            node_id: string;
-            /** @description Number uniquely identifying the pull request within its repository. */
-            number: number;
-            /** Format: uri */
-            patch_url: string;
-            rebaseable?: boolean | null;
-            requested_reviewers: OneOf<
-              [
-                {
-                  /** Format: uri */
-                  avatar_url?: string;
-                  deleted?: boolean;
-                  email?: string | null;
-                  /** Format: uri-template */
-                  events_url?: string;
-                  /** Format: uri */
-                  followers_url?: string;
-                  /** Format: uri-template */
-                  following_url?: string;
-                  /** Format: uri-template */
-                  gists_url?: string;
-                  gravatar_id?: string;
-                  /** Format: uri */
-                  html_url?: string;
-                  id: number;
-                  login: string;
-                  name?: string;
-                  node_id?: string;
-                  /** Format: uri */
-                  organizations_url?: string;
-                  /** Format: uri */
-                  received_events_url?: string;
-                  /** Format: uri */
-                  repos_url?: string;
-                  site_admin?: boolean;
-                  /** Format: uri-template */
-                  starred_url?: string;
-                  /** Format: uri */
-                  subscriptions_url?: string;
-                  /** @enum {string} */
-                  type?: "Bot" | "User" | "Organization";
-                  /** Format: uri */
-                  url?: string;
-                } | null,
-                {
-                  deleted?: boolean;
-                  /** @description Description of the team */
-                  description: string | null;
-                  /** Format: uri */
-                  html_url: string;
-                  /** @description Unique identifier of the team */
-                  id: number;
-                  /** Format: uri-template */
-                  members_url: string;
-                  /** @description Name of the team */
-                  name: string;
-                  node_id: string;
-                  parent?: {
-                    /** @description Description of the team */
-                    description: string | null;
-                    /** Format: uri */
-                    html_url: string;
-                    /** @description Unique identifier of the team */
-                    id: number;
-                    /** Format: uri-template */
-                    members_url: string;
-                    /** @description Name of the team */
-                    name: string;
-                    node_id: string;
-                    /** @description Permission that the team will have for its repositories */
-                    permission: string;
-                    /** @enum {string} */
-                    privacy: "open" | "closed" | "secret";
-                    /** Format: uri */
-                    repositories_url: string;
-                    slug: string;
-                    /**
-                     * Format: uri
-                     * @description URL for the team
-                     */
-                    url: string;
-                  } | null;
-                  /** @description Permission that the team will have for its repositories */
-                  permission: string;
-                  /** @enum {string} */
-                  privacy: "open" | "closed" | "secret";
-                  /** Format: uri */
-                  repositories_url: string;
-                  slug: string;
-                  /**
-                   * Format: uri
-                   * @description URL for the team
-                   */
-                  url: string;
-                },
-              ]
-            >[];
-            requested_teams: {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description?: string | null;
-              /** Format: uri */
-              html_url?: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url?: string;
-              /** @description Name of the team */
-              name: string;
-              node_id?: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission?: string;
-              /** @enum {string} */
-              privacy?: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url?: string;
-              slug?: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url?: string;
-            }[];
-            /** Format: uri-template */
-            review_comment_url: string;
-            review_comments?: number;
-            /** Format: uri */
-            review_comments_url: string;
-            /**
-             * @description State of this Pull Request. Either `open` or `closed`.
-             * @enum {string}
-             */
-            state: "open" | "closed";
-            /** Format: uri */
-            statuses_url: string;
-            /** @description The title of the pull request. */
-            title: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /** User */
-            user: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null;
-          };
-          repository: components["schemas"]["repository-webhooks"];
-          /** User */
-          requested_reviewer: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          sender: components["schemas"]["simple-user-webhooks"];
-        },
-        {
-          /** @enum {string} */
-          action: "review_requested";
-          enterprise?: components["schemas"]["enterprise-webhooks"];
-          installation?: components["schemas"]["simple-installation"];
-          /** @description The pull request number. */
-          number: number;
-          organization?: components["schemas"]["organization-simple-webhooks"];
-          /** Pull Request */
-          pull_request: {
-            _links: {
-              /** Link */
-              comments: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              commits: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              html: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              issue: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              review_comment: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              review_comments: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              self: {
-                /** Format: uri-template */
-                href: string;
-              };
-              /** Link */
-              statuses: {
-                /** Format: uri-template */
-                href: string;
-              };
-            };
-            /** @enum {string|null} */
-            active_lock_reason:
-              | "resolved"
-              | "off-topic"
-              | "too heated"
-              | "spam"
-              | null;
-            additions?: number;
-            /** User */
-            assignee: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            assignees: ({
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null)[];
-            /**
-             * AuthorAssociation
-             * @description How the author is associated with the repository.
-             * @enum {string}
-             */
-            author_association:
-              | "COLLABORATOR"
-              | "CONTRIBUTOR"
-              | "FIRST_TIMER"
-              | "FIRST_TIME_CONTRIBUTOR"
-              | "MANNEQUIN"
-              | "MEMBER"
-              | "NONE"
-              | "OWNER";
-            /**
-             * PullRequestAutoMerge
-             * @description The status of auto merging a pull request.
-             */
-            auto_merge: {
-              /** @description Commit message for the merge commit. */
-              commit_message: string | null;
-              /** @description Title for the merge commit message. */
-              commit_title: string | null;
-              /** User */
-              enabled_by: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-              /**
-               * @description The merge method to use.
-               * @enum {string}
-               */
-              merge_method: "merge" | "squash" | "rebase";
-            } | null;
-            base: {
-              label: string;
-              ref: string;
-              /**
-               * Repository
-               * @description A git repository
-               */
-              repo: {
-                /**
-                 * @description Whether to allow auto-merge for pull requests.
-                 * @default false
-                 */
-                allow_auto_merge?: boolean;
-                /** @description Whether to allow private forks */
-                allow_forking?: boolean;
-                /**
-                 * @description Whether to allow merge commits for pull requests.
-                 * @default true
-                 */
-                allow_merge_commit?: boolean;
-                /**
-                 * @description Whether to allow rebase merges for pull requests.
-                 * @default true
-                 */
-                allow_rebase_merge?: boolean;
-                /**
-                 * @description Whether to allow squash merges for pull requests.
-                 * @default true
-                 */
-                allow_squash_merge?: boolean;
-                allow_update_branch?: boolean;
-                /** Format: uri-template */
-                archive_url: string;
-                /**
-                 * @description Whether the repository is archived.
-                 * @default false
-                 */
-                archived: boolean;
-                /** Format: uri-template */
-                assignees_url: string;
-                /** Format: uri-template */
-                blobs_url: string;
-                /** Format: uri-template */
-                branches_url: string;
-                /** Format: uri */
-                clone_url: string;
-                /** Format: uri-template */
-                collaborators_url: string;
-                /** Format: uri-template */
-                comments_url: string;
-                /** Format: uri-template */
-                commits_url: string;
-                /** Format: uri-template */
-                compare_url: string;
-                /** Format: uri-template */
-                contents_url: string;
-                /** Format: uri */
-                contributors_url: string;
-                created_at: number | string;
-                /** @description The default branch of the repository. */
-                default_branch: string;
-                /**
-                 * @description Whether to delete head branches when pull requests are merged
-                 * @default false
-                 */
-                delete_branch_on_merge?: boolean;
-                /** Format: uri */
-                deployments_url: string;
-                description: string | null;
-                /** @description Returns whether or not this repository is disabled. */
-                disabled?: boolean;
-                /** Format: uri */
-                downloads_url: string;
-                /** Format: uri */
-                events_url: string;
-                fork: boolean;
-                forks: number;
-                forks_count: number;
-                /** Format: uri */
-                forks_url: string;
-                full_name: string;
-                /** Format: uri-template */
-                git_commits_url: string;
-                /** Format: uri-template */
-                git_refs_url: string;
-                /** Format: uri-template */
-                git_tags_url: string;
-                /** Format: uri */
-                git_url: string;
-                /**
-                 * @description Whether downloads are enabled.
-                 * @default true
-                 */
-                has_downloads: boolean;
-                /**
-                 * @description Whether issues are enabled.
-                 * @default true
-                 */
-                has_issues: boolean;
-                has_pages: boolean;
-                /**
-                 * @description Whether projects are enabled.
-                 * @default true
-                 */
-                has_projects: boolean;
-                /**
-                 * @description Whether the wiki is enabled.
-                 * @default true
-                 */
-                has_wiki: boolean;
-                /**
-                 * @description Whether discussions are enabled.
-                 * @default false
-                 */
-                has_discussions: boolean;
-                homepage: string | null;
-                /** Format: uri */
-                hooks_url: string;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the repository */
-                id: number;
-                is_template?: boolean;
-                /** Format: uri-template */
-                issue_comment_url: string;
-                /** Format: uri-template */
-                issue_events_url: string;
-                /** Format: uri-template */
-                issues_url: string;
-                /** Format: uri-template */
-                keys_url: string;
-                /** Format: uri-template */
-                labels_url: string;
-                language: string | null;
-                /** Format: uri */
-                languages_url: string;
-                /** License */
-                license: {
-                  key: string;
-                  name: string;
-                  node_id: string;
-                  spdx_id: string;
-                  /** Format: uri */
-                  url: string | null;
-                } | null;
-                master_branch?: string;
-                /**
-                 * @description The default value for a merge commit message.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-                /**
-                 * @description The default value for a merge commit title.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-                 * @enum {string}
-                 */
-                merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-                /** Format: uri */
-                merges_url: string;
-                /** Format: uri-template */
-                milestones_url: string;
-                /** Format: uri */
-                mirror_url: string | null;
-                /** @description The name of the repository. */
-                name: string;
-                node_id: string;
-                /** Format: uri-template */
-                notifications_url: string;
-                open_issues: number;
-                open_issues_count: number;
-                organization?: string;
-                /** User */
-                owner: {
-                  /** Format: uri */
-                  avatar_url?: string;
-                  deleted?: boolean;
-                  email?: string | null;
-                  /** Format: uri-template */
-                  events_url?: string;
-                  /** Format: uri */
-                  followers_url?: string;
-                  /** Format: uri-template */
-                  following_url?: string;
-                  /** Format: uri-template */
-                  gists_url?: string;
-                  gravatar_id?: string;
-                  /** Format: uri */
-                  html_url?: string;
-                  id: number;
-                  login: string;
-                  name?: string;
-                  node_id?: string;
-                  /** Format: uri */
-                  organizations_url?: string;
-                  /** Format: uri */
-                  received_events_url?: string;
-                  /** Format: uri */
-                  repos_url?: string;
-                  site_admin?: boolean;
-                  /** Format: uri-template */
-                  starred_url?: string;
-                  /** Format: uri */
-                  subscriptions_url?: string;
-                  /** @enum {string} */
-                  type?: "Bot" | "User" | "Organization";
-                  /** Format: uri */
-                  url?: string;
-                } | null;
-                permissions?: {
-                  admin: boolean;
-                  maintain?: boolean;
-                  pull: boolean;
-                  push: boolean;
-                  triage?: boolean;
-                };
-                /** @description Whether the repository is private or public. */
-                private: boolean;
-                public?: boolean;
-                /** Format: uri-template */
-                pulls_url: string;
-                pushed_at: number | string | null;
-                /** Format: uri-template */
-                releases_url: string;
-                role_name?: string | null;
-                size: number;
-                /**
-                 * @description The default value for a squash merge commit message:
-                 *
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                squash_merge_commit_message?:
-                  | "PR_BODY"
-                  | "COMMIT_MESSAGES"
-                  | "BLANK";
-                /**
-                 * @description The default value for a squash merge commit title:
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-                 * @enum {string}
-                 */
-                squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-                ssh_url: string;
-                stargazers?: number;
-                stargazers_count: number;
-                /** Format: uri */
-                stargazers_url: string;
-                /** Format: uri-template */
-                statuses_url: string;
-                /** Format: uri */
-                subscribers_url: string;
-                /** Format: uri */
-                subscription_url: string;
-                /** Format: uri */
-                svn_url: string;
-                /** Format: uri */
-                tags_url: string;
-                /** Format: uri */
-                teams_url: string;
-                topics: string[];
-                /** Format: uri-template */
-                trees_url: string;
-                /** Format: date-time */
-                updated_at: string;
-                /** Format: uri */
-                url: string;
-                /**
-                 * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-                 * @default false
-                 */
-                use_squash_pr_title_as_default?: boolean;
-                /** @enum {string} */
-                visibility: "public" | "private" | "internal";
-                watchers: number;
-                watchers_count: number;
-                /** @description Whether to require contributors to sign off on web-based commits */
-                web_commit_signoff_required?: boolean;
-              };
-              sha: string;
-              /** User */
-              user: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-            };
-            body: string | null;
-            changed_files?: number;
-            /** Format: date-time */
-            closed_at: string | null;
-            comments?: number;
-            /** Format: uri */
-            comments_url: string;
-            commits?: number;
-            /** Format: uri */
-            commits_url: string;
-            /** Format: date-time */
-            created_at: string;
-            deletions?: number;
-            /** Format: uri */
-            diff_url: string;
-            /** @description Indicates whether or not the pull request is a draft. */
-            draft: boolean;
-            head: {
-              label: string;
-              ref: string;
-              /**
-               * Repository
-               * @description A git repository
-               */
-              repo: {
-                /**
-                 * @description Whether to allow auto-merge for pull requests.
-                 * @default false
-                 */
-                allow_auto_merge?: boolean;
-                /** @description Whether to allow private forks */
-                allow_forking?: boolean;
-                /**
-                 * @description Whether to allow merge commits for pull requests.
-                 * @default true
-                 */
-                allow_merge_commit?: boolean;
-                /**
-                 * @description Whether to allow rebase merges for pull requests.
-                 * @default true
-                 */
-                allow_rebase_merge?: boolean;
-                /**
-                 * @description Whether to allow squash merges for pull requests.
-                 * @default true
-                 */
-                allow_squash_merge?: boolean;
-                allow_update_branch?: boolean;
-                /** Format: uri-template */
-                archive_url: string;
-                /**
-                 * @description Whether the repository is archived.
-                 * @default false
-                 */
-                archived: boolean;
-                /** Format: uri-template */
-                assignees_url: string;
-                /** Format: uri-template */
-                blobs_url: string;
-                /** Format: uri-template */
-                branches_url: string;
-                /** Format: uri */
-                clone_url: string;
-                /** Format: uri-template */
-                collaborators_url: string;
-                /** Format: uri-template */
-                comments_url: string;
-                /** Format: uri-template */
-                commits_url: string;
-                /** Format: uri-template */
-                compare_url: string;
-                /** Format: uri-template */
-                contents_url: string;
-                /** Format: uri */
-                contributors_url: string;
-                created_at: number | string;
-                /** @description The default branch of the repository. */
-                default_branch: string;
-                /**
-                 * @description Whether to delete head branches when pull requests are merged
-                 * @default false
-                 */
-                delete_branch_on_merge?: boolean;
-                /** Format: uri */
-                deployments_url: string;
-                description: string | null;
-                /** @description Returns whether or not this repository is disabled. */
-                disabled?: boolean;
-                /** Format: uri */
-                downloads_url: string;
-                /** Format: uri */
-                events_url: string;
-                fork: boolean;
-                forks: number;
-                forks_count: number;
-                /** Format: uri */
-                forks_url: string;
-                full_name: string;
-                /** Format: uri-template */
-                git_commits_url: string;
-                /** Format: uri-template */
-                git_refs_url: string;
-                /** Format: uri-template */
-                git_tags_url: string;
-                /** Format: uri */
-                git_url: string;
-                /**
-                 * @description Whether downloads are enabled.
-                 * @default true
-                 */
-                has_downloads: boolean;
-                /**
-                 * @description Whether issues are enabled.
-                 * @default true
-                 */
-                has_issues: boolean;
-                has_pages: boolean;
-                /**
-                 * @description Whether projects are enabled.
-                 * @default true
-                 */
-                has_projects: boolean;
-                /**
-                 * @description Whether the wiki is enabled.
-                 * @default true
-                 */
-                has_wiki: boolean;
-                /**
-                 * @description Whether discussions are enabled.
-                 * @default false
-                 */
-                has_discussions: boolean;
-                homepage: string | null;
-                /** Format: uri */
-                hooks_url: string;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the repository */
-                id: number;
-                is_template?: boolean;
-                /** Format: uri-template */
-                issue_comment_url: string;
-                /** Format: uri-template */
-                issue_events_url: string;
-                /** Format: uri-template */
-                issues_url: string;
-                /** Format: uri-template */
-                keys_url: string;
-                /** Format: uri-template */
-                labels_url: string;
-                language: string | null;
-                /** Format: uri */
-                languages_url: string;
-                /** License */
-                license: {
-                  key: string;
-                  name: string;
-                  node_id: string;
-                  spdx_id: string;
-                  /** Format: uri */
-                  url: string | null;
-                } | null;
-                master_branch?: string;
-                /**
-                 * @description The default value for a merge commit message.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-                /**
-                 * @description The default value for a merge commit title.
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-                 * @enum {string}
-                 */
-                merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-                /** Format: uri */
-                merges_url: string;
-                /** Format: uri-template */
-                milestones_url: string;
-                /** Format: uri */
-                mirror_url: string | null;
-                /** @description The name of the repository. */
-                name: string;
-                node_id: string;
-                /** Format: uri-template */
-                notifications_url: string;
-                open_issues: number;
-                open_issues_count: number;
-                organization?: string;
-                /** User */
-                owner: {
-                  /** Format: uri */
-                  avatar_url?: string;
-                  deleted?: boolean;
-                  email?: string | null;
-                  /** Format: uri-template */
-                  events_url?: string;
-                  /** Format: uri */
-                  followers_url?: string;
-                  /** Format: uri-template */
-                  following_url?: string;
-                  /** Format: uri-template */
-                  gists_url?: string;
-                  gravatar_id?: string;
-                  /** Format: uri */
-                  html_url?: string;
-                  id: number;
-                  login: string;
-                  name?: string;
-                  node_id?: string;
-                  /** Format: uri */
-                  organizations_url?: string;
-                  /** Format: uri */
-                  received_events_url?: string;
-                  /** Format: uri */
-                  repos_url?: string;
-                  site_admin?: boolean;
-                  /** Format: uri-template */
-                  starred_url?: string;
-                  /** Format: uri */
-                  subscriptions_url?: string;
-                  /** @enum {string} */
-                  type?: "Bot" | "User" | "Organization";
-                  /** Format: uri */
-                  url?: string;
-                } | null;
-                permissions?: {
-                  admin: boolean;
-                  maintain?: boolean;
-                  pull: boolean;
-                  push: boolean;
-                  triage?: boolean;
-                };
-                /** @description Whether the repository is private or public. */
-                private: boolean;
-                public?: boolean;
-                /** Format: uri-template */
-                pulls_url: string;
-                pushed_at: number | string | null;
-                /** Format: uri-template */
-                releases_url: string;
-                role_name?: string | null;
-                size: number;
-                /**
-                 * @description The default value for a squash merge commit message:
-                 *
-                 * - `PR_BODY` - default to the pull request's body.
-                 * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-                 * - `BLANK` - default to a blank commit message.
-                 * @enum {string}
-                 */
-                squash_merge_commit_message?:
-                  | "PR_BODY"
-                  | "COMMIT_MESSAGES"
-                  | "BLANK";
-                /**
-                 * @description The default value for a squash merge commit title:
-                 *
-                 * - `PR_TITLE` - default to the pull request's title.
-                 * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-                 * @enum {string}
-                 */
-                squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-                ssh_url: string;
-                stargazers?: number;
-                stargazers_count: number;
-                /** Format: uri */
-                stargazers_url: string;
-                /** Format: uri-template */
-                statuses_url: string;
-                /** Format: uri */
-                subscribers_url: string;
-                /** Format: uri */
-                subscription_url: string;
-                /** Format: uri */
-                svn_url: string;
-                /** Format: uri */
-                tags_url: string;
-                /** Format: uri */
-                teams_url: string;
-                topics: string[];
-                /** Format: uri-template */
-                trees_url: string;
-                /** Format: date-time */
-                updated_at: string;
-                /** Format: uri */
-                url: string;
-                /**
-                 * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-                 * @default false
-                 */
-                use_squash_pr_title_as_default?: boolean;
-                /** @enum {string} */
-                visibility: "public" | "private" | "internal";
-                watchers: number;
-                watchers_count: number;
-                /** @description Whether to require contributors to sign off on web-based commits */
-                web_commit_signoff_required?: boolean;
-              };
-              sha: string;
-              /** User */
-              user: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization";
-                /** Format: uri */
-                url?: string;
-              } | null;
-            };
-            /** Format: uri */
-            html_url: string;
-            id: number;
-            /** Format: uri */
-            issue_url: string;
-            labels: {
-              /** @description 6-character hex code, without the leading #, identifying the color */
-              color: string;
-              default: boolean;
-              description: string | null;
-              id: number;
-              /** @description The name of the label. */
-              name: string;
-              node_id: string;
-              /**
-               * Format: uri
-               * @description URL for the label
-               */
-              url: string;
-            }[];
-            locked: boolean;
-            /** @description Indicates whether maintainers can modify the pull request. */
-            maintainer_can_modify?: boolean;
-            merge_commit_sha: string | null;
-            mergeable?: boolean | null;
-            mergeable_state?: string;
-            merged?: boolean | null;
-            /** Format: date-time */
-            merged_at: string | null;
-            /** User */
-            merged_by?: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            /**
-             * Milestone
-             * @description A collection of related issues and pull requests.
-             */
-            milestone: {
-              /** Format: date-time */
-              closed_at: string | null;
-              closed_issues: number;
-              /** Format: date-time */
-              created_at: string;
-              /** User */
-              creator: {
-                /** Format: uri */
-                avatar_url?: string;
-                deleted?: boolean;
-                email?: string | null;
-                /** Format: uri-template */
-                events_url?: string;
-                /** Format: uri */
-                followers_url?: string;
-                /** Format: uri-template */
-                following_url?: string;
-                /** Format: uri-template */
-                gists_url?: string;
-                gravatar_id?: string;
-                /** Format: uri */
-                html_url?: string;
-                id: number;
-                login: string;
-                name?: string;
-                node_id?: string;
-                /** Format: uri */
-                organizations_url?: string;
-                /** Format: uri */
-                received_events_url?: string;
-                /** Format: uri */
-                repos_url?: string;
-                site_admin?: boolean;
-                /** Format: uri-template */
-                starred_url?: string;
-                /** Format: uri */
-                subscriptions_url?: string;
-                /** @enum {string} */
-                type?: "Bot" | "User" | "Organization" | "Mannequin";
-                /** Format: uri */
-                url?: string;
-              } | null;
-              description: string | null;
-              /** Format: date-time */
-              due_on: string | null;
-              /** Format: uri */
-              html_url: string;
-              id: number;
-              /** Format: uri */
-              labels_url: string;
-              node_id: string;
-              /** @description The number of the milestone. */
-              number: number;
-              open_issues: number;
-              /**
-               * @description The state of the milestone.
-               * @enum {string}
-               */
-              state: "open" | "closed";
-              /** @description The title of the milestone. */
-              title: string;
-              /** Format: date-time */
-              updated_at: string;
-              /** Format: uri */
-              url: string;
-            } | null;
-            node_id: string;
-            /** @description Number uniquely identifying the pull request within its repository. */
-            number: number;
-            /** Format: uri */
-            patch_url: string;
-            rebaseable?: boolean | null;
-            requested_reviewers: OneOf<
-              [
-                {
-                  /** Format: uri */
-                  avatar_url?: string;
-                  deleted?: boolean;
-                  email?: string | null;
-                  /** Format: uri-template */
-                  events_url?: string;
-                  /** Format: uri */
-                  followers_url?: string;
-                  /** Format: uri-template */
-                  following_url?: string;
-                  /** Format: uri-template */
-                  gists_url?: string;
-                  gravatar_id?: string;
-                  /** Format: uri */
-                  html_url?: string;
-                  id: number;
-                  login: string;
-                  name?: string;
-                  node_id?: string;
-                  /** Format: uri */
-                  organizations_url?: string;
-                  /** Format: uri */
-                  received_events_url?: string;
-                  /** Format: uri */
-                  repos_url?: string;
-                  site_admin?: boolean;
-                  /** Format: uri-template */
-                  starred_url?: string;
-                  /** Format: uri */
-                  subscriptions_url?: string;
-                  /** @enum {string} */
-                  type?: "Bot" | "User" | "Organization";
-                  /** Format: uri */
-                  url?: string;
-                } | null,
-                {
-                  deleted?: boolean;
-                  /** @description Description of the team */
-                  description?: string | null;
-                  /** Format: uri */
-                  html_url?: string;
-                  /** @description Unique identifier of the team */
-                  id: number;
-                  /** Format: uri-template */
-                  members_url?: string;
-                  /** @description Name of the team */
-                  name: string;
-                  node_id?: string;
-                  parent?: {
-                    /** @description Description of the team */
-                    description: string | null;
-                    /** Format: uri */
-                    html_url: string;
-                    /** @description Unique identifier of the team */
-                    id: number;
-                    /** Format: uri-template */
-                    members_url: string;
-                    /** @description Name of the team */
-                    name: string;
-                    node_id: string;
-                    /** @description Permission that the team will have for its repositories */
-                    permission: string;
-                    /** @enum {string} */
-                    privacy: "open" | "closed" | "secret";
-                    /** Format: uri */
-                    repositories_url: string;
-                    slug: string;
-                    /**
-                     * Format: uri
-                     * @description URL for the team
-                     */
-                    url: string;
-                  } | null;
-                  /** @description Permission that the team will have for its repositories */
-                  permission?: string;
-                  /** @enum {string} */
-                  privacy?: "open" | "closed" | "secret";
-                  /** Format: uri */
-                  repositories_url?: string;
-                  slug?: string;
-                  /**
-                   * Format: uri
-                   * @description URL for the team
-                   */
-                  url?: string;
-                },
-              ]
-            >[];
-            requested_teams: {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description?: string | null;
-              /** Format: uri */
-              html_url?: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url?: string;
-              /** @description Name of the team */
-              name: string;
-              node_id?: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission?: string;
-              /** @enum {string} */
-              privacy?: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url?: string;
-              slug?: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url?: string;
-            }[];
-            /** Format: uri-template */
-            review_comment_url: string;
-            review_comments?: number;
-            /** Format: uri */
-            review_comments_url: string;
-            /**
-             * @description State of this Pull Request. Either `open` or `closed`.
-             * @enum {string}
-             */
-            state: "open" | "closed";
-            /** Format: uri */
-            statuses_url: string;
-            /** @description The title of the pull request. */
-            title: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /** User */
-            user: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null;
-          };
-          repository: components["schemas"]["repository-webhooks"];
-          /**
-           * Team
-           * @description Groups of organization members that gives permissions on specified repositories.
-           */
-          requested_team: {
-            deleted?: boolean;
-            /** @description Description of the team */
-            description?: string | null;
-            /** Format: uri */
-            html_url?: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url?: string;
-            /** @description Name of the team */
-            name: string;
-            node_id?: string;
-            parent?: {
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            } | null;
-            /** @description Permission that the team will have for its repositories */
-            permission?: string;
-            /** @enum {string} */
-            privacy?: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url?: string;
-            slug?: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url?: string;
-          };
-          sender: components["schemas"]["simple-user-webhooks"];
-        },
-      ]
-    >;
-    /** pull_request_review submitted event */
-    "webhook-pull-request-review-submitted": {
-      /** @enum {string} */
-      action: "submitted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Simple Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        closed_at: string | null;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: uri */
-        commits_url: string;
-        created_at: string;
-        /** Format: uri */
-        diff_url: string;
-        draft: boolean;
-        head: {
-          label: string | null;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        merge_commit_sha: string | null;
-        merged_at: string | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        /** Format: uri */
-        review_comments_url: string;
-        /** @enum {string} */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        title: string;
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      /** @description The review that was affected. */
-      review: {
-        _links: {
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          pull_request: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /** @description The text of the review. */
-        body: string | null;
-        /** @description A commit SHA for the review. */
-        commit_id: string;
-        /** Format: uri */
-        html_url: string;
-        /** @description Unique identifier of the review */
-        id: number;
-        node_id: string;
-        /** Format: uri */
-        pull_request_url: string;
-        state: string;
-        /** Format: date-time */
-        submitted_at: string | null;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request_review_thread resolved event */
-    "webhook-pull-request-review-thread-resolved": {
-      /** @enum {string} */
-      action: "resolved";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Simple Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        closed_at: string | null;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: uri */
-        commits_url: string;
-        created_at: string;
-        /** Format: uri */
-        diff_url: string;
-        draft: boolean;
-        head: {
-          label: string | null;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        merge_commit_sha: string | null;
-        merged_at: string | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        /** Format: uri */
-        review_comments_url: string;
-        /** @enum {string} */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        title: string;
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-      thread: {
-        comments: {
-          _links: {
-            /** Link */
-            html: {
-              /** Format: uri-template */
-              href: string;
-            };
-            /** Link */
-            pull_request: {
-              /** Format: uri-template */
-              href: string;
-            };
-            /** Link */
-            self: {
-              /** Format: uri-template */
-              href: string;
-            };
-          };
-          /**
-           * AuthorAssociation
-           * @description How the author is associated with the repository.
-           * @enum {string}
-           */
-          author_association:
-            | "COLLABORATOR"
-            | "CONTRIBUTOR"
-            | "FIRST_TIMER"
-            | "FIRST_TIME_CONTRIBUTOR"
-            | "MANNEQUIN"
-            | "MEMBER"
-            | "NONE"
-            | "OWNER";
-          /** @description The text of the comment. */
-          body: string;
-          /** @description The SHA of the commit to which the comment applies. */
-          commit_id: string;
-          /** Format: date-time */
-          created_at: string;
-          /** @description The diff of the line that the comment refers to. */
-          diff_hunk: string;
-          /**
-           * Format: uri
-           * @description HTML URL for the pull request review comment.
-           */
-          html_url: string;
-          /** @description The ID of the pull request review comment. */
-          id: number;
-          /** @description The comment ID to reply to. */
-          in_reply_to_id?: number;
-          /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */
-          line: number | null;
-          /** @description The node ID of the pull request review comment. */
-          node_id: string;
-          /** @description The SHA of the original commit to which the comment applies. */
-          original_commit_id: string;
-          /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */
-          original_line: number | null;
-          /** @description The index of the original line in the diff to which the comment applies. */
-          original_position: number;
-          /** @description The first line of the range for a multi-line comment. */
-          original_start_line: number | null;
-          /** @description The relative path of the file to which the comment applies. */
-          path: string;
-          /** @description The line index in the diff to which the comment applies. */
-          position: number | null;
-          /** @description The ID of the pull request review to which the comment belongs. */
-          pull_request_review_id: number | null;
-          /**
-           * Format: uri
-           * @description URL for the pull request that the review comment belongs to.
-           */
-          pull_request_url: string;
-          /** Reactions */
-          reactions: {
-            "+1": number;
-            "-1": number;
-            confused: number;
-            eyes: number;
-            heart: number;
-            hooray: number;
-            laugh: number;
-            rocket: number;
-            total_count: number;
-            /** Format: uri */
-            url: string;
-          };
-          /**
-           * @description The side of the first line of the range for a multi-line comment.
-           * @enum {string}
-           */
-          side: "LEFT" | "RIGHT";
-          /** @description The first line of the range for a multi-line comment. */
-          start_line: number | null;
-          /**
-           * @description The side of the first line of the range for a multi-line comment.
-           * @default RIGHT
-           * @enum {string|null}
-           */
-          start_side: "LEFT" | "RIGHT" | null;
-          /**
-           * @description The level at which the comment is targeted, can be a diff line or a file.
-           * @enum {string}
-           */
-          subject_type?: "line" | "file";
-          /** Format: date-time */
-          updated_at: string;
-          /**
-           * Format: uri
-           * @description URL for the pull request review comment
-           */
-          url: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        }[];
-        node_id: string;
-      };
-    };
-    /** pull_request_review_thread unresolved event */
-    "webhook-pull-request-review-thread-unresolved": {
-      /** @enum {string} */
-      action: "unresolved";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Simple Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        closed_at: string | null;
-        /** Format: uri */
-        comments_url: string;
-        /** Format: uri */
-        commits_url: string;
-        created_at: string;
-        /** Format: uri */
-        diff_url: string;
-        draft: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        merge_commit_sha: string | null;
-        merged_at: string | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description?: string | null;
-              /** Format: uri */
-              html_url?: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url?: string;
-              /** @description Name of the team */
-              name: string;
-              node_id?: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission?: string;
-              /** @enum {string} */
-              privacy?: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url?: string;
-              slug?: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url?: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        /** Format: uri */
-        review_comments_url: string;
-        /** @enum {string} */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        title: string;
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-      thread: {
-        comments: {
-          _links: {
-            /** Link */
-            html: {
-              /** Format: uri-template */
-              href: string;
-            };
-            /** Link */
-            pull_request: {
-              /** Format: uri-template */
-              href: string;
-            };
-            /** Link */
-            self: {
-              /** Format: uri-template */
-              href: string;
-            };
-          };
-          /**
-           * AuthorAssociation
-           * @description How the author is associated with the repository.
-           * @enum {string}
-           */
-          author_association:
-            | "COLLABORATOR"
-            | "CONTRIBUTOR"
-            | "FIRST_TIMER"
-            | "FIRST_TIME_CONTRIBUTOR"
-            | "MANNEQUIN"
-            | "MEMBER"
-            | "NONE"
-            | "OWNER";
-          /** @description The text of the comment. */
-          body: string;
-          /** @description The SHA of the commit to which the comment applies. */
-          commit_id: string;
-          /** Format: date-time */
-          created_at: string;
-          /** @description The diff of the line that the comment refers to. */
-          diff_hunk: string;
-          /**
-           * Format: uri
-           * @description HTML URL for the pull request review comment.
-           */
-          html_url: string;
-          /** @description The ID of the pull request review comment. */
-          id: number;
-          /** @description The comment ID to reply to. */
-          in_reply_to_id?: number;
-          /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */
-          line: number | null;
-          /** @description The node ID of the pull request review comment. */
-          node_id: string;
-          /** @description The SHA of the original commit to which the comment applies. */
-          original_commit_id: string;
-          /** @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment */
-          original_line: number;
-          /** @description The index of the original line in the diff to which the comment applies. */
-          original_position: number;
-          /** @description The first line of the range for a multi-line comment. */
-          original_start_line: number | null;
-          /** @description The relative path of the file to which the comment applies. */
-          path: string;
-          /** @description The line index in the diff to which the comment applies. */
-          position: number | null;
-          /** @description The ID of the pull request review to which the comment belongs. */
-          pull_request_review_id: number | null;
-          /**
-           * Format: uri
-           * @description URL for the pull request that the review comment belongs to.
-           */
-          pull_request_url: string;
-          /** Reactions */
-          reactions: {
-            "+1": number;
-            "-1": number;
-            confused: number;
-            eyes: number;
-            heart: number;
-            hooray: number;
-            laugh: number;
-            rocket: number;
-            total_count: number;
-            /** Format: uri */
-            url: string;
-          };
-          /**
-           * @description The side of the first line of the range for a multi-line comment.
-           * @enum {string}
-           */
-          side: "LEFT" | "RIGHT";
-          /** @description The first line of the range for a multi-line comment. */
-          start_line: number | null;
-          /**
-           * @description The side of the first line of the range for a multi-line comment.
-           * @default RIGHT
-           * @enum {string|null}
-           */
-          start_side: "LEFT" | "RIGHT" | null;
-          /**
-           * @description The level at which the comment is targeted, can be a diff line or a file.
-           * @enum {string}
-           */
-          subject_type?: "line" | "file";
-          /** Format: date-time */
-          updated_at: string;
-          /**
-           * Format: uri
-           * @description URL for the pull request review comment
-           */
-          url: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        }[];
-        node_id: string;
-      };
-    };
-    /** pull_request synchronize event */
-    "webhook-pull-request-synchronize": {
-      /** @enum {string} */
-      action: "synchronize";
-      after: string;
-      before: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit message title.
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request unassigned event */
-    "webhook-pull-request-unassigned": {
-      /** @enum {string} */
-      action: "unassigned";
-      /** User */
-      assignee?: {
-        /** Format: uri */
-        avatar_url?: string;
-        deleted?: boolean;
-        email?: string | null;
-        /** Format: uri-template */
-        events_url?: string;
-        /** Format: uri */
-        followers_url?: string;
-        /** Format: uri-template */
-        following_url?: string;
-        /** Format: uri-template */
-        gists_url?: string;
-        gravatar_id?: string;
-        /** Format: uri */
-        html_url?: string;
-        id: number;
-        login: string;
-        name?: string;
-        node_id?: string;
-        /** Format: uri */
-        organizations_url?: string;
-        /** Format: uri */
-        received_events_url?: string;
-        /** Format: uri */
-        repos_url?: string;
-        site_admin?: boolean;
-        /** Format: uri-template */
-        starred_url?: string;
-        /** Format: uri */
-        subscriptions_url?: string;
-        /** @enum {string} */
-        type?: "Bot" | "User" | "Organization" | "Mannequin";
-        /** Format: uri */
-        url?: string;
-      } | null;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string | null;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string | null;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request unlabeled event */
-    "webhook-pull-request-unlabeled": {
-      /** @enum {string} */
-      action: "unlabeled";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** Label */
-      label?: {
-        /** @description 6-character hex code, without the leading #, identifying the color */
-        color: string;
-        default: boolean;
-        description: string | null;
-        id: number;
-        /** @description The name of the label. */
-        name: string;
-        node_id: string;
-        /**
-         * Format: uri
-         * @description URL for the label
-         */
-        url: string;
-      };
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string | null;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string | null;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit message title.
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization" | "Mannequin";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization" | "Mannequin";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description: string | null;
-              /** Format: uri */
-              html_url: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url: string;
-              /** @description Name of the team */
-              name: string;
-              node_id: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission: string;
-              /** @enum {string} */
-              privacy: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url: string;
-              slug: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization" | "Mannequin";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** pull_request unlocked event */
-    "webhook-pull-request-unlocked": {
-      /** @enum {string} */
-      action: "unlocked";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      /** @description The pull request number. */
-      number: number;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /** Pull Request */
-      pull_request: {
-        _links: {
-          /** Link */
-          comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          commits: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          html: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          issue: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comment: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          review_comments: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          self: {
-            /** Format: uri-template */
-            href: string;
-          };
-          /** Link */
-          statuses: {
-            /** Format: uri-template */
-            href: string;
-          };
-        };
-        /** @enum {string|null} */
-        active_lock_reason:
-          | "resolved"
-          | "off-topic"
-          | "too heated"
-          | "spam"
-          | null;
-        additions?: number;
-        /** User */
-        assignee: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        assignees: ({
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null)[];
-        /**
-         * AuthorAssociation
-         * @description How the author is associated with the repository.
-         * @enum {string}
-         */
-        author_association:
-          | "COLLABORATOR"
-          | "CONTRIBUTOR"
-          | "FIRST_TIMER"
-          | "FIRST_TIME_CONTRIBUTOR"
-          | "MANNEQUIN"
-          | "MEMBER"
-          | "NONE"
-          | "OWNER";
-        /**
-         * PullRequestAutoMerge
-         * @description The status of auto merging a pull request.
-         */
-        auto_merge: {
-          /** @description Commit message for the merge commit. */
-          commit_message: string | null;
-          /** @description Title for the merge commit message. */
-          commit_title: string;
-          /** User */
-          enabled_by: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method: "merge" | "squash" | "rebase";
-        } | null;
-        base: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          };
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        body: string | null;
-        changed_files?: number;
-        /** Format: date-time */
-        closed_at: string | null;
-        comments?: number;
-        /** Format: uri */
-        comments_url: string;
-        commits?: number;
-        /** Format: uri */
-        commits_url: string;
-        /** Format: date-time */
-        created_at: string;
-        deletions?: number;
-        /** Format: uri */
-        diff_url: string;
-        /** @description Indicates whether or not the pull request is a draft. */
-        draft: boolean;
-        head: {
-          label: string;
-          ref: string;
-          /**
-           * Repository
-           * @description A git repository
-           */
-          repo: {
-            /**
-             * @description Whether to allow auto-merge for pull requests.
-             * @default false
-             */
-            allow_auto_merge?: boolean;
-            /** @description Whether to allow private forks */
-            allow_forking?: boolean;
-            /**
-             * @description Whether to allow merge commits for pull requests.
-             * @default true
-             */
-            allow_merge_commit?: boolean;
-            /**
-             * @description Whether to allow rebase merges for pull requests.
-             * @default true
-             */
-            allow_rebase_merge?: boolean;
-            /**
-             * @description Whether to allow squash merges for pull requests.
-             * @default true
-             */
-            allow_squash_merge?: boolean;
-            allow_update_branch?: boolean;
-            /** Format: uri-template */
-            archive_url: string;
-            /**
-             * @description Whether the repository is archived.
-             * @default false
-             */
-            archived: boolean;
-            /** Format: uri-template */
-            assignees_url: string;
-            /** Format: uri-template */
-            blobs_url: string;
-            /** Format: uri-template */
-            branches_url: string;
-            /** Format: uri */
-            clone_url: string;
-            /** Format: uri-template */
-            collaborators_url: string;
-            /** Format: uri-template */
-            comments_url: string;
-            /** Format: uri-template */
-            commits_url: string;
-            /** Format: uri-template */
-            compare_url: string;
-            /** Format: uri-template */
-            contents_url: string;
-            /** Format: uri */
-            contributors_url: string;
-            created_at: number | string;
-            /** @description The default branch of the repository. */
-            default_branch: string;
-            /**
-             * @description Whether to delete head branches when pull requests are merged
-             * @default false
-             */
-            delete_branch_on_merge?: boolean;
-            /** Format: uri */
-            deployments_url: string;
-            description: string | null;
-            /** @description Returns whether or not this repository is disabled. */
-            disabled?: boolean;
-            /** Format: uri */
-            downloads_url: string;
-            /** Format: uri */
-            events_url: string;
-            fork: boolean;
-            forks: number;
-            forks_count: number;
-            /** Format: uri */
-            forks_url: string;
-            full_name: string;
-            /** Format: uri-template */
-            git_commits_url: string;
-            /** Format: uri-template */
-            git_refs_url: string;
-            /** Format: uri-template */
-            git_tags_url: string;
-            /** Format: uri */
-            git_url: string;
-            /**
-             * @description Whether downloads are enabled.
-             * @default true
-             */
-            has_downloads: boolean;
-            /**
-             * @description Whether issues are enabled.
-             * @default true
-             */
-            has_issues: boolean;
-            has_pages: boolean;
-            /**
-             * @description Whether projects are enabled.
-             * @default true
-             */
-            has_projects: boolean;
-            /**
-             * @description Whether the wiki is enabled.
-             * @default true
-             */
-            has_wiki: boolean;
-            /**
-             * @description Whether discussions are enabled.
-             * @default false
-             */
-            has_discussions: boolean;
-            homepage: string | null;
-            /** Format: uri */
-            hooks_url: string;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the repository */
-            id: number;
-            is_template?: boolean;
-            /** Format: uri-template */
-            issue_comment_url: string;
-            /** Format: uri-template */
-            issue_events_url: string;
-            /** Format: uri-template */
-            issues_url: string;
-            /** Format: uri-template */
-            keys_url: string;
-            /** Format: uri-template */
-            labels_url: string;
-            language: string | null;
-            /** Format: uri */
-            languages_url: string;
-            /** License */
-            license: {
-              key: string;
-              name: string;
-              node_id: string;
-              spdx_id: string;
-              /** Format: uri */
-              url: string | null;
-            } | null;
-            master_branch?: string;
-            /**
-             * @description The default value for a merge commit message.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `PR_BODY` - default to the pull request's body.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-            /**
-             * @description The default value for a merge commit title.
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-             * @enum {string}
-             */
-            merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-            /** Format: uri */
-            merges_url: string;
-            /** Format: uri-template */
-            milestones_url: string;
-            /** Format: uri */
-            mirror_url: string | null;
-            /** @description The name of the repository. */
-            name: string;
-            node_id: string;
-            /** Format: uri-template */
-            notifications_url: string;
-            open_issues: number;
-            open_issues_count: number;
-            organization?: string;
-            /** User */
-            owner: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-            permissions?: {
-              admin: boolean;
-              maintain?: boolean;
-              pull: boolean;
-              push: boolean;
-              triage?: boolean;
-            };
-            /** @description Whether the repository is private or public. */
-            private: boolean;
-            public?: boolean;
-            /** Format: uri-template */
-            pulls_url: string;
-            pushed_at: number | string | null;
-            /** Format: uri-template */
-            releases_url: string;
-            role_name?: string | null;
-            size: number;
-            /**
-             * @description The default value for a squash merge commit message:
-             *
-             * - `PR_BODY` - default to the pull request's body.
-             * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-             * - `BLANK` - default to a blank commit message.
-             * @enum {string}
-             */
-            squash_merge_commit_message?:
-              | "PR_BODY"
-              | "COMMIT_MESSAGES"
-              | "BLANK";
-            /**
-             * @description The default value for a squash merge commit title:
-             *
-             * - `PR_TITLE` - default to the pull request's title.
-             * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-             * @enum {string}
-             */
-            squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-            ssh_url: string;
-            stargazers?: number;
-            stargazers_count: number;
-            /** Format: uri */
-            stargazers_url: string;
-            /** Format: uri-template */
-            statuses_url: string;
-            /** Format: uri */
-            subscribers_url: string;
-            /** Format: uri */
-            subscription_url: string;
-            /** Format: uri */
-            svn_url: string;
-            /** Format: uri */
-            tags_url: string;
-            /** Format: uri */
-            teams_url: string;
-            topics: string[];
-            /** Format: uri-template */
-            trees_url: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** Format: uri */
-            url: string;
-            /**
-             * @description Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-             * @default false
-             */
-            use_squash_pr_title_as_default?: boolean;
-            /** @enum {string} */
-            visibility: "public" | "private" | "internal";
-            watchers: number;
-            watchers_count: number;
-            /** @description Whether to require contributors to sign off on web-based commits */
-            web_commit_signoff_required?: boolean;
-          } | null;
-          sha: string;
-          /** User */
-          user: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-        };
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        issue_url: string;
-        labels: {
-          /** @description 6-character hex code, without the leading #, identifying the color */
-          color: string;
-          default: boolean;
-          description: string | null;
-          id: number;
-          /** @description The name of the label. */
-          name: string;
-          node_id: string;
-          /**
-           * Format: uri
-           * @description URL for the label
-           */
-          url: string;
-        }[];
-        locked: boolean;
-        /** @description Indicates whether maintainers can modify the pull request. */
-        maintainer_can_modify?: boolean;
-        merge_commit_sha: string | null;
-        mergeable?: boolean | null;
-        mergeable_state?: string;
-        merged?: boolean | null;
-        /** Format: date-time */
-        merged_at: string | null;
-        /** User */
-        merged_by?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Milestone
-         * @description A collection of related issues and pull requests.
-         */
-        milestone: {
-          /** Format: date-time */
-          closed_at: string | null;
-          closed_issues: number;
-          /** Format: date-time */
-          created_at: string;
-          /** User */
-          creator: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          description: string | null;
-          /** Format: date-time */
-          due_on: string | null;
-          /** Format: uri */
-          html_url: string;
-          id: number;
-          /** Format: uri */
-          labels_url: string;
-          node_id: string;
-          /** @description The number of the milestone. */
-          number: number;
-          open_issues: number;
-          /**
-           * @description The state of the milestone.
-           * @enum {string}
-           */
-          state: "open" | "closed";
-          /** @description The title of the milestone. */
-          title: string;
-          /** Format: date-time */
-          updated_at: string;
-          /** Format: uri */
-          url: string;
-        } | null;
-        node_id: string;
-        /** @description Number uniquely identifying the pull request within its repository. */
-        number: number;
-        /** Format: uri */
-        patch_url: string;
-        rebaseable?: boolean | null;
-        requested_reviewers: OneOf<
-          [
-            {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null,
-            {
-              deleted?: boolean;
-              /** @description Description of the team */
-              description?: string | null;
-              /** Format: uri */
-              html_url?: string;
-              /** @description Unique identifier of the team */
-              id: number;
-              /** Format: uri-template */
-              members_url?: string;
-              /** @description Name of the team */
-              name: string;
-              node_id?: string;
-              parent?: {
-                /** @description Description of the team */
-                description: string | null;
-                /** Format: uri */
-                html_url: string;
-                /** @description Unique identifier of the team */
-                id: number;
-                /** Format: uri-template */
-                members_url: string;
-                /** @description Name of the team */
-                name: string;
-                node_id: string;
-                /** @description Permission that the team will have for its repositories */
-                permission: string;
-                /** @enum {string} */
-                privacy: "open" | "closed" | "secret";
-                /** Format: uri */
-                repositories_url: string;
-                slug: string;
-                /**
-                 * Format: uri
-                 * @description URL for the team
-                 */
-                url: string;
-              } | null;
-              /** @description Permission that the team will have for its repositories */
-              permission?: string;
-              /** @enum {string} */
-              privacy?: "open" | "closed" | "secret";
-              /** Format: uri */
-              repositories_url?: string;
-              slug?: string;
-              /**
-               * Format: uri
-               * @description URL for the team
-               */
-              url?: string;
-            },
-          ]
-        >[];
-        requested_teams: {
-          deleted?: boolean;
-          /** @description Description of the team */
-          description?: string | null;
-          /** Format: uri */
-          html_url?: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url?: string;
-          /** @description Name of the team */
-          name: string;
-          node_id?: string;
-          parent?: {
-            /** @description Description of the team */
-            description: string | null;
-            /** Format: uri */
-            html_url: string;
-            /** @description Unique identifier of the team */
-            id: number;
-            /** Format: uri-template */
-            members_url: string;
-            /** @description Name of the team */
-            name: string;
-            node_id: string;
-            /** @description Permission that the team will have for its repositories */
-            permission: string;
-            /** @enum {string} */
-            privacy: "open" | "closed" | "secret";
-            /** Format: uri */
-            repositories_url: string;
-            slug: string;
-            /**
-             * Format: uri
-             * @description URL for the team
-             */
-            url: string;
-          } | null;
-          /** @description Permission that the team will have for its repositories */
-          permission?: string;
-          /** @enum {string} */
-          privacy?: "open" | "closed" | "secret";
-          /** Format: uri */
-          repositories_url?: string;
-          slug?: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url?: string;
-        }[];
-        /** Format: uri-template */
-        review_comment_url: string;
-        review_comments?: number;
-        /** Format: uri */
-        review_comments_url: string;
-        /**
-         * @description State of this Pull Request. Either `open` or `closed`.
-         * @enum {string}
-         */
-        state: "open" | "closed";
-        /** Format: uri */
-        statuses_url: string;
-        /** @description The title of the pull request. */
-        title: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** User */
-        user: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** push event */
-    "webhook-push": {
-      /** @description The SHA of the most recent commit on `ref` after the push. */
-      after: string;
-      base_ref: string | null;
-      /** @description The SHA of the most recent commit on `ref` before the push. */
-      before: string;
-      /** @description An array of commit objects describing the pushed commits. (Pushed commits are all commits that are included in the `compare` between the `before` commit and the `after` commit.) The array includes a maximum of 20 commits. If necessary, you can use the [Commits API](https://docs.github.com/rest/commits) to fetch additional commits. This limit is applied to timeline events only and isn't applied to webhook deliveries. */
-      commits: {
-        /** @description An array of files added in the commit. */
-        added?: string[];
-        /**
-         * Committer
-         * @description Metaproperties for Git author/committer information.
-         */
-        author: {
-          /** Format: date-time */
-          date?: string;
-          /** Format: email */
-          email: string | null;
-          /** @description The git author's name. */
-          name: string;
-          username?: string;
-        };
-        /**
-         * Committer
-         * @description Metaproperties for Git author/committer information.
-         */
-        committer: {
-          /** Format: date-time */
-          date?: string;
-          /** Format: email */
-          email: string | null;
-          /** @description The git author's name. */
-          name: string;
-          username?: string;
-        };
-        /** @description Whether this commit is distinct from any that have been pushed before. */
-        distinct: boolean;
-        id: string;
-        /** @description The commit message. */
-        message: string;
-        /** @description An array of files modified by the commit. */
-        modified?: string[];
-        /** @description An array of files removed in the commit. */
-        removed?: string[];
-        /**
-         * Format: date-time
-         * @description The ISO 8601 timestamp of the commit.
-         */
-        timestamp: string;
-        tree_id: string;
-        /**
-         * Format: uri
-         * @description URL that points to the commit API resource.
-         */
-        url: string;
-      }[];
-      /** @description URL that shows the changes in this `ref` update, from the `before` commit to the `after` commit. For a newly created `ref` that is directly based on the default branch, this is the comparison between the head of the default branch and the `after` commit. Otherwise, this shows all commits until the `after` commit. */
-      compare: string;
-      /** @description Whether this push created the `ref`. */
-      created: boolean;
-      /** @description Whether this push deleted the `ref`. */
-      deleted: boolean;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      /** @description Whether this push was a force push of the `ref`. */
-      forced: boolean;
-      /** Commit */
-      head_commit: {
-        /** @description An array of files added in the commit. */
-        added?: string[];
-        /**
-         * Committer
-         * @description Metaproperties for Git author/committer information.
-         */
-        author: {
-          /** Format: date-time */
-          date?: string;
-          /** Format: email */
-          email: string | null;
-          /** @description The git author's name. */
-          name: string;
-          username?: string;
-        };
-        /**
-         * Committer
-         * @description Metaproperties for Git author/committer information.
-         */
-        committer: {
-          /** Format: date-time */
-          date?: string;
-          /** Format: email */
-          email: string | null;
-          /** @description The git author's name. */
-          name: string;
-          username?: string;
-        };
-        /** @description Whether this commit is distinct from any that have been pushed before. */
-        distinct: boolean;
-        id: string;
-        /** @description The commit message. */
-        message: string;
-        /** @description An array of files modified by the commit. */
-        modified?: string[];
-        /** @description An array of files removed in the commit. */
-        removed?: string[];
-        /**
-         * Format: date-time
-         * @description The ISO 8601 timestamp of the commit.
-         */
-        timestamp: string;
-        tree_id: string;
-        /**
-         * Format: uri
-         * @description URL that points to the commit API resource.
-         */
-        url: string;
-      } | null;
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /**
-       * Committer
-       * @description Metaproperties for Git author/committer information.
-       */
-      pusher: {
-        /** Format: date-time */
-        date?: string;
-        /** Format: email */
-        email?: string | null;
-        /** @description The git author's name. */
-        name: string;
-        username?: string;
-      };
-      /** @description The full git ref that was pushed. Example: `refs/heads/main` or `refs/tags/v3.14.1`. */
-      ref: string;
-      /**
-       * Repository
-       * @description A git repository
-       */
-      repository: {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow private forks */
-        allow_forking?: boolean;
-        /**
-         * @description Whether to allow merge commits for pull requests.
-         * @default true
-         */
-        allow_merge_commit?: boolean;
-        /**
-         * @description Whether to allow rebase merges for pull requests.
-         * @default true
-         */
-        allow_rebase_merge?: boolean;
-        /**
-         * @description Whether to allow squash merges for pull requests.
-         * @default true
-         */
-        allow_squash_merge?: boolean;
-        allow_update_branch?: boolean;
-        /** Format: uri-template */
-        archive_url: string;
-        /**
-         * @description Whether the repository is archived.
-         * @default false
-         */
-        archived: boolean;
-        /** Format: uri-template */
-        assignees_url: string;
-        /** Format: uri-template */
-        blobs_url: string;
-        /** Format: uri-template */
-        branches_url: string;
-        /** Format: uri */
-        clone_url: string;
-        /** Format: uri-template */
-        collaborators_url: string;
-        /** Format: uri-template */
-        comments_url: string;
-        /** Format: uri-template */
-        commits_url: string;
-        /** Format: uri-template */
-        compare_url: string;
-        /** Format: uri-template */
-        contents_url: string;
-        /** Format: uri */
-        contributors_url: string;
-        created_at: number | string;
-        /** @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. */
-        custom_properties?: {
-          [key: string]: unknown;
-        };
-        /** @description The default branch of the repository. */
-        default_branch: string;
-        /**
-         * @description Whether to delete head branches when pull requests are merged
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /** Format: uri */
-        deployments_url: string;
-        description: string | null;
-        /** @description Returns whether or not this repository is disabled. */
-        disabled?: boolean;
-        /** Format: uri */
-        downloads_url: string;
-        /** Format: uri */
-        events_url: string;
-        fork: boolean;
-        forks: number;
-        forks_count: number;
-        /** Format: uri */
-        forks_url: string;
-        full_name: string;
-        /** Format: uri-template */
-        git_commits_url: string;
-        /** Format: uri-template */
-        git_refs_url: string;
-        /** Format: uri-template */
-        git_tags_url: string;
-        /** Format: uri */
-        git_url: string;
-        /**
-         * @description Whether downloads are enabled.
-         * @default true
-         */
-        has_downloads: boolean;
-        /**
-         * @description Whether issues are enabled.
-         * @default true
-         */
-        has_issues: boolean;
-        has_pages: boolean;
-        /**
-         * @description Whether projects are enabled.
-         * @default true
-         */
-        has_projects: boolean;
-        /**
-         * @description Whether the wiki is enabled.
-         * @default true
-         */
-        has_wiki: boolean;
-        /**
-         * @description Whether discussions are enabled.
-         * @default false
-         */
-        has_discussions: boolean;
-        homepage: string | null;
-        /** Format: uri */
-        hooks_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        is_template?: boolean;
-        /** Format: uri-template */
-        issue_comment_url: string;
-        /** Format: uri-template */
-        issue_events_url: string;
-        /** Format: uri-template */
-        issues_url: string;
-        /** Format: uri-template */
-        keys_url: string;
-        /** Format: uri-template */
-        labels_url: string;
-        language: string | null;
-        /** Format: uri */
-        languages_url: string;
-        /** License */
-        license: {
-          key: string;
-          name: string;
-          node_id: string;
-          spdx_id: string;
-          /** Format: uri */
-          url: string | null;
-        } | null;
-        master_branch?: string;
-        /** Format: uri */
-        merges_url: string;
-        /** Format: uri-template */
-        milestones_url: string;
-        /** Format: uri */
-        mirror_url: string | null;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** Format: uri-template */
-        notifications_url: string;
-        open_issues: number;
-        open_issues_count: number;
-        organization?: string;
-        /** User */
-        owner: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        permissions?: {
-          admin: boolean;
-          maintain?: boolean;
-          pull: boolean;
-          push: boolean;
-          triage?: boolean;
-        };
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-        public?: boolean;
-        /** Format: uri-template */
-        pulls_url: string;
-        pushed_at: number | string | null;
-        /** Format: uri-template */
-        releases_url: string;
-        role_name?: string | null;
-        size: number;
-        ssh_url: string;
-        stargazers?: number;
-        stargazers_count: number;
-        /** Format: uri */
-        stargazers_url: string;
-        /** Format: uri-template */
-        statuses_url: string;
-        /** Format: uri */
-        subscribers_url: string;
-        /** Format: uri */
-        subscription_url: string;
-        /** Format: uri */
-        svn_url: string;
-        /** Format: uri */
-        tags_url: string;
-        /** Format: uri */
-        teams_url: string;
-        topics: string[];
-        /** Format: uri-template */
-        trees_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** @enum {string} */
-        visibility: "public" | "private" | "internal";
-        watchers: number;
-        watchers_count: number;
-        /** @description Whether to require contributors to sign off on web-based commits */
-        web_commit_signoff_required?: boolean;
-      };
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    "webhook-registry-package-published": {
-      /** @enum {string} */
-      action: "published";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      registry_package: {
-        created_at: string | null;
-        description: string | null;
-        ecosystem: string;
-        html_url: string;
-        id: number;
-        name: string;
-        namespace: string;
-        owner: {
-          avatar_url: string;
-          events_url: string;
-          followers_url: string;
-          following_url: string;
-          gists_url: string;
-          gravatar_id: string;
-          html_url: string;
-          id: number;
-          login: string;
-          node_id: string;
-          organizations_url: string;
-          received_events_url: string;
-          repos_url: string;
-          site_admin: boolean;
-          starred_url: string;
-          subscriptions_url: string;
-          type: string;
-          url: string;
-        };
-        package_type: string;
-        package_version: {
-          author?: {
-            avatar_url: string;
-            events_url: string;
-            followers_url: string;
-            following_url: string;
-            gists_url: string;
-            gravatar_id: string;
-            html_url: string;
-            id: number;
-            login: string;
-            node_id: string;
-            organizations_url: string;
-            received_events_url: string;
-            repos_url: string;
-            site_admin: boolean;
-            starred_url: string;
-            subscriptions_url: string;
-            type: string;
-            url: string;
-          };
-          body?: string | Record<string, never>;
-          body_html?: string;
-          container_metadata?: {
-            labels?: Record<string, unknown> | null;
-            manifest?: Record<string, unknown> | null;
-            tag?: {
-              digest?: string;
-              name?: string;
-            };
-          };
-          created_at?: string;
-          description: string;
-          docker_metadata?: {
-            tags?: string[];
-          }[];
-          draft?: boolean;
-          html_url: string;
-          id: number;
-          installation_command: string;
-          manifest?: string;
-          metadata: {
-            [key: string]: unknown;
-          }[];
-          name: string;
-          npm_metadata?: {
-            name?: string;
-            version?: string;
-            npm_user?: string;
-            author?: string | Record<string, never> | null;
-            bugs?: string | Record<string, never> | null;
-            dependencies?: Record<string, never>;
-            dev_dependencies?: Record<string, never>;
-            peer_dependencies?: Record<string, never>;
-            optional_dependencies?: Record<string, never>;
-            description?: string;
-            dist?: string | Record<string, never> | null;
-            git_head?: string;
-            homepage?: string;
-            license?: string;
-            main?: string;
-            repository?: string | Record<string, never> | null;
-            scripts?: Record<string, never>;
-            id?: string;
-            node_version?: string;
-            npm_version?: string;
-            has_shrinkwrap?: boolean;
-            maintainers?: string[];
-            contributors?: string[];
-            engines?: Record<string, never>;
-            keywords?: string[];
-            files?: string[];
-            bin?: Record<string, never>;
-            man?: Record<string, never>;
-            directories?: string | Record<string, never> | null;
-            os?: string[];
-            cpu?: string[];
-            readme?: string;
-            installation_command?: string;
-            release_id?: number;
-            commit_oid?: string;
-            published_via_actions?: boolean;
-            deleted_by_id?: number;
-          } | null;
-          nuget_metadata?:
-            | {
-                id?: string | Record<string, never> | number | null;
-                name?: string;
-                value?: OneOf<
-                  [
-                    boolean,
-                    string,
-                    number,
-                    {
-                      url?: string;
-                      branch?: string;
-                      commit?: string;
-                      type?: string;
-                    },
-                  ]
-                >;
-              }[]
-            | null;
-          package_files: {
-            content_type: string;
-            created_at: string;
-            download_url: string;
-            id: number;
-            md5: string | null;
-            name: string;
-            sha1: string | null;
-            sha256: string | null;
-            size: number;
-            state: string | null;
-            updated_at: string;
-          }[];
-          package_url: string;
-          prerelease?: boolean;
-          release?: {
-            author?: {
-              avatar_url?: string;
-              events_url?: string;
-              followers_url?: string;
-              following_url?: string;
-              gists_url?: string;
-              gravatar_id?: string;
-              html_url?: string;
-              id?: number;
-              login?: string;
-              node_id?: string;
-              organizations_url?: string;
-              received_events_url?: string;
-              repos_url?: string;
-              site_admin?: boolean;
-              starred_url?: string;
-              subscriptions_url?: string;
-              type?: string;
-              url?: string;
-            };
-            created_at?: string;
-            draft?: boolean;
-            html_url?: string;
-            id?: number;
-            name?: string | null;
-            prerelease?: boolean;
-            published_at?: string;
-            tag_name?: string;
-            target_commitish?: string;
-            url?: string;
-          };
-          rubygems_metadata?: components["schemas"]["webhook-rubygems-metadata"][];
-          summary: string;
-          tag_name?: string;
-          target_commitish?: string;
-          target_oid?: string;
-          updated_at?: string;
-          version: string;
-        } | null;
-        registry: {
-          about_url?: string;
-          name?: string;
-          type?: string;
-          url?: string;
-          vendor?: string;
-        } | null;
-        updated_at: string | null;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    "webhook-registry-package-updated": {
-      /** @enum {string} */
-      action: "updated";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      registry_package: {
-        created_at: string;
-        description: Record<string, unknown> | null;
-        ecosystem: string;
-        html_url: string;
-        id: number;
-        name: string;
-        namespace: string;
-        owner: {
-          avatar_url: string;
-          events_url: string;
-          followers_url: string;
-          following_url: string;
-          gists_url: string;
-          gravatar_id: string;
-          html_url: string;
-          id: number;
-          login: string;
-          node_id: string;
-          organizations_url: string;
-          received_events_url: string;
-          repos_url: string;
-          site_admin: boolean;
-          starred_url: string;
-          subscriptions_url: string;
-          type: string;
-          url: string;
-        };
-        package_type: string;
-        package_version: {
-          author: {
-            avatar_url: string;
-            events_url: string;
-            followers_url: string;
-            following_url: string;
-            gists_url: string;
-            gravatar_id: string;
-            html_url: string;
-            id: number;
-            login: string;
-            node_id: string;
-            organizations_url: string;
-            received_events_url: string;
-            repos_url: string;
-            site_admin: boolean;
-            starred_url: string;
-            subscriptions_url: string;
-            type: string;
-            url: string;
-          };
-          body: string;
-          body_html: string;
-          created_at: string;
-          description: string;
-          docker_metadata?: ({
-            tags?: string[];
-          } | null)[];
-          draft?: boolean;
-          html_url: string;
-          id: number;
-          installation_command: string;
-          manifest?: string;
-          metadata: {
-            [key: string]: unknown;
-          }[];
-          name: string;
-          package_files: {
-            content_type?: string;
-            created_at?: string;
-            download_url?: string;
-            id?: number;
-            md5?: string | null;
-            name?: string;
-            sha1?: string | null;
-            sha256?: string;
-            size?: number;
-            state?: string;
-            updated_at?: string;
-          }[];
-          package_url: string;
-          prerelease?: boolean;
-          release?: {
-            author: {
-              avatar_url: string;
-              events_url: string;
-              followers_url: string;
-              following_url: string;
-              gists_url: string;
-              gravatar_id: string;
-              html_url: string;
-              id: number;
-              login: string;
-              node_id: string;
-              organizations_url: string;
-              received_events_url: string;
-              repos_url: string;
-              site_admin: boolean;
-              starred_url: string;
-              subscriptions_url: string;
-              type: string;
-              url: string;
-            };
-            created_at: string;
-            draft: boolean;
-            html_url: string;
-            id: number;
-            name: string;
-            prerelease: boolean;
-            published_at: string;
-            tag_name: string;
-            target_commitish: string;
-            url: string;
-          };
-          rubygems_metadata?: components["schemas"]["webhook-rubygems-metadata"][];
-          summary: string;
-          tag_name?: string;
-          target_commitish: string;
-          target_oid: string;
-          updated_at: string;
-          version: string;
-        };
-        registry: Record<string, unknown> | null;
-        updated_at: string;
-      };
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** release created event */
-    "webhook-release-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /**
-       * Release
-       * @description The [release](https://docs.github.com/rest/releases/releases/#get-a-release) object.
-       */
-      release: {
-        assets: {
-          /** Format: uri */
-          browser_download_url: string;
-          content_type: string;
-          /** Format: date-time */
-          created_at: string;
-          download_count: number;
-          id: number;
-          label: string | null;
-          /** @description The file name of the asset. */
-          name: string;
-          node_id: string;
-          size: number;
-          /**
-           * @description State of the release asset.
-           * @enum {string}
-           */
-          state: "uploaded";
-          /** Format: date-time */
-          updated_at: string;
-          /** User */
-          uploader?: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** Format: uri */
-          url: string;
-        }[];
-        /** Format: uri */
-        assets_url: string;
-        /** User */
-        author: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        body: string | null;
-        /** Format: date-time */
-        created_at: string | null;
-        /** Format: uri */
-        discussion_url?: string;
-        /** @description Whether the release is a draft or published */
-        draft: boolean;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string | null;
-        node_id: string;
-        /** @description Whether the release is identified as a prerelease or a full release. */
-        prerelease: boolean;
-        /** Format: date-time */
-        published_at: string | null;
-        /** Reactions */
-        reactions?: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** @description The name of the tag. */
-        tag_name: string;
-        /** Format: uri */
-        tarball_url: string | null;
-        /** @description Specifies the commitish value that determines where the Git tag is created from. */
-        target_commitish: string;
-        /** Format: uri-template */
-        upload_url: string;
-        /** Format: uri */
-        url: string;
-        /** Format: uri */
-        zipball_url: string | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** release deleted event */
-    "webhook-release-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /**
-       * Release
-       * @description The [release](https://docs.github.com/rest/releases/releases/#get-a-release) object.
-       */
-      release: {
-        assets: {
-          /** Format: uri */
-          browser_download_url: string;
-          content_type: string;
-          /** Format: date-time */
-          created_at: string;
-          download_count: number;
-          id: number;
-          label: string | null;
-          /** @description The file name of the asset. */
-          name: string;
-          node_id: string;
-          size: number;
-          /**
-           * @description State of the release asset.
-           * @enum {string}
-           */
-          state: "uploaded";
-          /** Format: date-time */
-          updated_at: string;
-          /** User */
-          uploader?: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** Format: uri */
-          url: string;
-        }[];
-        /** Format: uri */
-        assets_url: string;
-        /** User */
-        author: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        body: string | null;
-        /** Format: date-time */
-        created_at: string | null;
-        /** Format: uri */
-        discussion_url?: string;
-        /** @description Whether the release is a draft or published */
-        draft: boolean;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string | null;
-        node_id: string;
-        /** @description Whether the release is identified as a prerelease or a full release. */
-        prerelease: boolean;
-        /** Format: date-time */
-        published_at: string | null;
-        /** Reactions */
-        reactions?: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** @description The name of the tag. */
-        tag_name: string;
-        /** Format: uri */
-        tarball_url: string | null;
-        /** @description Specifies the commitish value that determines where the Git tag is created from. */
-        target_commitish: string;
-        /** Format: uri-template */
-        upload_url: string;
-        /** Format: uri */
-        url: string;
-        /** Format: uri */
-        zipball_url: string | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** release edited event */
-    "webhook-release-edited": {
-      /** @enum {string} */
-      action: "edited";
-      changes: {
-        body?: {
-          /** @description The previous version of the body if the action was `edited`. */
-          from: string;
-        };
-        name?: {
-          /** @description The previous version of the name if the action was `edited`. */
-          from: string;
-        };
-        make_latest?: {
-          /** @description Whether this release was explicitly `edited` to be the latest. */
-          to: boolean;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /**
-       * Release
-       * @description The [release](https://docs.github.com/rest/releases/releases/#get-a-release) object.
-       */
-      release: {
-        assets: {
-          /** Format: uri */
-          browser_download_url: string;
-          content_type: string;
-          /** Format: date-time */
-          created_at: string;
-          download_count: number;
-          id: number;
-          label: string | null;
-          /** @description The file name of the asset. */
-          name: string;
-          node_id: string;
-          size: number;
-          /**
-           * @description State of the release asset.
-           * @enum {string}
-           */
-          state: "uploaded";
-          /** Format: date-time */
-          updated_at: string;
-          /** User */
-          uploader?: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** Format: uri */
-          url: string;
-        }[];
-        /** Format: uri */
-        assets_url: string;
-        /** User */
-        author: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        body: string | null;
-        /** Format: date-time */
-        created_at: string | null;
-        /** Format: uri */
-        discussion_url?: string;
-        /** @description Whether the release is a draft or published */
-        draft: boolean;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string | null;
-        node_id: string;
-        /** @description Whether the release is identified as a prerelease or a full release. */
-        prerelease: boolean;
-        /** Format: date-time */
-        published_at: string | null;
-        /** Reactions */
-        reactions?: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** @description The name of the tag. */
-        tag_name: string;
-        /** Format: uri */
-        tarball_url: string | null;
-        /** @description Specifies the commitish value that determines where the Git tag is created from. */
-        target_commitish: string;
-        /** Format: uri-template */
-        upload_url: string;
-        /** Format: uri */
-        url: string;
-        /** Format: uri */
-        zipball_url: string | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** release prereleased event */
-    "webhook-release-prereleased": {
-      /** @enum {string} */
-      action: "prereleased";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      release: {
-        assets: {
-          /** Format: uri */
-          browser_download_url: string;
-          content_type: string;
-          /** Format: date-time */
-          created_at: string;
-          download_count: number;
-          id: number;
-          label: string | null;
-          /** @description The file name of the asset. */
-          name: string;
-          node_id: string;
-          size: number;
-          /**
-           * @description State of the release asset.
-           * @enum {string}
-           */
-          state: "uploaded";
-          /** Format: date-time */
-          updated_at: string;
-          /** User */
-          uploader?: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** Format: uri */
-          url: string;
-        }[];
-        /** Format: uri */
-        assets_url: string;
-        /** User */
-        author: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        body: string | null;
-        /** Format: date-time */
-        created_at: string | null;
-        /** Format: uri */
-        discussion_url?: string;
-        /** @description Whether the release is a draft or published */
-        draft: boolean;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string | null;
-        node_id: string;
-        /** @description Whether the release is identified as a prerelease or a full release. */
-        prerelease: boolean;
-        /** Format: date-time */
-        published_at: string | null;
-        /** Reactions */
-        reactions?: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** @description The name of the tag. */
-        tag_name: string;
-        /** Format: uri */
-        tarball_url: string | null;
-        /** @description Specifies the commitish value that determines where the Git tag is created from. */
-        target_commitish: string;
-        /** Format: uri-template */
-        upload_url: string;
-        /** Format: uri */
-        url: string;
-        /** Format: uri */
-        zipball_url: string | null;
-      } & {
-        assets?: (Record<string, unknown> | null)[];
-        assets_url?: string;
-        author?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        body?: string | null;
-        created_at?: string;
-        draft?: boolean;
-        html_url?: string;
-        id?: number;
-        name?: string | null;
-        node_id?: string;
-        /**
-         * @description Whether the release is identified as a prerelease or a full release.
-         * @enum {boolean}
-         */
-        prerelease: true;
-        published_at?: string | null;
-        tag_name?: string;
-        tarball_url?: string | null;
-        target_commitish?: string;
-        upload_url?: string;
-        url?: string;
-        zipball_url?: string | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** release published event */
-    "webhook-release-published": {
-      /** @enum {string} */
-      action: "published";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      release: {
-        assets: {
-          /** Format: uri */
-          browser_download_url: string;
-          content_type: string;
-          /** Format: date-time */
-          created_at: string;
-          download_count: number;
-          id: number;
-          label: string | null;
-          /** @description The file name of the asset. */
-          name: string;
-          node_id: string;
-          size: number;
-          /**
-           * @description State of the release asset.
-           * @enum {string}
-           */
-          state: "uploaded";
-          /** Format: date-time */
-          updated_at: string;
-          /** User */
-          uploader?: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** Format: uri */
-          url: string;
-        }[];
-        /** Format: uri */
-        assets_url: string;
-        /** User */
-        author: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        body: string | null;
-        /** Format: date-time */
-        created_at: string | null;
-        /** Format: uri */
-        discussion_url?: string;
-        /** @description Whether the release is a draft or published */
-        draft: boolean;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string | null;
-        node_id: string;
-        /** @description Whether the release is identified as a prerelease or a full release. */
-        prerelease: boolean;
-        /** Format: date-time */
-        published_at: string | null;
-        /** Reactions */
-        reactions?: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** @description The name of the tag. */
-        tag_name: string;
-        /** Format: uri */
-        tarball_url: string | null;
-        /** @description Specifies the commitish value that determines where the Git tag is created from. */
-        target_commitish: string;
-        /** Format: uri-template */
-        upload_url: string;
-        /** Format: uri */
-        url: string;
-        /** Format: uri */
-        zipball_url: string | null;
-      } & {
-        assets?: (Record<string, unknown> | null)[];
-        assets_url?: string;
-        author?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        body?: string | null;
-        created_at?: string;
-        draft?: boolean;
-        html_url?: string;
-        id?: number;
-        name?: string | null;
-        node_id?: string;
-        prerelease?: boolean;
-        /** Format: date-time */
-        published_at: string | null;
-        tag_name?: string;
-        tarball_url?: string | null;
-        target_commitish?: string;
-        upload_url?: string;
-        url?: string;
-        zipball_url?: string | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** release released event */
-    "webhook-release-released": {
-      /** @enum {string} */
-      action: "released";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      /**
-       * Release
-       * @description The [release](https://docs.github.com/rest/releases/releases/#get-a-release) object.
-       */
-      release: {
-        assets: {
-          /** Format: uri */
-          browser_download_url: string;
-          content_type: string;
-          /** Format: date-time */
-          created_at: string;
-          download_count: number;
-          id: number;
-          label: string | null;
-          /** @description The file name of the asset. */
-          name: string;
-          node_id: string;
-          size: number;
-          /**
-           * @description State of the release asset.
-           * @enum {string}
-           */
-          state: "uploaded";
-          /** Format: date-time */
-          updated_at: string;
-          /** User */
-          uploader?: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** Format: uri */
-          url: string;
-        }[];
-        /** Format: uri */
-        assets_url: string;
-        /** User */
-        author: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        body: string | null;
-        /** Format: date-time */
-        created_at: string | null;
-        /** Format: uri */
-        discussion_url?: string;
-        /** @description Whether the release is a draft or published */
-        draft: boolean;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string | null;
-        node_id: string;
-        /** @description Whether the release is identified as a prerelease or a full release. */
-        prerelease: boolean;
-        /** Format: date-time */
-        published_at: string | null;
-        /** Reactions */
-        reactions?: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** @description The name of the tag. */
-        tag_name: string;
-        /** Format: uri */
-        tarball_url: string | null;
-        /** @description Specifies the commitish value that determines where the Git tag is created from. */
-        target_commitish: string;
-        /** Format: uri-template */
-        upload_url: string;
-        /** Format: uri */
-        url: string;
-        /** Format: uri */
-        zipball_url: string | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** release unpublished event */
-    "webhook-release-unpublished": {
-      /** @enum {string} */
-      action: "unpublished";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      release: {
-        assets: {
-          /** Format: uri */
-          browser_download_url: string;
-          content_type: string;
-          /** Format: date-time */
-          created_at: string;
-          download_count: number;
-          id: number;
-          label: string | null;
-          /** @description The file name of the asset. */
-          name: string;
-          node_id: string;
-          size: number;
-          /**
-           * @description State of the release asset.
-           * @enum {string}
-           */
-          state: "uploaded";
-          /** Format: date-time */
-          updated_at: string;
-          /** User */
-          uploader?: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** Format: uri */
-          url: string;
-        }[];
-        /** Format: uri */
-        assets_url: string;
-        /** User */
-        author: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        body: string | null;
-        /** Format: date-time */
-        created_at: string | null;
-        /** Format: uri */
-        discussion_url?: string;
-        /** @description Whether the release is a draft or published */
-        draft: boolean;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string | null;
-        node_id: string;
-        /** @description Whether the release is identified as a prerelease or a full release. */
-        prerelease: boolean;
-        /** Format: date-time */
-        published_at: string | null;
-        /** Reactions */
-        reactions?: {
-          "+1": number;
-          "-1": number;
-          confused: number;
-          eyes: number;
-          heart: number;
-          hooray: number;
-          laugh: number;
-          rocket: number;
-          total_count: number;
-          /** Format: uri */
-          url: string;
-        };
-        /** @description The name of the tag. */
-        tag_name: string;
-        /** Format: uri */
-        tarball_url: string | null;
-        /** @description Specifies the commitish value that determines where the Git tag is created from. */
-        target_commitish: string;
-        /** Format: uri-template */
-        upload_url: string;
-        /** Format: uri */
-        url: string;
-        /** Format: uri */
-        zipball_url: string | null;
-      } & {
-        assets?: (Record<string, unknown> | null)[];
-        assets_url?: string;
-        author?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        body?: string | null;
-        created_at?: string;
-        draft?: boolean;
-        html_url?: string;
-        id?: number;
-        name?: string | null;
-        node_id?: string;
-        prerelease?: boolean;
-        published_at: string | null;
-        tag_name?: string;
-        tarball_url?: string | null;
-        target_commitish?: string;
-        upload_url?: string;
-        url?: string;
-        zipball_url?: string | null;
-      };
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Repository advisory published event */
-    "webhook-repository-advisory-published": {
-      /** @enum {string} */
-      action: "published";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      repository_advisory: components["schemas"]["repository-advisory"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Repository advisory reported event */
-    "webhook-repository-advisory-reported": {
-      /** @enum {string} */
-      action: "reported";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      repository_advisory: components["schemas"]["repository-advisory"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository archived event */
-    "webhook-repository-archived": {
-      /** @enum {string} */
-      action: "archived";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository created event */
-    "webhook-repository-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository deleted event */
-    "webhook-repository-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository_dispatch event */
-    "webhook-repository-dispatch-sample": {
-      /** @enum {string} */
-      action: "sample.collected";
-      branch: string;
-      client_payload: {
-        [key: string]: unknown;
-      } | null;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository edited event */
-    "webhook-repository-edited": {
-      /** @enum {string} */
-      action: "edited";
-      changes: {
-        default_branch?: {
-          from: string;
-        };
-        description?: {
-          from: string | null;
-        };
-        homepage?: {
-          from: string | null;
-        };
-        topics?: {
-          from?: string[] | null;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository_import event */
-    "webhook-repository-import": {
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      /** @enum {string} */
-      status: "success" | "cancelled" | "failure";
-    };
-    /** repository privatized event */
-    "webhook-repository-privatized": {
-      /** @enum {string} */
-      action: "privatized";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository publicized event */
-    "webhook-repository-publicized": {
-      /** @enum {string} */
-      action: "publicized";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository renamed event */
-    "webhook-repository-renamed": {
-      /** @enum {string} */
-      action: "renamed";
-      changes: {
-        repository: {
-          name: {
-            from: string;
-          };
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository ruleset created event */
-    "webhook-repository-ruleset-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      repository_ruleset: components["schemas"]["repository-ruleset"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository ruleset deleted event */
-    "webhook-repository-ruleset-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      repository_ruleset: components["schemas"]["repository-ruleset"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository ruleset edited event */
-    "webhook-repository-ruleset-edited": {
-      /** @enum {string} */
-      action: "edited";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      repository_ruleset: components["schemas"]["repository-ruleset"];
-      changes?: {
-        name?: {
-          from?: string;
-        };
-        enforcement?: {
-          from?: string;
-        };
-        conditions?: {
-          added?: components["schemas"]["repository-ruleset-conditions"][];
-          deleted?: components["schemas"]["repository-ruleset-conditions"][];
-          updated?: {
-            condition?: components["schemas"]["repository-ruleset-conditions"];
-            changes?: {
-              condition_type?: {
-                from?: string;
-              };
-              target?: {
-                from?: string;
-              };
-              include?: {
-                from?: string[];
-              };
-              exclude?: {
-                from?: string[];
-              };
-            };
-          }[];
-        };
-        rules?: {
-          added?: components["schemas"]["repository-rule"][];
-          deleted?: components["schemas"]["repository-rule"][];
-          updated?: {
-            rule?: components["schemas"]["repository-rule"];
-            changes?: {
-              configuration?: {
-                from?: string;
-              };
-              rule_type?: {
-                from?: string;
-              };
-              pattern?: {
-                from?: string;
-              };
-            };
-          }[];
-        };
-      };
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository transferred event */
-    "webhook-repository-transferred": {
-      /** @enum {string} */
-      action: "transferred";
-      changes: {
-        owner: {
-          from: {
-            /** Organization */
-            organization?: {
-              /** Format: uri */
-              avatar_url: string;
-              description: string | null;
-              /** Format: uri */
-              events_url: string;
-              /** Format: uri */
-              hooks_url: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              /** Format: uri */
-              issues_url: string;
-              login: string;
-              /** Format: uri-template */
-              members_url: string;
-              node_id: string;
-              /** Format: uri-template */
-              public_members_url: string;
-              /** Format: uri */
-              repos_url: string;
-              /** Format: uri */
-              url: string;
-            };
-            /** User */
-            user?: {
-              /** Format: uri */
-              avatar_url?: string;
-              deleted?: boolean;
-              email?: string | null;
-              /** Format: uri-template */
-              events_url?: string;
-              /** Format: uri */
-              followers_url?: string;
-              /** Format: uri-template */
-              following_url?: string;
-              /** Format: uri-template */
-              gists_url?: string;
-              gravatar_id?: string;
-              /** Format: uri */
-              html_url?: string;
-              id: number;
-              login: string;
-              name?: string;
-              node_id?: string;
-              /** Format: uri */
-              organizations_url?: string;
-              /** Format: uri */
-              received_events_url?: string;
-              /** Format: uri */
-              repos_url?: string;
-              site_admin?: boolean;
-              /** Format: uri-template */
-              starred_url?: string;
-              /** Format: uri */
-              subscriptions_url?: string;
-              /** @enum {string} */
-              type?: "Bot" | "User" | "Organization";
-              /** Format: uri */
-              url?: string;
-            } | null;
-          };
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository unarchived event */
-    "webhook-repository-unarchived": {
-      /** @enum {string} */
-      action: "unarchived";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository_vulnerability_alert create event */
-    "webhook-repository-vulnerability-alert-create": {
-      /** @enum {string} */
-      action: "create";
-      alert: {
-        affected_package_name: string;
-        affected_range: string;
-        created_at: string;
-        dismiss_reason?: string;
-        dismissed_at?: string;
-        /** User */
-        dismisser?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        external_identifier: string;
-        /** Format: uri */
-        external_reference: string | null;
-        fix_reason?: string;
-        /** Format: date-time */
-        fixed_at?: string;
-        fixed_in?: string;
-        ghsa_id: string;
-        id: number;
-        node_id: string;
-        number: number;
-        severity: string;
-        /** @enum {string} */
-        state: "open" | "dismissed" | "fixed";
-      } & {
-        affected_package_name?: string;
-        affected_range?: string;
-        created_at?: string;
-        external_identifier?: string;
-        external_reference?: string | null;
-        fixed_in?: string;
-        ghsa_id?: string;
-        id?: number;
-        node_id?: string;
-        number?: number;
-        severity?: string;
-        /** @enum {string} */
-        state: "open";
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository_vulnerability_alert dismiss event */
-    "webhook-repository-vulnerability-alert-dismiss": {
-      /** @enum {string} */
-      action: "dismiss";
-      alert: {
-        affected_package_name: string;
-        affected_range: string;
-        created_at: string;
-        dismiss_comment?: string | null;
-        dismiss_reason?: string;
-        dismissed_at?: string;
-        /** User */
-        dismisser?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        external_identifier: string;
-        /** Format: uri */
-        external_reference: string | null;
-        fix_reason?: string;
-        /** Format: date-time */
-        fixed_at?: string;
-        fixed_in?: string;
-        ghsa_id: string;
-        id: number;
-        node_id: string;
-        number: number;
-        severity: string;
-        /** @enum {string} */
-        state: "open" | "dismissed" | "fixed";
-      } & {
-        affected_package_name?: string;
-        affected_range?: string;
-        created_at?: string;
-        dismiss_comment?: string | null;
-        dismiss_reason: string;
-        dismissed_at: string;
-        /** User */
-        dismisser: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        external_identifier?: string;
-        external_reference?: string | null;
-        fixed_in?: string;
-        ghsa_id?: string;
-        id?: number;
-        node_id?: string;
-        number?: number;
-        severity?: string;
-        /** @enum {string} */
-        state: "dismissed";
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository_vulnerability_alert reopen event */
-    "webhook-repository-vulnerability-alert-reopen": {
-      /** @enum {string} */
-      action: "reopen";
-      alert: {
-        affected_package_name: string;
-        affected_range: string;
-        created_at: string;
-        dismiss_reason?: string;
-        dismissed_at?: string;
-        /** User */
-        dismisser?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        external_identifier: string;
-        /** Format: uri */
-        external_reference: string | null;
-        fix_reason?: string;
-        /** Format: date-time */
-        fixed_at?: string;
-        fixed_in?: string;
-        ghsa_id: string;
-        id: number;
-        node_id: string;
-        number: number;
-        severity: string;
-        /** @enum {string} */
-        state: "open" | "dismissed" | "fixed";
-      } & {
-        affected_package_name?: string;
-        affected_range?: string;
-        created_at?: string;
-        external_identifier?: string;
-        external_reference?: string | null;
-        fixed_in?: string;
-        ghsa_id?: string;
-        id?: number;
-        node_id?: string;
-        number?: number;
-        severity?: string;
-        /** @enum {string} */
-        state: "open";
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** repository_vulnerability_alert resolve event */
-    "webhook-repository-vulnerability-alert-resolve": {
-      /** @enum {string} */
-      action: "resolve";
-      alert: {
-        affected_package_name: string;
-        affected_range: string;
-        created_at: string;
-        dismiss_reason?: string;
-        dismissed_at?: string;
-        /** User */
-        dismisser?: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        external_identifier: string;
-        /** Format: uri */
-        external_reference: string | null;
-        fix_reason?: string;
-        /** Format: date-time */
-        fixed_at?: string;
-        fixed_in?: string;
-        ghsa_id: string;
-        id: number;
-        node_id: string;
-        number: number;
-        severity: string;
-        /** @enum {string} */
-        state: "open" | "dismissed" | "fixed";
-      } & {
-        affected_package_name?: string;
-        affected_range?: string;
-        created_at?: string;
-        external_identifier?: string;
-        external_reference?: string | null;
-        fix_reason?: string;
-        /** Format: date-time */
-        fixed_at?: string;
-        fixed_in?: string;
-        ghsa_id?: string;
-        id?: number;
-        node_id?: string;
-        number?: number;
-        severity?: string;
-        /** @enum {string} */
-        state: "fixed" | "open";
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** secret_scanning_alert created event */
-    "webhook-secret-scanning-alert-created": {
-      /** @enum {string} */
-      action: "created";
-      alert: components["schemas"]["secret-scanning-alert-webhook"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Secret Scanning Alert Location Created Event */
-    "webhook-secret-scanning-alert-location-created": {
-      /** @enum {string} */
-      action?: "created";
-      alert: components["schemas"]["secret-scanning-alert-webhook"];
-      installation?: components["schemas"]["simple-installation"];
-      location: components["schemas"]["secret-scanning-location"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** Secret Scanning Alert Location Created Event */
-    "webhook-secret-scanning-alert-location-created-form-encoded": {
-      /** @description A URL-encoded string of the secret_scanning_alert_location.created JSON payload. The decoded payload is a JSON object. */
-      payload: string;
-    };
-    /** secret_scanning_alert reopened event */
-    "webhook-secret-scanning-alert-reopened": {
-      /** @enum {string} */
-      action: "reopened";
-      alert: components["schemas"]["secret-scanning-alert-webhook"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** secret_scanning_alert resolved event */
-    "webhook-secret-scanning-alert-resolved": {
-      /** @enum {string} */
-      action: "resolved";
-      alert: components["schemas"]["secret-scanning-alert-webhook"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** secret_scanning_alert revoked event */
-    "webhook-secret-scanning-alert-revoked": {
-      /** @enum {string} */
-      action: "revoked";
-      alert: components["schemas"]["secret-scanning-alert-webhook"];
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** security_advisory published event */
-    "webhook-security-advisory-published": {
-      /** @enum {string} */
-      action: "published";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      /** @description The details of the security advisory, including summary, description, and severity. */
-      security_advisory: {
-        cvss: {
-          score: number;
-          vector_string: string | null;
-        };
-        cwes: {
-          cwe_id: string;
-          name: string;
-        }[];
-        description: string;
-        ghsa_id: string;
-        identifiers: {
-          type: string;
-          value: string;
-        }[];
-        published_at: string;
-        references: {
-          /** Format: uri */
-          url: string;
-        }[];
-        severity: string;
-        summary: string;
-        updated_at: string;
-        vulnerabilities: {
-          first_patched_version: {
-            identifier: string;
-          } | null;
-          package: {
-            ecosystem: string;
-            name: string;
-          };
-          severity: string;
-          vulnerable_version_range: string;
-        }[];
-        withdrawn_at: string | null;
-      };
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** security_advisory updated event */
-    "webhook-security-advisory-updated": {
-      /** @enum {string} */
-      action: "updated";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      /** @description The details of the security advisory, including summary, description, and severity. */
-      security_advisory: {
-        cvss: {
-          score: number;
-          vector_string: string | null;
-        };
-        cwes: {
-          cwe_id: string;
-          name: string;
-        }[];
-        description: string;
-        ghsa_id: string;
-        identifiers: {
-          type: string;
-          value: string;
-        }[];
-        published_at: string;
-        references: {
-          /** Format: uri */
-          url: string;
-        }[];
-        severity: string;
-        summary: string;
-        updated_at: string;
-        vulnerabilities: {
-          first_patched_version: {
-            identifier: string;
-          } | null;
-          package: {
-            ecosystem: string;
-            name: string;
-          };
-          severity: string;
-          vulnerable_version_range: string;
-        }[];
-        withdrawn_at: string | null;
-      };
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** security_advisory withdrawn event */
-    "webhook-security-advisory-withdrawn": {
-      /** @enum {string} */
-      action: "withdrawn";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      /** @description The details of the security advisory, including summary, description, and severity. */
-      security_advisory: {
-        cvss: {
-          score: number;
-          vector_string: string | null;
-        };
-        cwes: {
-          cwe_id: string;
-          name: string;
-        }[];
-        description: string;
-        ghsa_id: string;
-        identifiers: {
-          type: string;
-          value: string;
-        }[];
-        published_at: string;
-        references: {
-          /** Format: uri */
-          url: string;
-        }[];
-        severity: string;
-        summary: string;
-        updated_at: string;
-        vulnerabilities: {
-          first_patched_version: {
-            identifier: string;
-          } | null;
-          package: {
-            ecosystem: string;
-            name: string;
-          };
-          severity: string;
-          vulnerable_version_range: string;
-        }[];
-        withdrawn_at: string;
-      };
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** security_and_analysis event */
-    "webhook-security-and-analysis": {
-      changes: {
-        from?: {
-          security_and_analysis?: components["schemas"]["security-and-analysis"];
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["full-repository"];
-      sender?: components["schemas"]["simple-user-webhooks"];
-    };
-    /** sponsorship cancelled event */
-    "webhook-sponsorship-cancelled": {
-      /** @enum {string} */
-      action: "cancelled";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      sponsorship: {
-        created_at: string;
-        maintainer?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        node_id: string;
-        privacy_level: string;
-        /** User */
-        sponsor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** User */
-        sponsorable: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Sponsorship Tier
-         * @description The `tier_changed` and `pending_tier_change` will include the original tier before the change or pending change. For more information, see the pending tier change payload.
-         */
-        tier: {
-          created_at: string;
-          description: string;
-          is_custom_ammount?: boolean;
-          is_custom_amount?: boolean;
-          is_one_time: boolean;
-          monthly_price_in_cents: number;
-          monthly_price_in_dollars: number;
-          name: string;
-          node_id: string;
-        };
-      };
-    };
-    /** sponsorship created event */
-    "webhook-sponsorship-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      sponsorship: {
-        created_at: string;
-        maintainer?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        node_id: string;
-        privacy_level: string;
-        /** User */
-        sponsor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** User */
-        sponsorable: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Sponsorship Tier
-         * @description The `tier_changed` and `pending_tier_change` will include the original tier before the change or pending change. For more information, see the pending tier change payload.
-         */
-        tier: {
-          created_at: string;
-          description: string;
-          is_custom_ammount?: boolean;
-          is_custom_amount?: boolean;
-          is_one_time: boolean;
-          monthly_price_in_cents: number;
-          monthly_price_in_dollars: number;
-          name: string;
-          node_id: string;
-        };
-      };
-    };
-    /** sponsorship edited event */
-    "webhook-sponsorship-edited": {
-      /** @enum {string} */
-      action: "edited";
-      changes: {
-        privacy_level?: {
-          /** @description The `edited` event types include the details about the change when someone edits a sponsorship to change the privacy. */
-          from: string;
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      sponsorship: {
-        created_at: string;
-        maintainer?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        node_id: string;
-        privacy_level: string;
-        /** User */
-        sponsor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** User */
-        sponsorable: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Sponsorship Tier
-         * @description The `tier_changed` and `pending_tier_change` will include the original tier before the change or pending change. For more information, see the pending tier change payload.
-         */
-        tier: {
-          created_at: string;
-          description: string;
-          is_custom_ammount?: boolean;
-          is_custom_amount?: boolean;
-          is_one_time: boolean;
-          monthly_price_in_cents: number;
-          monthly_price_in_dollars: number;
-          name: string;
-          node_id: string;
-        };
-      };
-    };
-    /** sponsorship pending_cancellation event */
-    "webhook-sponsorship-pending-cancellation": {
-      /** @enum {string} */
-      action: "pending_cancellation";
-      /** @description The `pending_cancellation` and `pending_tier_change` event types will include the date the cancellation or tier change will take effect. */
-      effective_date?: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      sponsorship: {
-        created_at: string;
-        maintainer?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        node_id: string;
-        privacy_level: string;
-        /** User */
-        sponsor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** User */
-        sponsorable: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Sponsorship Tier
-         * @description The `tier_changed` and `pending_tier_change` will include the original tier before the change or pending change. For more information, see the pending tier change payload.
-         */
-        tier: {
-          created_at: string;
-          description: string;
-          is_custom_ammount?: boolean;
-          is_custom_amount?: boolean;
-          is_one_time: boolean;
-          monthly_price_in_cents: number;
-          monthly_price_in_dollars: number;
-          name: string;
-          node_id: string;
-        };
-      };
-    };
-    /** sponsorship pending_tier_change event */
-    "webhook-sponsorship-pending-tier-change": {
-      /** @enum {string} */
-      action: "pending_tier_change";
-      changes: {
-        tier: {
-          /**
-           * Sponsorship Tier
-           * @description The `tier_changed` and `pending_tier_change` will include the original tier before the change or pending change. For more information, see the pending tier change payload.
-           */
-          from: {
-            created_at: string;
-            description: string;
-            is_custom_ammount?: boolean;
-            is_custom_amount?: boolean;
-            is_one_time: boolean;
-            monthly_price_in_cents: number;
-            monthly_price_in_dollars: number;
-            name: string;
-            node_id: string;
-          };
-        };
-      };
-      /** @description The `pending_cancellation` and `pending_tier_change` event types will include the date the cancellation or tier change will take effect. */
-      effective_date?: string;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      sponsorship: {
-        created_at: string;
-        maintainer?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        node_id: string;
-        privacy_level: string;
-        /** User */
-        sponsor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** User */
-        sponsorable: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Sponsorship Tier
-         * @description The `tier_changed` and `pending_tier_change` will include the original tier before the change or pending change. For more information, see the pending tier change payload.
-         */
-        tier: {
-          created_at: string;
-          description: string;
-          is_custom_ammount?: boolean;
-          is_custom_amount?: boolean;
-          is_one_time: boolean;
-          monthly_price_in_cents: number;
-          monthly_price_in_dollars: number;
-          name: string;
-          node_id: string;
-        };
-      };
-    };
-    /** sponsorship tier_changed event */
-    "webhook-sponsorship-tier-changed": {
-      /** @enum {string} */
-      action: "tier_changed";
-      changes: {
-        tier: {
-          /**
-           * Sponsorship Tier
-           * @description The `tier_changed` and `pending_tier_change` will include the original tier before the change or pending change. For more information, see the pending tier change payload.
-           */
-          from: {
-            created_at: string;
-            description: string;
-            is_custom_ammount?: boolean;
-            is_custom_amount?: boolean;
-            is_one_time: boolean;
-            monthly_price_in_cents: number;
-            monthly_price_in_dollars: number;
-            name: string;
-            node_id: string;
-          };
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository?: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      sponsorship: {
-        created_at: string;
-        maintainer?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        node_id: string;
-        privacy_level: string;
-        /** User */
-        sponsor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** User */
-        sponsorable: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /**
-         * Sponsorship Tier
-         * @description The `tier_changed` and `pending_tier_change` will include the original tier before the change or pending change. For more information, see the pending tier change payload.
-         */
-        tier: {
-          created_at: string;
-          description: string;
-          is_custom_ammount?: boolean;
-          is_custom_amount?: boolean;
-          is_one_time: boolean;
-          monthly_price_in_cents: number;
-          monthly_price_in_dollars: number;
-          name: string;
-          node_id: string;
-        };
-      };
-    };
-    /** star created event */
-    "webhook-star-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      /** @description The time the star was created. This is a timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. Will be `null` for the `deleted` action. */
-      starred_at: string | null;
-    };
-    /** star deleted event */
-    "webhook-star-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      /** @description The time the star was created. This is a timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. Will be `null` for the `deleted` action. */
-      starred_at: Record<string, unknown> | null;
-    };
-    /** status event */
-    "webhook-status": {
-      /** Format: uri */
-      avatar_url?: string | null;
-      /** @description An array of branch objects containing the status' SHA. Each branch contains the given SHA, but the SHA may or may not be the head of the branch. The array includes a maximum of 10 branches. */
-      branches: {
-        commit: {
-          sha: string | null;
-          /** Format: uri */
-          url: string | null;
-        };
-        name: string;
-        protected: boolean;
-      }[];
-      commit: {
-        /** User */
-        author: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id?: number;
-          login?: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: uri */
-        comments_url: string;
-        commit: {
-          author: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          } & {
-            date: string;
-            email?: string;
-            name?: string;
-          };
-          comment_count: number;
-          committer: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          } & {
-            date: string;
-            email?: string;
-            name?: string;
-          };
-          message: string;
-          tree: {
-            sha: string;
-            /** Format: uri */
-            url: string;
-          };
-          /** Format: uri */
-          url: string;
-          verification: {
-            payload: string | null;
-            /** @enum {string} */
-            reason:
-              | "expired_key"
-              | "not_signing_key"
-              | "gpgverify_error"
-              | "gpgverify_unavailable"
-              | "unsigned"
-              | "unknown_signature_type"
-              | "no_user"
-              | "unverified_email"
-              | "bad_email"
-              | "unknown_key"
-              | "malformed_signature"
-              | "invalid"
-              | "valid"
-              | "bad_cert"
-              | "ocsp_pending";
-            signature: string | null;
-            verified: boolean;
-          };
-        };
-        /** User */
-        committer: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id?: number;
-          login?: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: uri */
-        html_url: string;
-        node_id: string;
-        parents: {
-          /** Format: uri */
-          html_url: string;
-          sha: string;
-          /** Format: uri */
-          url: string;
-        }[];
-        sha: string;
-        /** Format: uri */
-        url: string;
-      };
-      context: string;
-      created_at: string;
-      /** @description The optional human-readable description added to the status. */
-      description: string | null;
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      /** @description The unique identifier of the status. */
-      id: number;
-      installation?: components["schemas"]["simple-installation"];
-      name: string;
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      /** @description The Commit SHA. */
-      sha: string;
-      /**
-       * @description The new state. Can be `pending`, `success`, `failure`, or `error`.
-       * @enum {string}
-       */
-      state: "pending" | "success" | "failure" | "error";
-      /** @description The optional link added to the status. */
-      target_url: string | null;
-      updated_at: string;
-    };
-    /** team_add event */
-    "webhook-team-add": {
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      /**
-       * Team
-       * @description Groups of organization members that gives permissions on specified repositories.
-       */
-      team: {
-        deleted?: boolean;
-        /** @description Description of the team */
-        description?: string | null;
-        /** Format: uri */
-        html_url?: string;
-        /** @description Unique identifier of the team */
-        id: number;
-        /** Format: uri-template */
-        members_url?: string;
-        /** @description Name of the team */
-        name: string;
-        node_id?: string;
-        parent?: {
-          /** @description Description of the team */
-          description: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url: string;
-          /** @description Name of the team */
-          name: string;
-          node_id: string;
-          /** @description Permission that the team will have for its repositories */
-          permission: string;
-          /** @enum {string} */
-          privacy: "open" | "closed" | "secret";
-          /**
-           * @description Whether team members will receive notifications when their team is @mentioned
-           * @enum {string}
-           */
-          notification_setting:
-            | "notifications_enabled"
-            | "notifications_disabled";
-          /** Format: uri */
-          repositories_url: string;
-          slug: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url: string;
-        } | null;
-        /** @description Permission that the team will have for its repositories */
-        permission?: string;
-        /** @enum {string} */
-        privacy?: "open" | "closed" | "secret";
-        /**
-         * @description Whether team members will receive notifications when their team is @mentioned
-         * @enum {string}
-         */
-        notification_setting?:
-          | "notifications_enabled"
-          | "notifications_disabled";
-        /** Format: uri */
-        repositories_url?: string;
-        slug?: string;
-        /**
-         * Format: uri
-         * @description URL for the team
-         */
-        url?: string;
-      };
-    };
-    /** team added_to_repository event */
-    "webhook-team-added-to-repository": {
-      /** @enum {string} */
-      action: "added_to_repository";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      /**
-       * Repository
-       * @description A git repository
-       */
-      repository?: {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow private forks */
-        allow_forking?: boolean;
-        /**
-         * @description Whether to allow merge commits for pull requests.
-         * @default true
-         */
-        allow_merge_commit?: boolean;
-        /**
-         * @description Whether to allow rebase merges for pull requests.
-         * @default true
-         */
-        allow_rebase_merge?: boolean;
-        /**
-         * @description Whether to allow squash merges for pull requests.
-         * @default true
-         */
-        allow_squash_merge?: boolean;
-        allow_update_branch?: boolean;
-        /** Format: uri-template */
-        archive_url: string;
-        /**
-         * @description Whether the repository is archived.
-         * @default false
-         */
-        archived: boolean;
-        /** Format: uri-template */
-        assignees_url: string;
-        /** Format: uri-template */
-        blobs_url: string;
-        /** Format: uri-template */
-        branches_url: string;
-        /** Format: uri */
-        clone_url: string;
-        /** Format: uri-template */
-        collaborators_url: string;
-        /** Format: uri-template */
-        comments_url: string;
-        /** Format: uri-template */
-        commits_url: string;
-        /** Format: uri-template */
-        compare_url: string;
-        /** Format: uri-template */
-        contents_url: string;
-        /** Format: uri */
-        contributors_url: string;
-        created_at: number | string;
-        /** @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. */
-        custom_properties?: {
-          [key: string]: unknown;
-        };
-        /** @description The default branch of the repository. */
-        default_branch: string;
-        /**
-         * @description Whether to delete head branches when pull requests are merged
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /** Format: uri */
-        deployments_url: string;
-        description: string | null;
-        /** @description Returns whether or not this repository is disabled. */
-        disabled?: boolean;
-        /** Format: uri */
-        downloads_url: string;
-        /** Format: uri */
-        events_url: string;
-        fork: boolean;
-        forks: number;
-        forks_count: number;
-        /** Format: uri */
-        forks_url: string;
-        full_name: string;
-        /** Format: uri-template */
-        git_commits_url: string;
-        /** Format: uri-template */
-        git_refs_url: string;
-        /** Format: uri-template */
-        git_tags_url: string;
-        /** Format: uri */
-        git_url: string;
-        /**
-         * @description Whether downloads are enabled.
-         * @default true
-         */
-        has_downloads: boolean;
-        /**
-         * @description Whether issues are enabled.
-         * @default true
-         */
-        has_issues: boolean;
-        has_pages: boolean;
-        /**
-         * @description Whether projects are enabled.
-         * @default true
-         */
-        has_projects: boolean;
-        /**
-         * @description Whether the wiki is enabled.
-         * @default true
-         */
-        has_wiki: boolean;
-        homepage: string | null;
-        /** Format: uri */
-        hooks_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        is_template?: boolean;
-        /** Format: uri-template */
-        issue_comment_url: string;
-        /** Format: uri-template */
-        issue_events_url: string;
-        /** Format: uri-template */
-        issues_url: string;
-        /** Format: uri-template */
-        keys_url: string;
-        /** Format: uri-template */
-        labels_url: string;
-        language: string | null;
-        /** Format: uri */
-        languages_url: string;
-        /** License */
-        license: {
-          key: string;
-          name: string;
-          node_id: string;
-          spdx_id: string;
-          /** Format: uri */
-          url: string | null;
-        } | null;
-        master_branch?: string;
-        /** Format: uri */
-        merges_url: string;
-        /** Format: uri-template */
-        milestones_url: string;
-        /** Format: uri */
-        mirror_url: string | null;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** Format: uri-template */
-        notifications_url: string;
-        open_issues: number;
-        open_issues_count: number;
-        organization?: string;
-        /** User */
-        owner: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        permissions?: {
-          admin: boolean;
-          maintain?: boolean;
-          pull: boolean;
-          push: boolean;
-          triage?: boolean;
-        };
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-        public?: boolean;
-        /** Format: uri-template */
-        pulls_url: string;
-        pushed_at: number | string | null;
-        /** Format: uri-template */
-        releases_url: string;
-        role_name?: string | null;
-        size: number;
-        ssh_url: string;
-        stargazers?: number;
-        stargazers_count: number;
-        /** Format: uri */
-        stargazers_url: string;
-        /** Format: uri-template */
-        statuses_url: string;
-        /** Format: uri */
-        subscribers_url: string;
-        /** Format: uri */
-        subscription_url: string;
-        /** Format: uri */
-        svn_url: string;
-        /** Format: uri */
-        tags_url: string;
-        /** Format: uri */
-        teams_url: string;
-        topics: string[];
-        /** Format: uri-template */
-        trees_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** @enum {string} */
-        visibility: "public" | "private" | "internal";
-        watchers: number;
-        watchers_count: number;
-      };
-      sender?: components["schemas"]["simple-user-webhooks"];
-      /**
-       * Team
-       * @description Groups of organization members that gives permissions on specified repositories.
-       */
-      team: {
-        deleted?: boolean;
-        /** @description Description of the team */
-        description?: string | null;
-        /** Format: uri */
-        html_url?: string;
-        /** @description Unique identifier of the team */
-        id: number;
-        /** Format: uri-template */
-        members_url?: string;
-        /** @description Name of the team */
-        name: string;
-        node_id?: string;
-        parent?: {
-          /** @description Description of the team */
-          description: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url: string;
-          /** @description Name of the team */
-          name: string;
-          node_id: string;
-          /** @description Permission that the team will have for its repositories */
-          permission: string;
-          /** @enum {string} */
-          privacy: "open" | "closed" | "secret";
-          /**
-           * @description Whether team members will receive notifications when their team is @mentioned
-           * @enum {string}
-           */
-          notification_setting:
-            | "notifications_enabled"
-            | "notifications_disabled";
-          /** Format: uri */
-          repositories_url: string;
-          slug: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url: string;
-        } | null;
-        /** @description Permission that the team will have for its repositories */
-        permission?: string;
-        /** @enum {string} */
-        privacy?: "open" | "closed" | "secret";
-        /**
-         * @description Whether team members will receive notifications when their team is @mentioned
-         * @enum {string}
-         */
-        notification_setting?:
-          | "notifications_enabled"
-          | "notifications_disabled";
-        /** Format: uri */
-        repositories_url?: string;
-        slug?: string;
-        /**
-         * Format: uri
-         * @description URL for the team
-         */
-        url?: string;
-      };
-    };
-    /** team created event */
-    "webhook-team-created": {
-      /** @enum {string} */
-      action: "created";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      /**
-       * Repository
-       * @description A git repository
-       */
-      repository?: {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow private forks */
-        allow_forking?: boolean;
-        /**
-         * @description Whether to allow merge commits for pull requests.
-         * @default true
-         */
-        allow_merge_commit?: boolean;
-        /**
-         * @description Whether to allow rebase merges for pull requests.
-         * @default true
-         */
-        allow_rebase_merge?: boolean;
-        /**
-         * @description Whether to allow squash merges for pull requests.
-         * @default true
-         */
-        allow_squash_merge?: boolean;
-        allow_update_branch?: boolean;
-        /** Format: uri-template */
-        archive_url: string;
-        /**
-         * @description Whether the repository is archived.
-         * @default false
-         */
-        archived: boolean;
-        /** Format: uri-template */
-        assignees_url: string;
-        /** Format: uri-template */
-        blobs_url: string;
-        /** Format: uri-template */
-        branches_url: string;
-        /** Format: uri */
-        clone_url: string;
-        /** Format: uri-template */
-        collaborators_url: string;
-        /** Format: uri-template */
-        comments_url: string;
-        /** Format: uri-template */
-        commits_url: string;
-        /** Format: uri-template */
-        compare_url: string;
-        /** Format: uri-template */
-        contents_url: string;
-        /** Format: uri */
-        contributors_url: string;
-        created_at: number | string;
-        /** @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. */
-        custom_properties?: {
-          [key: string]: unknown;
-        };
-        /** @description The default branch of the repository. */
-        default_branch: string;
-        /**
-         * @description Whether to delete head branches when pull requests are merged
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /** Format: uri */
-        deployments_url: string;
-        description: string | null;
-        /** @description Returns whether or not this repository is disabled. */
-        disabled?: boolean;
-        /** Format: uri */
-        downloads_url: string;
-        /** Format: uri */
-        events_url: string;
-        fork: boolean;
-        forks: number;
-        forks_count: number;
-        /** Format: uri */
-        forks_url: string;
-        full_name: string;
-        /** Format: uri-template */
-        git_commits_url: string;
-        /** Format: uri-template */
-        git_refs_url: string;
-        /** Format: uri-template */
-        git_tags_url: string;
-        /** Format: uri */
-        git_url: string;
-        /**
-         * @description Whether downloads are enabled.
-         * @default true
-         */
-        has_downloads: boolean;
-        /**
-         * @description Whether issues are enabled.
-         * @default true
-         */
-        has_issues: boolean;
-        has_pages: boolean;
-        /**
-         * @description Whether projects are enabled.
-         * @default true
-         */
-        has_projects: boolean;
-        /**
-         * @description Whether the wiki is enabled.
-         * @default true
-         */
-        has_wiki: boolean;
-        homepage: string | null;
-        /** Format: uri */
-        hooks_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        is_template?: boolean;
-        /** Format: uri-template */
-        issue_comment_url: string;
-        /** Format: uri-template */
-        issue_events_url: string;
-        /** Format: uri-template */
-        issues_url: string;
-        /** Format: uri-template */
-        keys_url: string;
-        /** Format: uri-template */
-        labels_url: string;
-        language: string | null;
-        /** Format: uri */
-        languages_url: string;
-        /** License */
-        license: {
-          key: string;
-          name: string;
-          node_id: string;
-          spdx_id: string;
-          /** Format: uri */
-          url: string | null;
-        } | null;
-        master_branch?: string;
-        /** Format: uri */
-        merges_url: string;
-        /** Format: uri-template */
-        milestones_url: string;
-        /** Format: uri */
-        mirror_url: string | null;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** Format: uri-template */
-        notifications_url: string;
-        open_issues: number;
-        open_issues_count: number;
-        organization?: string;
-        /** User */
-        owner: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        permissions?: {
-          admin: boolean;
-          maintain?: boolean;
-          pull: boolean;
-          push: boolean;
-          triage?: boolean;
-        };
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-        public?: boolean;
-        /** Format: uri-template */
-        pulls_url: string;
-        pushed_at: number | string | null;
-        /** Format: uri-template */
-        releases_url: string;
-        role_name?: string | null;
-        size: number;
-        ssh_url: string;
-        stargazers?: number;
-        stargazers_count: number;
-        /** Format: uri */
-        stargazers_url: string;
-        /** Format: uri-template */
-        statuses_url: string;
-        /** Format: uri */
-        subscribers_url: string;
-        /** Format: uri */
-        subscription_url: string;
-        /** Format: uri */
-        svn_url: string;
-        /** Format: uri */
-        tags_url: string;
-        /** Format: uri */
-        teams_url: string;
-        topics: string[];
-        /** Format: uri-template */
-        trees_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** @enum {string} */
-        visibility: "public" | "private" | "internal";
-        watchers: number;
-        watchers_count: number;
-      };
-      sender: components["schemas"]["simple-user-webhooks"];
-      /**
-       * Team
-       * @description Groups of organization members that gives permissions on specified repositories.
-       */
-      team: {
-        deleted?: boolean;
-        /** @description Description of the team */
-        description?: string | null;
-        /** Format: uri */
-        html_url?: string;
-        /** @description Unique identifier of the team */
-        id: number;
-        /** Format: uri-template */
-        members_url?: string;
-        /** @description Name of the team */
-        name: string;
-        node_id?: string;
-        parent?: {
-          /** @description Description of the team */
-          description: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url: string;
-          /** @description Name of the team */
-          name: string;
-          node_id: string;
-          /** @description Permission that the team will have for its repositories */
-          permission: string;
-          /** @enum {string} */
-          privacy: "open" | "closed" | "secret";
-          /**
-           * @description Whether team members will receive notifications when their team is @mentioned
-           * @enum {string}
-           */
-          notification_setting:
-            | "notifications_enabled"
-            | "notifications_disabled";
-          /** Format: uri */
-          repositories_url: string;
-          slug: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url: string;
-        } | null;
-        /** @description Permission that the team will have for its repositories */
-        permission?: string;
-        /** @enum {string} */
-        privacy?: "open" | "closed" | "secret";
-        /**
-         * @description Whether team members will receive notifications when their team is @mentioned
-         * @enum {string}
-         */
-        notification_setting?:
-          | "notifications_enabled"
-          | "notifications_disabled";
-        /** Format: uri */
-        repositories_url?: string;
-        slug?: string;
-        /**
-         * Format: uri
-         * @description URL for the team
-         */
-        url?: string;
-      };
-    };
-    /** team deleted event */
-    "webhook-team-deleted": {
-      /** @enum {string} */
-      action: "deleted";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      /**
-       * Repository
-       * @description A git repository
-       */
-      repository?: {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow private forks */
-        allow_forking?: boolean;
-        /**
-         * @description Whether to allow merge commits for pull requests.
-         * @default true
-         */
-        allow_merge_commit?: boolean;
-        /**
-         * @description Whether to allow rebase merges for pull requests.
-         * @default true
-         */
-        allow_rebase_merge?: boolean;
-        /**
-         * @description Whether to allow squash merges for pull requests.
-         * @default true
-         */
-        allow_squash_merge?: boolean;
-        allow_update_branch?: boolean;
-        /** Format: uri-template */
-        archive_url: string;
-        /**
-         * @description Whether the repository is archived.
-         * @default false
-         */
-        archived: boolean;
-        /** Format: uri-template */
-        assignees_url: string;
-        /** Format: uri-template */
-        blobs_url: string;
-        /** Format: uri-template */
-        branches_url: string;
-        /** Format: uri */
-        clone_url: string;
-        /** Format: uri-template */
-        collaborators_url: string;
-        /** Format: uri-template */
-        comments_url: string;
-        /** Format: uri-template */
-        commits_url: string;
-        /** Format: uri-template */
-        compare_url: string;
-        /** Format: uri-template */
-        contents_url: string;
-        /** Format: uri */
-        contributors_url: string;
-        created_at: number | string;
-        /** @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. */
-        custom_properties?: {
-          [key: string]: unknown;
-        };
-        /** @description The default branch of the repository. */
-        default_branch: string;
-        /**
-         * @description Whether to delete head branches when pull requests are merged
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /** Format: uri */
-        deployments_url: string;
-        description: string | null;
-        /** @description Returns whether or not this repository is disabled. */
-        disabled?: boolean;
-        /** Format: uri */
-        downloads_url: string;
-        /** Format: uri */
-        events_url: string;
-        fork: boolean;
-        forks: number;
-        forks_count: number;
-        /** Format: uri */
-        forks_url: string;
-        full_name: string;
-        /** Format: uri-template */
-        git_commits_url: string;
-        /** Format: uri-template */
-        git_refs_url: string;
-        /** Format: uri-template */
-        git_tags_url: string;
-        /** Format: uri */
-        git_url: string;
-        /**
-         * @description Whether downloads are enabled.
-         * @default true
-         */
-        has_downloads: boolean;
-        /**
-         * @description Whether issues are enabled.
-         * @default true
-         */
-        has_issues: boolean;
-        has_pages: boolean;
-        /**
-         * @description Whether projects are enabled.
-         * @default true
-         */
-        has_projects: boolean;
-        /**
-         * @description Whether the wiki is enabled.
-         * @default true
-         */
-        has_wiki: boolean;
-        homepage: string | null;
-        /** Format: uri */
-        hooks_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        is_template?: boolean;
-        /** Format: uri-template */
-        issue_comment_url: string;
-        /** Format: uri-template */
-        issue_events_url: string;
-        /** Format: uri-template */
-        issues_url: string;
-        /** Format: uri-template */
-        keys_url: string;
-        /** Format: uri-template */
-        labels_url: string;
-        language: string | null;
-        /** Format: uri */
-        languages_url: string;
-        /** License */
-        license: {
-          key: string;
-          name: string;
-          node_id: string;
-          spdx_id: string;
-          /** Format: uri */
-          url: string | null;
-        } | null;
-        master_branch?: string;
-        /** Format: uri */
-        merges_url: string;
-        /** Format: uri-template */
-        milestones_url: string;
-        /** Format: uri */
-        mirror_url: string | null;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** Format: uri-template */
-        notifications_url: string;
-        open_issues: number;
-        open_issues_count: number;
-        organization?: string;
-        /** User */
-        owner: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        permissions?: {
-          admin: boolean;
-          maintain?: boolean;
-          pull: boolean;
-          push: boolean;
-          triage?: boolean;
-        };
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-        public?: boolean;
-        /** Format: uri-template */
-        pulls_url: string;
-        pushed_at: number | string | null;
-        /** Format: uri-template */
-        releases_url: string;
-        role_name?: string | null;
-        size: number;
-        ssh_url: string;
-        stargazers?: number;
-        stargazers_count: number;
-        /** Format: uri */
-        stargazers_url: string;
-        /** Format: uri-template */
-        statuses_url: string;
-        /** Format: uri */
-        subscribers_url: string;
-        /** Format: uri */
-        subscription_url: string;
-        /** Format: uri */
-        svn_url: string;
-        /** Format: uri */
-        tags_url: string;
-        /** Format: uri */
-        teams_url: string;
-        topics: string[];
-        /** Format: uri-template */
-        trees_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** @enum {string} */
-        visibility: "public" | "private" | "internal";
-        watchers: number;
-        watchers_count: number;
-      };
-      sender?: components["schemas"]["simple-user-webhooks"];
-      /**
-       * Team
-       * @description Groups of organization members that gives permissions on specified repositories.
-       */
-      team: {
-        deleted?: boolean;
-        /** @description Description of the team */
-        description?: string | null;
-        /** Format: uri */
-        html_url?: string;
-        /** @description Unique identifier of the team */
-        id: number;
-        /** Format: uri-template */
-        members_url?: string;
-        /** @description Name of the team */
-        name: string;
-        node_id?: string;
-        parent?: {
-          /** @description Description of the team */
-          description: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url: string;
-          /** @description Name of the team */
-          name: string;
-          node_id: string;
-          /** @description Permission that the team will have for its repositories */
-          permission: string;
-          /** @enum {string} */
-          privacy: "open" | "closed" | "secret";
-          /**
-           * @description Whether team members will receive notifications when their team is @mentioned
-           * @enum {string}
-           */
-          notification_setting:
-            | "notifications_enabled"
-            | "notifications_disabled";
-          /** Format: uri */
-          repositories_url: string;
-          slug: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url: string;
-        } | null;
-        /** @description Permission that the team will have for its repositories */
-        permission?: string;
-        /** @enum {string} */
-        privacy?: "open" | "closed" | "secret";
-        /**
-         * @description Whether team members will receive notifications when their team is @mentioned
-         * @enum {string}
-         */
-        notification_setting?:
-          | "notifications_enabled"
-          | "notifications_disabled";
-        /** Format: uri */
-        repositories_url?: string;
-        slug?: string;
-        /**
-         * Format: uri
-         * @description URL for the team
-         */
-        url?: string;
-      };
-    };
-    /** team edited event */
-    "webhook-team-edited": {
-      /** @enum {string} */
-      action: "edited";
-      /** @description The changes to the team if the action was `edited`. */
-      changes: {
-        description?: {
-          /** @description The previous version of the description if the action was `edited`. */
-          from: string;
-        };
-        name?: {
-          /** @description The previous version of the name if the action was `edited`. */
-          from: string;
-        };
-        privacy?: {
-          /** @description The previous version of the team's privacy if the action was `edited`. */
-          from: string;
-        };
-        notification_setting?: {
-          /** @description The previous version of the team's notification setting if the action was `edited`. */
-          from: string;
-        };
-        repository?: {
-          permissions: {
-            from: {
-              /** @description The previous version of the team member's `admin` permission on a repository, if the action was `edited`. */
-              admin?: boolean;
-              /** @description The previous version of the team member's `pull` permission on a repository, if the action was `edited`. */
-              pull?: boolean;
-              /** @description The previous version of the team member's `push` permission on a repository, if the action was `edited`. */
-              push?: boolean;
-            };
-          };
-        };
-      };
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      /**
-       * Repository
-       * @description A git repository
-       */
-      repository?: {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow private forks */
-        allow_forking?: boolean;
-        /**
-         * @description Whether to allow merge commits for pull requests.
-         * @default true
-         */
-        allow_merge_commit?: boolean;
-        /**
-         * @description Whether to allow rebase merges for pull requests.
-         * @default true
-         */
-        allow_rebase_merge?: boolean;
-        /**
-         * @description Whether to allow squash merges for pull requests.
-         * @default true
-         */
-        allow_squash_merge?: boolean;
-        allow_update_branch?: boolean;
-        /** Format: uri-template */
-        archive_url: string;
-        /**
-         * @description Whether the repository is archived.
-         * @default false
-         */
-        archived: boolean;
-        /** Format: uri-template */
-        assignees_url: string;
-        /** Format: uri-template */
-        blobs_url: string;
-        /** Format: uri-template */
-        branches_url: string;
-        /** Format: uri */
-        clone_url: string;
-        /** Format: uri-template */
-        collaborators_url: string;
-        /** Format: uri-template */
-        comments_url: string;
-        /** Format: uri-template */
-        commits_url: string;
-        /** Format: uri-template */
-        compare_url: string;
-        /** Format: uri-template */
-        contents_url: string;
-        /** Format: uri */
-        contributors_url: string;
-        created_at: number | string;
-        /** @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. */
-        custom_properties?: {
-          [key: string]: unknown;
-        };
-        /** @description The default branch of the repository. */
-        default_branch: string;
-        /**
-         * @description Whether to delete head branches when pull requests are merged
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /** Format: uri */
-        deployments_url: string;
-        description: string | null;
-        /** @description Returns whether or not this repository is disabled. */
-        disabled?: boolean;
-        /** Format: uri */
-        downloads_url: string;
-        /** Format: uri */
-        events_url: string;
-        fork: boolean;
-        forks: number;
-        forks_count: number;
-        /** Format: uri */
-        forks_url: string;
-        full_name: string;
-        /** Format: uri-template */
-        git_commits_url: string;
-        /** Format: uri-template */
-        git_refs_url: string;
-        /** Format: uri-template */
-        git_tags_url: string;
-        /** Format: uri */
-        git_url: string;
-        /**
-         * @description Whether downloads are enabled.
-         * @default true
-         */
-        has_downloads: boolean;
-        /**
-         * @description Whether issues are enabled.
-         * @default true
-         */
-        has_issues: boolean;
-        has_pages: boolean;
-        /**
-         * @description Whether projects are enabled.
-         * @default true
-         */
-        has_projects: boolean;
-        /**
-         * @description Whether the wiki is enabled.
-         * @default true
-         */
-        has_wiki: boolean;
-        homepage: string | null;
-        /** Format: uri */
-        hooks_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        is_template?: boolean;
-        /** Format: uri-template */
-        issue_comment_url: string;
-        /** Format: uri-template */
-        issue_events_url: string;
-        /** Format: uri-template */
-        issues_url: string;
-        /** Format: uri-template */
-        keys_url: string;
-        /** Format: uri-template */
-        labels_url: string;
-        language: string | null;
-        /** Format: uri */
-        languages_url: string;
-        /** License */
-        license: {
-          key: string;
-          name: string;
-          node_id: string;
-          spdx_id: string;
-          /** Format: uri */
-          url: string | null;
-        } | null;
-        master_branch?: string;
-        /** Format: uri */
-        merges_url: string;
-        /** Format: uri-template */
-        milestones_url: string;
-        /** Format: uri */
-        mirror_url: string | null;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** Format: uri-template */
-        notifications_url: string;
-        open_issues: number;
-        open_issues_count: number;
-        organization?: string;
-        /** User */
-        owner: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        permissions?: {
-          admin: boolean;
-          maintain?: boolean;
-          pull: boolean;
-          push: boolean;
-          triage?: boolean;
-        };
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-        public?: boolean;
-        /** Format: uri-template */
-        pulls_url: string;
-        pushed_at: number | string | null;
-        /** Format: uri-template */
-        releases_url: string;
-        role_name?: string | null;
-        size: number;
-        ssh_url: string;
-        stargazers?: number;
-        stargazers_count: number;
-        /** Format: uri */
-        stargazers_url: string;
-        /** Format: uri-template */
-        statuses_url: string;
-        /** Format: uri */
-        subscribers_url: string;
-        /** Format: uri */
-        subscription_url: string;
-        /** Format: uri */
-        svn_url: string;
-        /** Format: uri */
-        tags_url: string;
-        /** Format: uri */
-        teams_url: string;
-        topics: string[];
-        /** Format: uri-template */
-        trees_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** @enum {string} */
-        visibility: "public" | "private" | "internal";
-        watchers: number;
-        watchers_count: number;
-      };
-      sender: components["schemas"]["simple-user-webhooks"];
-      /**
-       * Team
-       * @description Groups of organization members that gives permissions on specified repositories.
-       */
-      team: {
-        deleted?: boolean;
-        /** @description Description of the team */
-        description?: string | null;
-        /** Format: uri */
-        html_url?: string;
-        /** @description Unique identifier of the team */
-        id: number;
-        /** Format: uri-template */
-        members_url?: string;
-        /** @description Name of the team */
-        name: string;
-        node_id?: string;
-        parent?: {
-          /** @description Description of the team */
-          description: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url: string;
-          /** @description Name of the team */
-          name: string;
-          node_id: string;
-          /** @description Permission that the team will have for its repositories */
-          permission: string;
-          /** @enum {string} */
-          privacy: "open" | "closed" | "secret";
-          /**
-           * @description Whether team members will receive notifications when their team is @mentioned
-           * @enum {string}
-           */
-          notification_setting:
-            | "notifications_enabled"
-            | "notifications_disabled";
-          /** Format: uri */
-          repositories_url: string;
-          slug: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url: string;
-        } | null;
-        /** @description Permission that the team will have for its repositories */
-        permission?: string;
-        /** @enum {string} */
-        privacy?: "open" | "closed" | "secret";
-        /**
-         * @description Whether team members will receive notifications when their team is @mentioned
-         * @enum {string}
-         */
-        notification_setting?:
-          | "notifications_enabled"
-          | "notifications_disabled";
-        /** Format: uri */
-        repositories_url?: string;
-        slug?: string;
-        /**
-         * Format: uri
-         * @description URL for the team
-         */
-        url?: string;
-      };
-    };
-    /** team removed_from_repository event */
-    "webhook-team-removed-from-repository": {
-      /** @enum {string} */
-      action: "removed_from_repository";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization: components["schemas"]["organization-simple-webhooks"];
-      /**
-       * Repository
-       * @description A git repository
-       */
-      repository?: {
-        /**
-         * @description Whether to allow auto-merge for pull requests.
-         * @default false
-         */
-        allow_auto_merge?: boolean;
-        /** @description Whether to allow private forks */
-        allow_forking?: boolean;
-        /**
-         * @description Whether to allow merge commits for pull requests.
-         * @default true
-         */
-        allow_merge_commit?: boolean;
-        /**
-         * @description Whether to allow rebase merges for pull requests.
-         * @default true
-         */
-        allow_rebase_merge?: boolean;
-        /**
-         * @description Whether to allow squash merges for pull requests.
-         * @default true
-         */
-        allow_squash_merge?: boolean;
-        allow_update_branch?: boolean;
-        /** Format: uri-template */
-        archive_url: string;
-        /**
-         * @description Whether the repository is archived.
-         * @default false
-         */
-        archived: boolean;
-        /** Format: uri-template */
-        assignees_url: string;
-        /** Format: uri-template */
-        blobs_url: string;
-        /** Format: uri-template */
-        branches_url: string;
-        /** Format: uri */
-        clone_url: string;
-        /** Format: uri-template */
-        collaborators_url: string;
-        /** Format: uri-template */
-        comments_url: string;
-        /** Format: uri-template */
-        commits_url: string;
-        /** Format: uri-template */
-        compare_url: string;
-        /** Format: uri-template */
-        contents_url: string;
-        /** Format: uri */
-        contributors_url: string;
-        created_at: number | string;
-        /** @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. */
-        custom_properties?: {
-          [key: string]: unknown;
-        };
-        /** @description The default branch of the repository. */
-        default_branch: string;
-        /**
-         * @description Whether to delete head branches when pull requests are merged
-         * @default false
-         */
-        delete_branch_on_merge?: boolean;
-        /** Format: uri */
-        deployments_url: string;
-        description: string | null;
-        /** @description Returns whether or not this repository is disabled. */
-        disabled?: boolean;
-        /** Format: uri */
-        downloads_url: string;
-        /** Format: uri */
-        events_url: string;
-        fork: boolean;
-        forks: number;
-        forks_count: number;
-        /** Format: uri */
-        forks_url: string;
-        full_name: string;
-        /** Format: uri-template */
-        git_commits_url: string;
-        /** Format: uri-template */
-        git_refs_url: string;
-        /** Format: uri-template */
-        git_tags_url: string;
-        /** Format: uri */
-        git_url: string;
-        /**
-         * @description Whether downloads are enabled.
-         * @default true
-         */
-        has_downloads: boolean;
-        /**
-         * @description Whether issues are enabled.
-         * @default true
-         */
-        has_issues: boolean;
-        has_pages: boolean;
-        /**
-         * @description Whether projects are enabled.
-         * @default true
-         */
-        has_projects: boolean;
-        /**
-         * @description Whether the wiki is enabled.
-         * @default true
-         */
-        has_wiki: boolean;
-        homepage: string | null;
-        /** Format: uri */
-        hooks_url: string;
-        /** Format: uri */
-        html_url: string;
-        /** @description Unique identifier of the repository */
-        id: number;
-        is_template?: boolean;
-        /** Format: uri-template */
-        issue_comment_url: string;
-        /** Format: uri-template */
-        issue_events_url: string;
-        /** Format: uri-template */
-        issues_url: string;
-        /** Format: uri-template */
-        keys_url: string;
-        /** Format: uri-template */
-        labels_url: string;
-        language: string | null;
-        /** Format: uri */
-        languages_url: string;
-        /** License */
-        license: {
-          key: string;
-          name: string;
-          node_id: string;
-          spdx_id: string;
-          /** Format: uri */
-          url: string | null;
-        } | null;
-        master_branch?: string;
-        /** Format: uri */
-        merges_url: string;
-        /** Format: uri-template */
-        milestones_url: string;
-        /** Format: uri */
-        mirror_url: string | null;
-        /** @description The name of the repository. */
-        name: string;
-        node_id: string;
-        /** Format: uri-template */
-        notifications_url: string;
-        open_issues: number;
-        open_issues_count: number;
-        organization?: string;
-        /** User */
-        owner: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        permissions?: {
-          admin: boolean;
-          maintain?: boolean;
-          pull: boolean;
-          push: boolean;
-          triage?: boolean;
-        };
-        /** @description Whether the repository is private or public. */
-        private: boolean;
-        public?: boolean;
-        /** Format: uri-template */
-        pulls_url: string;
-        pushed_at: number | string | null;
-        /** Format: uri-template */
-        releases_url: string;
-        role_name?: string | null;
-        size: number;
-        ssh_url: string;
-        stargazers?: number;
-        stargazers_count: number;
-        /** Format: uri */
-        stargazers_url: string;
-        /** Format: uri-template */
-        statuses_url: string;
-        /** Format: uri */
-        subscribers_url: string;
-        /** Format: uri */
-        subscription_url: string;
-        /** Format: uri */
-        svn_url: string;
-        /** Format: uri */
-        tags_url: string;
-        /** Format: uri */
-        teams_url: string;
-        topics: string[];
-        /** Format: uri-template */
-        trees_url: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        /** @enum {string} */
-        visibility: "public" | "private" | "internal";
-        watchers: number;
-        watchers_count: number;
-      };
-      sender: components["schemas"]["simple-user-webhooks"];
-      /**
-       * Team
-       * @description Groups of organization members that gives permissions on specified repositories.
-       */
-      team: {
-        deleted?: boolean;
-        /** @description Description of the team */
-        description?: string | null;
-        /** Format: uri */
-        html_url?: string;
-        /** @description Unique identifier of the team */
-        id: number;
-        /** Format: uri-template */
-        members_url?: string;
-        /** @description Name of the team */
-        name: string;
-        node_id?: string;
-        parent?: {
-          /** @description Description of the team */
-          description: string | null;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the team */
-          id: number;
-          /** Format: uri-template */
-          members_url: string;
-          /** @description Name of the team */
-          name: string;
-          node_id: string;
-          /** @description Permission that the team will have for its repositories */
-          permission: string;
-          /** @enum {string} */
-          privacy: "open" | "closed" | "secret";
-          /**
-           * @description Whether team members will receive notifications when their team is @mentioned
-           * @enum {string}
-           */
-          notification_setting:
-            | "notifications_enabled"
-            | "notifications_disabled";
-          /** Format: uri */
-          repositories_url: string;
-          slug: string;
-          /**
-           * Format: uri
-           * @description URL for the team
-           */
-          url: string;
-        } | null;
-        /** @description Permission that the team will have for its repositories */
-        permission?: string;
-        /** @enum {string} */
-        privacy?: "open" | "closed" | "secret";
-        /**
-         * @description Whether team members will receive notifications when their team is @mentioned
-         * @enum {string}
-         */
-        notification_setting?:
-          | "notifications_enabled"
-          | "notifications_disabled";
-        /** Format: uri */
-        repositories_url?: string;
-        slug?: string;
-        /**
-         * Format: uri
-         * @description URL for the team
-         */
-        url?: string;
-      };
-    };
-    /** watch started event */
-    "webhook-watch-started": {
-      /** @enum {string} */
-      action: "started";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-    };
-    /** workflow_dispatch event */
-    "webhook-workflow-dispatch": {
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      inputs: {
-        [key: string]: unknown;
-      } | null;
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      ref: string;
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      workflow: string;
-    };
-    /** workflow_job completed event */
-    "webhook-workflow-job-completed": {
-      /** @enum {string} */
-      action: "completed";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      workflow_job: {
-        /** Format: uri */
-        check_run_url: string;
-        completed_at: string | null;
-        /** @enum {string|null} */
-        conclusion:
-          | "success"
-          | "failure"
-          | null
-          | "skipped"
-          | "cancelled"
-          | "action_required"
-          | "neutral"
-          | "timed_out";
-        /** @description The time that the job created. */
-        created_at: string;
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** @description Custom labels for the job. Specified by the [`"runs-on"` attribute](https://docs.github.com/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on) in the workflow YAML. */
-        labels: string[];
-        name: string;
-        node_id: string;
-        run_attempt: number;
-        run_id: number;
-        /** Format: uri */
-        run_url: string;
-        /** @description The ID of the runner group that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */
-        runner_group_id: number | null;
-        /** @description The name of the runner group that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */
-        runner_group_name: string | null;
-        /** @description The ID of the runner that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */
-        runner_id: number | null;
-        /** @description The name of the runner that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */
-        runner_name: string | null;
-        started_at: string;
-        /**
-         * @description The current status of the job. Can be `queued`, `in_progress`, `waiting`, or `completed`.
-         * @enum {string}
-         */
-        status: "queued" | "in_progress" | "completed" | "waiting";
-        /** @description The name of the current branch. */
-        head_branch: string | null;
-        /** @description The name of the workflow. */
-        workflow_name: string | null;
-        steps: {
-          completed_at: string | null;
-          /** @enum {string|null} */
-          conclusion: "failure" | "skipped" | "success" | "cancelled" | null;
-          name: string;
-          number: number;
-          started_at: string | null;
-          /** @enum {string} */
-          status: "in_progress" | "completed" | "queued";
-        }[];
-        /** Format: uri */
-        url: string;
-      } & {
-        check_run_url?: string;
-        completed_at?: string;
-        /** @enum {string} */
-        conclusion:
-          | "success"
-          | "failure"
-          | "skipped"
-          | "cancelled"
-          | "action_required"
-          | "neutral"
-          | "timed_out";
-        /** @description The time that the job created. */
-        created_at?: string;
-        head_sha?: string;
-        html_url?: string;
-        id?: number;
-        labels?: (string | null)[];
-        name?: string;
-        node_id?: string;
-        run_attempt?: number;
-        run_id?: number;
-        run_url?: string;
-        runner_group_id?: number | null;
-        runner_group_name?: string | null;
-        runner_id?: number | null;
-        runner_name?: string | null;
-        started_at?: string;
-        status?: string;
-        /** @description The name of the current branch. */
-        head_branch?: string | null;
-        /** @description The name of the workflow. */
-        workflow_name?: string | null;
-        steps?: (Record<string, unknown> | null)[];
-        url?: string;
-      };
-      deployment?: components["schemas"]["deployment"];
-    };
-    /** workflow_job in_progress event */
-    "webhook-workflow-job-in-progress": {
-      /** @enum {string} */
-      action: "in_progress";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      workflow_job: {
-        /** Format: uri */
-        check_run_url: string;
-        completed_at: string | null;
-        /** @enum {string|null} */
-        conclusion: "success" | "failure" | null | "cancelled" | "neutral";
-        /** @description The time that the job created. */
-        created_at: string;
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** @description Custom labels for the job. Specified by the [`"runs-on"` attribute](https://docs.github.com/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on) in the workflow YAML. */
-        labels: string[];
-        name: string;
-        node_id: string;
-        run_attempt: number;
-        run_id: number;
-        /** Format: uri */
-        run_url: string;
-        /** @description The ID of the runner group that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */
-        runner_group_id: number | null;
-        /** @description The name of the runner group that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */
-        runner_group_name: string | null;
-        /** @description The ID of the runner that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */
-        runner_id: number | null;
-        /** @description The name of the runner that is running this job. This will be `null` as long as `workflow_job[status]` is `queued`. */
-        runner_name: string | null;
-        started_at: string;
-        /**
-         * @description The current status of the job. Can be `queued`, `in_progress`, or `completed`.
-         * @enum {string}
-         */
-        status: "queued" | "in_progress" | "completed";
-        /** @description The name of the current branch. */
-        head_branch: string | null;
-        /** @description The name of the workflow. */
-        workflow_name: string | null;
-        steps: {
-          completed_at: string | null;
-          /** @enum {string|null} */
-          conclusion: "failure" | "skipped" | "success" | null | "cancelled";
-          name: string;
-          number: number;
-          started_at: string | null;
-          /** @enum {string} */
-          status: "in_progress" | "completed" | "queued" | "pending";
-        }[];
-        /** Format: uri */
-        url: string;
-      } & {
-        check_run_url?: string;
-        completed_at?: string | null;
-        conclusion?: string | null;
-        /** @description The time that the job created. */
-        created_at?: string;
-        head_sha?: string;
-        html_url?: string;
-        id?: number;
-        labels?: string[];
-        name?: string;
-        node_id?: string;
-        run_attempt?: number;
-        run_id?: number;
-        run_url?: string;
-        runner_group_id?: number | null;
-        runner_group_name?: string | null;
-        runner_id?: number | null;
-        runner_name?: string | null;
-        started_at?: string;
-        /** @enum {string} */
-        status: "in_progress" | "completed" | "queued";
-        /** @description The name of the current branch. */
-        head_branch?: string | null;
-        /** @description The name of the workflow. */
-        workflow_name?: string | null;
-        steps: {
-          completed_at: string | null;
-          conclusion: string | null;
-          name: string;
-          number: number;
-          started_at: string | null;
-          /** @enum {string} */
-          status: "in_progress" | "completed" | "pending" | "queued";
-        }[];
-        url?: string;
-      };
-      deployment?: components["schemas"]["deployment"];
-    };
-    /** workflow_job queued event */
-    "webhook-workflow-job-queued": {
-      /** @enum {string} */
-      action: "queued";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      workflow_job: {
-        /** Format: uri */
-        check_run_url: string;
-        completed_at: string | null;
-        conclusion: string | null;
-        /** @description The time that the job created. */
-        created_at: string;
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        labels: string[];
-        name: string;
-        node_id: string;
-        run_attempt: number;
-        run_id: number;
-        /** Format: uri */
-        run_url: string;
-        runner_group_id: number | null;
-        runner_group_name: string | null;
-        runner_id: number | null;
-        runner_name: string | null;
-        /** Format: date-time */
-        started_at: string;
-        /** @enum {string} */
-        status: "queued" | "in_progress" | "completed" | "waiting";
-        /** @description The name of the current branch. */
-        head_branch: string | null;
-        /** @description The name of the workflow. */
-        workflow_name: string | null;
-        steps: {
-          completed_at: string | null;
-          /** @enum {string|null} */
-          conclusion: "failure" | "skipped" | "success" | "cancelled" | null;
-          name: string;
-          number: number;
-          started_at: string | null;
-          /** @enum {string} */
-          status: "completed" | "in_progress" | "queued" | "pending";
-        }[];
-        /** Format: uri */
-        url: string;
-      };
-      deployment?: components["schemas"]["deployment"];
-    };
-    /** workflow_job waiting event */
-    "webhook-workflow-job-waiting": {
-      /** @enum {string} */
-      action: "waiting";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      workflow_job: {
-        /** Format: uri */
-        check_run_url: string;
-        completed_at: string | null;
-        conclusion: string | null;
-        /** @description The time that the job created. */
-        created_at: string;
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        labels: string[];
-        name: string;
-        node_id: string;
-        run_attempt: number;
-        run_id: number;
-        /** Format: uri */
-        run_url: string;
-        runner_group_id: number | null;
-        runner_group_name: string | null;
-        runner_id: number | null;
-        runner_name: string | null;
-        /** Format: date-time */
-        started_at: string;
-        /** @description The name of the current branch. */
-        head_branch: string | null;
-        /** @description The name of the workflow. */
-        workflow_name: string | null;
-        /** @enum {string} */
-        status: "queued" | "in_progress" | "completed" | "waiting";
-        steps: {
-          completed_at: string | null;
-          /** @enum {string|null} */
-          conclusion: "failure" | "skipped" | "success" | "cancelled" | null;
-          name: string;
-          number: number;
-          started_at: string | null;
-          /** @enum {string} */
-          status:
-            | "completed"
-            | "in_progress"
-            | "queued"
-            | "pending"
-            | "waiting";
-        }[];
-        /** Format: uri */
-        url: string;
-      };
-      deployment?: components["schemas"]["deployment"];
-    };
-    /** workflow_run completed event */
-    "webhook-workflow-run-completed": {
-      /** @enum {string} */
-      action: "completed";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      /** Workflow */
-      workflow: {
-        /** Format: uri */
-        badge_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string;
-        node_id: string;
-        path: string;
-        state: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      } | null;
-      workflow_run: {
-        /** User */
-        actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: uri */
-        artifacts_url: string;
-        /** Format: uri */
-        cancel_url: string;
-        check_suite_id: number;
-        check_suite_node_id: string;
-        /** Format: uri */
-        check_suite_url: string;
-        /** @enum {string|null} */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | null
-          | "skipped";
-        /** Format: date-time */
-        created_at: string;
-        event: string;
-        head_branch: string | null;
-        /** SimpleCommit */
-        head_commit: {
-          /**
-           * Committer
-           * @description Metaproperties for Git author/committer information.
-           */
-          author: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          };
-          /**
-           * Committer
-           * @description Metaproperties for Git author/committer information.
-           */
-          committer: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          };
-          id: string;
-          message: string;
-          timestamp: string;
-          tree_id: string;
-        };
-        /** Repository Lite */
-        head_repository: {
-          /** Format: uri-template */
-          archive_url: string;
-          /** Format: uri-template */
-          assignees_url: string;
-          /** Format: uri-template */
-          blobs_url: string;
-          /** Format: uri-template */
-          branches_url: string;
-          /** Format: uri-template */
-          collaborators_url: string;
-          /** Format: uri-template */
-          comments_url: string;
-          /** Format: uri-template */
-          commits_url: string;
-          /** Format: uri-template */
-          compare_url: string;
-          /** Format: uri-template */
-          contents_url: string;
-          /** Format: uri */
-          contributors_url: string;
-          /** Format: uri */
-          deployments_url: string;
-          description: string | null;
-          /** Format: uri */
-          downloads_url: string;
-          /** Format: uri */
-          events_url: string;
-          fork: boolean;
-          /** Format: uri */
-          forks_url: string;
-          full_name: string;
-          /** Format: uri-template */
-          git_commits_url: string;
-          /** Format: uri-template */
-          git_refs_url: string;
-          /** Format: uri-template */
-          git_tags_url: string;
-          /** Format: uri */
-          hooks_url: string;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the repository */
-          id: number;
-          /** Format: uri-template */
-          issue_comment_url: string;
-          /** Format: uri-template */
-          issue_events_url: string;
-          /** Format: uri-template */
-          issues_url: string;
-          /** Format: uri-template */
-          keys_url: string;
-          /** Format: uri-template */
-          labels_url: string;
-          /** Format: uri */
-          languages_url: string;
-          /** Format: uri */
-          merges_url: string;
-          /** Format: uri-template */
-          milestones_url: string;
-          /** @description The name of the repository. */
-          name: string;
-          node_id: string;
-          /** Format: uri-template */
-          notifications_url: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description Whether the repository is private or public. */
-          private: boolean;
-          /** Format: uri-template */
-          pulls_url: string;
-          /** Format: uri-template */
-          releases_url: string;
-          /** Format: uri */
-          stargazers_url: string;
-          /** Format: uri-template */
-          statuses_url: string;
-          /** Format: uri */
-          subscribers_url: string;
-          /** Format: uri */
-          subscription_url: string;
-          /** Format: uri */
-          tags_url: string;
-          /** Format: uri */
-          teams_url: string;
-          /** Format: uri-template */
-          trees_url: string;
-          /** Format: uri */
-          url: string;
-        };
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        jobs_url: string;
-        /** Format: uri */
-        logs_url: string;
-        name: string | null;
-        node_id: string;
-        path: string;
-        /** Format: uri */
-        previous_attempt_url: string | null;
-        pull_requests: {
-          base: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          head: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          id: number;
-          number: number;
-          /** Format: uri */
-          url: string;
-        }[];
-        referenced_workflows?:
-          | {
-              path: string;
-              ref?: string;
-              sha: string;
-            }[]
-          | null;
-        /** Repository Lite */
-        repository: {
-          /** Format: uri-template */
-          archive_url: string;
-          /** Format: uri-template */
-          assignees_url: string;
-          /** Format: uri-template */
-          blobs_url: string;
-          /** Format: uri-template */
-          branches_url: string;
-          /** Format: uri-template */
-          collaborators_url: string;
-          /** Format: uri-template */
-          comments_url: string;
-          /** Format: uri-template */
-          commits_url: string;
-          /** Format: uri-template */
-          compare_url: string;
-          /** Format: uri-template */
-          contents_url: string;
-          /** Format: uri */
-          contributors_url: string;
-          /** Format: uri */
-          deployments_url: string;
-          description: string | null;
-          /** Format: uri */
-          downloads_url: string;
-          /** Format: uri */
-          events_url: string;
-          fork: boolean;
-          /** Format: uri */
-          forks_url: string;
-          full_name: string;
-          /** Format: uri-template */
-          git_commits_url: string;
-          /** Format: uri-template */
-          git_refs_url: string;
-          /** Format: uri-template */
-          git_tags_url: string;
-          /** Format: uri */
-          hooks_url: string;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the repository */
-          id: number;
-          /** Format: uri-template */
-          issue_comment_url: string;
-          /** Format: uri-template */
-          issue_events_url: string;
-          /** Format: uri-template */
-          issues_url: string;
-          /** Format: uri-template */
-          keys_url: string;
-          /** Format: uri-template */
-          labels_url: string;
-          /** Format: uri */
-          languages_url: string;
-          /** Format: uri */
-          merges_url: string;
-          /** Format: uri-template */
-          milestones_url: string;
-          /** @description The name of the repository. */
-          name: string;
-          node_id: string;
-          /** Format: uri-template */
-          notifications_url: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description Whether the repository is private or public. */
-          private: boolean;
-          /** Format: uri-template */
-          pulls_url: string;
-          /** Format: uri-template */
-          releases_url: string;
-          /** Format: uri */
-          stargazers_url: string;
-          /** Format: uri-template */
-          statuses_url: string;
-          /** Format: uri */
-          subscribers_url: string;
-          /** Format: uri */
-          subscription_url: string;
-          /** Format: uri */
-          tags_url: string;
-          /** Format: uri */
-          teams_url: string;
-          /** Format: uri-template */
-          trees_url: string;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        rerun_url: string;
-        run_attempt: number;
-        run_number: number;
-        /** Format: date-time */
-        run_started_at: string;
-        /** @enum {string} */
-        status:
-          | "requested"
-          | "in_progress"
-          | "completed"
-          | "queued"
-          | "pending"
-          | "waiting";
-        /** User */
-        triggering_actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        workflow_id: number;
-        /** Format: uri */
-        workflow_url: string;
-      } & {
-        actor?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        artifacts_url?: string;
-        cancel_url?: string;
-        check_suite_id?: number;
-        check_suite_node_id?: string;
-        check_suite_url?: string;
-        /** @enum {string} */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | "skipped";
-        created_at?: string;
-        event?: string;
-        head_branch?: string | null;
-        head_commit?: {
-          author?: {
-            email?: string;
-            name?: string;
-          };
-          committer?: {
-            email?: string;
-            name?: string;
-          };
-          id?: string;
-          message?: string;
-          timestamp?: string;
-          tree_id?: string;
-        };
-        head_repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: string | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        head_sha?: string;
-        html_url?: string;
-        id?: number;
-        jobs_url?: string;
-        logs_url?: string;
-        name?: string | null;
-        node_id?: string;
-        path?: string;
-        previous_attempt_url?: string | null;
-        pull_requests?: (Record<string, unknown> | null)[];
-        referenced_workflows?:
-          | {
-              path: string;
-              ref?: string;
-              sha: string;
-            }[]
-          | null;
-        repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: string | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        rerun_url?: string;
-        run_attempt?: number;
-        run_number?: number;
-        run_started_at?: string;
-        status?: string;
-        triggering_actor?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        } | null;
-        updated_at?: string;
-        url?: string;
-        workflow_id?: number;
-        workflow_url?: string;
-      };
-    };
-    /** workflow_run in_progress event */
-    "webhook-workflow-run-in-progress": {
-      /** @enum {string} */
-      action: "in_progress";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      /** Workflow */
-      workflow: {
-        /** Format: uri */
-        badge_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string;
-        node_id: string;
-        path: string;
-        state: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      } | null;
-      workflow_run: {
-        /** User */
-        actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: uri */
-        artifacts_url: string;
-        /** Format: uri */
-        cancel_url: string;
-        check_suite_id: number;
-        check_suite_node_id: string;
-        /** Format: uri */
-        check_suite_url: string;
-        /** @enum {string|null} */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | "skipped"
-          | null;
-        /** Format: date-time */
-        created_at: string;
-        event: string;
-        head_branch: string | null;
-        /** SimpleCommit */
-        head_commit: {
-          /**
-           * Committer
-           * @description Metaproperties for Git author/committer information.
-           */
-          author: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          };
-          /**
-           * Committer
-           * @description Metaproperties for Git author/committer information.
-           */
-          committer: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          };
-          id: string;
-          message: string;
-          timestamp: string;
-          tree_id: string;
-        };
-        /** Repository Lite */
-        head_repository: {
-          /** Format: uri-template */
-          archive_url: string;
-          /** Format: uri-template */
-          assignees_url: string;
-          /** Format: uri-template */
-          blobs_url: string;
-          /** Format: uri-template */
-          branches_url: string;
-          /** Format: uri-template */
-          collaborators_url: string;
-          /** Format: uri-template */
-          comments_url: string;
-          /** Format: uri-template */
-          commits_url: string;
-          /** Format: uri-template */
-          compare_url: string;
-          /** Format: uri-template */
-          contents_url: string;
-          /** Format: uri */
-          contributors_url: string;
-          /** Format: uri */
-          deployments_url: string;
-          description: string | null;
-          /** Format: uri */
-          downloads_url: string;
-          /** Format: uri */
-          events_url: string;
-          fork: boolean;
-          /** Format: uri */
-          forks_url: string;
-          full_name: string;
-          /** Format: uri-template */
-          git_commits_url: string;
-          /** Format: uri-template */
-          git_refs_url: string;
-          /** Format: uri-template */
-          git_tags_url: string;
-          /** Format: uri */
-          hooks_url: string;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the repository */
-          id: number;
-          /** Format: uri-template */
-          issue_comment_url: string;
-          /** Format: uri-template */
-          issue_events_url: string;
-          /** Format: uri-template */
-          issues_url: string;
-          /** Format: uri-template */
-          keys_url: string;
-          /** Format: uri-template */
-          labels_url: string;
-          /** Format: uri */
-          languages_url: string;
-          /** Format: uri */
-          merges_url: string;
-          /** Format: uri-template */
-          milestones_url: string;
-          /** @description The name of the repository. */
-          name: string;
-          node_id: string;
-          /** Format: uri-template */
-          notifications_url: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description Whether the repository is private or public. */
-          private: boolean;
-          /** Format: uri-template */
-          pulls_url: string;
-          /** Format: uri-template */
-          releases_url: string;
-          /** Format: uri */
-          stargazers_url: string;
-          /** Format: uri-template */
-          statuses_url: string;
-          /** Format: uri */
-          subscribers_url: string;
-          /** Format: uri */
-          subscription_url: string;
-          /** Format: uri */
-          tags_url: string;
-          /** Format: uri */
-          teams_url: string;
-          /** Format: uri-template */
-          trees_url: string;
-          /** Format: uri */
-          url: string;
-        };
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        jobs_url: string;
-        /** Format: uri */
-        logs_url: string;
-        name: string | null;
-        node_id: string;
-        path: string;
-        /** Format: uri */
-        previous_attempt_url: string | null;
-        pull_requests: {
-          base: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          head: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          id: number;
-          number: number;
-          /** Format: uri */
-          url: string;
-        }[];
-        referenced_workflows?:
-          | {
-              path: string;
-              ref?: string;
-              sha: string;
-            }[]
-          | null;
-        /** Repository Lite */
-        repository: {
-          /** Format: uri-template */
-          archive_url: string;
-          /** Format: uri-template */
-          assignees_url: string;
-          /** Format: uri-template */
-          blobs_url: string;
-          /** Format: uri-template */
-          branches_url: string;
-          /** Format: uri-template */
-          collaborators_url: string;
-          /** Format: uri-template */
-          comments_url: string;
-          /** Format: uri-template */
-          commits_url: string;
-          /** Format: uri-template */
-          compare_url: string;
-          /** Format: uri-template */
-          contents_url: string;
-          /** Format: uri */
-          contributors_url: string;
-          /** Format: uri */
-          deployments_url: string;
-          description: string | null;
-          /** Format: uri */
-          downloads_url: string;
-          /** Format: uri */
-          events_url: string;
-          fork: boolean;
-          /** Format: uri */
-          forks_url: string;
-          full_name: string;
-          /** Format: uri-template */
-          git_commits_url: string;
-          /** Format: uri-template */
-          git_refs_url: string;
-          /** Format: uri-template */
-          git_tags_url: string;
-          /** Format: uri */
-          hooks_url: string;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the repository */
-          id: number;
-          /** Format: uri-template */
-          issue_comment_url: string;
-          /** Format: uri-template */
-          issue_events_url: string;
-          /** Format: uri-template */
-          issues_url: string;
-          /** Format: uri-template */
-          keys_url: string;
-          /** Format: uri-template */
-          labels_url: string;
-          /** Format: uri */
-          languages_url: string;
-          /** Format: uri */
-          merges_url: string;
-          /** Format: uri-template */
-          milestones_url: string;
-          /** @description The name of the repository. */
-          name: string;
-          node_id: string;
-          /** Format: uri-template */
-          notifications_url: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description Whether the repository is private or public. */
-          private: boolean;
-          /** Format: uri-template */
-          pulls_url: string;
-          /** Format: uri-template */
-          releases_url: string;
-          /** Format: uri */
-          stargazers_url: string;
-          /** Format: uri-template */
-          statuses_url: string;
-          /** Format: uri */
-          subscribers_url: string;
-          /** Format: uri */
-          subscription_url: string;
-          /** Format: uri */
-          tags_url: string;
-          /** Format: uri */
-          teams_url: string;
-          /** Format: uri-template */
-          trees_url: string;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        rerun_url: string;
-        run_attempt: number;
-        run_number: number;
-        /** Format: date-time */
-        run_started_at: string;
-        /** @enum {string} */
-        status:
-          | "requested"
-          | "in_progress"
-          | "completed"
-          | "queued"
-          | "pending";
-        /** User */
-        triggering_actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        workflow_id: number;
-        /** Format: uri */
-        workflow_url: string;
-      } & {
-        actor?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        artifacts_url?: string;
-        cancel_url?: string;
-        check_suite_id?: number;
-        check_suite_node_id?: string;
-        check_suite_url?: string;
-        /** @enum {string|null} */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "skipped"
-          | "stale"
-          | null;
-        created_at?: string;
-        event?: string;
-        head_branch?: string | null;
-        head_commit?: {
-          author?: {
-            email?: string;
-            name?: string;
-          };
-          committer?: {
-            email?: string;
-            name?: string;
-          };
-          id?: string;
-          message?: string;
-          timestamp?: string;
-          tree_id?: string;
-        };
-        head_repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: string | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string | null;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        head_sha?: string;
-        html_url?: string;
-        id?: number;
-        jobs_url?: string;
-        logs_url?: string;
-        name?: string | null;
-        node_id?: string;
-        path?: string;
-        previous_attempt_url?: string | null;
-        pull_requests?: (Record<string, unknown> | null)[];
-        referenced_workflows?:
-          | {
-              path: string;
-              ref?: string;
-              sha: string;
-            }[]
-          | null;
-        repository?: {
-          archive_url?: string;
-          assignees_url?: string;
-          blobs_url?: string;
-          branches_url?: string;
-          collaborators_url?: string;
-          comments_url?: string;
-          commits_url?: string;
-          compare_url?: string;
-          contents_url?: string;
-          contributors_url?: string;
-          deployments_url?: string;
-          description?: string | null;
-          downloads_url?: string;
-          events_url?: string;
-          fork?: boolean;
-          forks_url?: string;
-          full_name?: string;
-          git_commits_url?: string;
-          git_refs_url?: string;
-          git_tags_url?: string;
-          hooks_url?: string;
-          html_url?: string;
-          id?: number;
-          issue_comment_url?: string;
-          issue_events_url?: string;
-          issues_url?: string;
-          keys_url?: string;
-          labels_url?: string;
-          languages_url?: string;
-          merges_url?: string;
-          milestones_url?: string;
-          name?: string;
-          node_id?: string;
-          notifications_url?: string;
-          owner?: {
-            avatar_url?: string;
-            events_url?: string;
-            followers_url?: string;
-            following_url?: string;
-            gists_url?: string;
-            gravatar_id?: string;
-            html_url?: string;
-            id?: number;
-            login?: string;
-            node_id?: string;
-            organizations_url?: string;
-            received_events_url?: string;
-            repos_url?: string;
-            site_admin?: boolean;
-            starred_url?: string;
-            subscriptions_url?: string;
-            type?: string;
-            url?: string;
-          };
-          private?: boolean;
-          pulls_url?: string;
-          releases_url?: string;
-          stargazers_url?: string;
-          statuses_url?: string;
-          subscribers_url?: string;
-          subscription_url?: string;
-          tags_url?: string;
-          teams_url?: string;
-          trees_url?: string;
-          url?: string;
-        };
-        rerun_url?: string;
-        run_attempt?: number;
-        run_number?: number;
-        run_started_at?: string;
-        status?: string;
-        triggering_actor?: {
-          avatar_url?: string;
-          events_url?: string;
-          followers_url?: string;
-          following_url?: string;
-          gists_url?: string;
-          gravatar_id?: string;
-          html_url?: string;
-          id?: number;
-          login?: string;
-          node_id?: string;
-          organizations_url?: string;
-          received_events_url?: string;
-          repos_url?: string;
-          site_admin?: boolean;
-          starred_url?: string;
-          subscriptions_url?: string;
-          type?: string;
-          url?: string;
-        };
-        updated_at?: string;
-        url?: string;
-        workflow_id?: number;
-        workflow_url?: string;
-      };
-    };
-    /** workflow_run requested event */
-    "webhook-workflow-run-requested": {
-      /** @enum {string} */
-      action: "requested";
-      enterprise?: components["schemas"]["enterprise-webhooks"];
-      installation?: components["schemas"]["simple-installation"];
-      organization?: components["schemas"]["organization-simple-webhooks"];
-      repository: components["schemas"]["repository-webhooks"];
-      sender: components["schemas"]["simple-user-webhooks"];
-      /** Workflow */
-      workflow: {
-        /** Format: uri */
-        badge_url: string;
-        /** Format: date-time */
-        created_at: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        name: string;
-        node_id: string;
-        path: string;
-        state: string;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-      } | null;
-      /** Workflow Run */
-      workflow_run: {
-        /** User */
-        actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: uri */
-        artifacts_url: string;
-        /** Format: uri */
-        cancel_url: string;
-        check_suite_id: number;
-        check_suite_node_id: string;
-        /** Format: uri */
-        check_suite_url: string;
-        /** @enum {string|null} */
-        conclusion:
-          | "success"
-          | "failure"
-          | "neutral"
-          | "cancelled"
-          | "timed_out"
-          | "action_required"
-          | "stale"
-          | null
-          | "skipped"
-          | "startup_failure";
-        /** Format: date-time */
-        created_at: string;
-        event: string;
-        head_branch: string | null;
-        /** SimpleCommit */
-        head_commit: {
-          /**
-           * Committer
-           * @description Metaproperties for Git author/committer information.
-           */
-          author: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          };
-          /**
-           * Committer
-           * @description Metaproperties for Git author/committer information.
-           */
-          committer: {
-            /** Format: date-time */
-            date?: string;
-            /** Format: email */
-            email: string | null;
-            /** @description The git author's name. */
-            name: string;
-            username?: string;
-          };
-          id: string;
-          message: string;
-          timestamp: string;
-          tree_id: string;
-        };
-        /** Repository Lite */
-        head_repository: {
-          /** Format: uri-template */
-          archive_url: string;
-          /** Format: uri-template */
-          assignees_url: string;
-          /** Format: uri-template */
-          blobs_url: string;
-          /** Format: uri-template */
-          branches_url: string;
-          /** Format: uri-template */
-          collaborators_url: string;
-          /** Format: uri-template */
-          comments_url: string;
-          /** Format: uri-template */
-          commits_url: string;
-          /** Format: uri-template */
-          compare_url: string;
-          /** Format: uri-template */
-          contents_url: string;
-          /** Format: uri */
-          contributors_url: string;
-          /** Format: uri */
-          deployments_url: string;
-          description: string | null;
-          /** Format: uri */
-          downloads_url: string;
-          /** Format: uri */
-          events_url: string;
-          fork: boolean;
-          /** Format: uri */
-          forks_url: string;
-          full_name: string;
-          /** Format: uri-template */
-          git_commits_url: string;
-          /** Format: uri-template */
-          git_refs_url: string;
-          /** Format: uri-template */
-          git_tags_url: string;
-          /** Format: uri */
-          hooks_url: string;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the repository */
-          id: number;
-          /** Format: uri-template */
-          issue_comment_url: string;
-          /** Format: uri-template */
-          issue_events_url: string;
-          /** Format: uri-template */
-          issues_url: string;
-          /** Format: uri-template */
-          keys_url: string;
-          /** Format: uri-template */
-          labels_url: string;
-          /** Format: uri */
-          languages_url: string;
-          /** Format: uri */
-          merges_url: string;
-          /** Format: uri-template */
-          milestones_url: string;
-          /** @description The name of the repository. */
-          name: string;
-          node_id: string;
-          /** Format: uri-template */
-          notifications_url: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description Whether the repository is private or public. */
-          private: boolean;
-          /** Format: uri-template */
-          pulls_url: string;
-          /** Format: uri-template */
-          releases_url: string;
-          /** Format: uri */
-          stargazers_url: string;
-          /** Format: uri-template */
-          statuses_url: string;
-          /** Format: uri */
-          subscribers_url: string;
-          /** Format: uri */
-          subscription_url: string;
-          /** Format: uri */
-          tags_url: string;
-          /** Format: uri */
-          teams_url: string;
-          /** Format: uri-template */
-          trees_url: string;
-          /** Format: uri */
-          url: string;
-        };
-        head_sha: string;
-        /** Format: uri */
-        html_url: string;
-        id: number;
-        /** Format: uri */
-        jobs_url: string;
-        /** Format: uri */
-        logs_url: string;
-        name: string | null;
-        node_id: string;
-        path: string;
-        /** Format: uri */
-        previous_attempt_url: string | null;
-        pull_requests: {
-          base: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          head: {
-            ref: string;
-            /** Repo Ref */
-            repo: {
-              id: number;
-              name: string;
-              /** Format: uri */
-              url: string;
-            };
-            sha: string;
-          };
-          id: number;
-          number: number;
-          /** Format: uri */
-          url: string;
-        }[];
-        referenced_workflows?:
-          | {
-              path: string;
-              ref?: string;
-              sha: string;
-            }[]
-          | null;
-        /** Repository Lite */
-        repository: {
-          /** Format: uri-template */
-          archive_url: string;
-          /** Format: uri-template */
-          assignees_url: string;
-          /** Format: uri-template */
-          blobs_url: string;
-          /** Format: uri-template */
-          branches_url: string;
-          /** Format: uri-template */
-          collaborators_url: string;
-          /** Format: uri-template */
-          comments_url: string;
-          /** Format: uri-template */
-          commits_url: string;
-          /** Format: uri-template */
-          compare_url: string;
-          /** Format: uri-template */
-          contents_url: string;
-          /** Format: uri */
-          contributors_url: string;
-          /** Format: uri */
-          deployments_url: string;
-          description: string | null;
-          /** Format: uri */
-          downloads_url: string;
-          /** Format: uri */
-          events_url: string;
-          fork: boolean;
-          /** Format: uri */
-          forks_url: string;
-          full_name: string;
-          /** Format: uri-template */
-          git_commits_url: string;
-          /** Format: uri-template */
-          git_refs_url: string;
-          /** Format: uri-template */
-          git_tags_url: string;
-          /** Format: uri */
-          hooks_url: string;
-          /** Format: uri */
-          html_url: string;
-          /** @description Unique identifier of the repository */
-          id: number;
-          /** Format: uri-template */
-          issue_comment_url: string;
-          /** Format: uri-template */
-          issue_events_url: string;
-          /** Format: uri-template */
-          issues_url: string;
-          /** Format: uri-template */
-          keys_url: string;
-          /** Format: uri-template */
-          labels_url: string;
-          /** Format: uri */
-          languages_url: string;
-          /** Format: uri */
-          merges_url: string;
-          /** Format: uri-template */
-          milestones_url: string;
-          /** @description The name of the repository. */
-          name: string;
-          node_id: string;
-          /** Format: uri-template */
-          notifications_url: string;
-          /** User */
-          owner: {
-            /** Format: uri */
-            avatar_url?: string;
-            deleted?: boolean;
-            email?: string | null;
-            /** Format: uri-template */
-            events_url?: string;
-            /** Format: uri */
-            followers_url?: string;
-            /** Format: uri-template */
-            following_url?: string;
-            /** Format: uri-template */
-            gists_url?: string;
-            gravatar_id?: string;
-            /** Format: uri */
-            html_url?: string;
-            id: number;
-            login: string;
-            name?: string;
-            node_id?: string;
-            /** Format: uri */
-            organizations_url?: string;
-            /** Format: uri */
-            received_events_url?: string;
-            /** Format: uri */
-            repos_url?: string;
-            site_admin?: boolean;
-            /** Format: uri-template */
-            starred_url?: string;
-            /** Format: uri */
-            subscriptions_url?: string;
-            /** @enum {string} */
-            type?: "Bot" | "User" | "Organization";
-            /** Format: uri */
-            url?: string;
-          } | null;
-          /** @description Whether the repository is private or public. */
-          private: boolean;
-          /** Format: uri-template */
-          pulls_url: string;
-          /** Format: uri-template */
-          releases_url: string;
-          /** Format: uri */
-          stargazers_url: string;
-          /** Format: uri-template */
-          statuses_url: string;
-          /** Format: uri */
-          subscribers_url: string;
-          /** Format: uri */
-          subscription_url: string;
-          /** Format: uri */
-          tags_url: string;
-          /** Format: uri */
-          teams_url: string;
-          /** Format: uri-template */
-          trees_url: string;
-          /** Format: uri */
-          url: string;
-        };
-        /** Format: uri */
-        rerun_url: string;
-        run_attempt: number;
-        run_number: number;
-        /** Format: date-time */
-        run_started_at: string;
-        /** @enum {string} */
-        status:
-          | "requested"
-          | "in_progress"
-          | "completed"
-          | "queued"
-          | "pending"
-          | "waiting";
-        /** User */
-        triggering_actor: {
-          /** Format: uri */
-          avatar_url?: string;
-          deleted?: boolean;
-          email?: string | null;
-          /** Format: uri-template */
-          events_url?: string;
-          /** Format: uri */
-          followers_url?: string;
-          /** Format: uri-template */
-          following_url?: string;
-          /** Format: uri-template */
-          gists_url?: string;
-          gravatar_id?: string;
-          /** Format: uri */
-          html_url?: string;
-          id: number;
-          login: string;
-          name?: string;
-          node_id?: string;
-          /** Format: uri */
-          organizations_url?: string;
-          /** Format: uri */
-          received_events_url?: string;
-          /** Format: uri */
-          repos_url?: string;
-          site_admin?: boolean;
-          /** Format: uri-template */
-          starred_url?: string;
-          /** Format: uri */
-          subscriptions_url?: string;
-          /** @enum {string} */
-          type?: "Bot" | "User" | "Organization";
-          /** Format: uri */
-          url?: string;
-        } | null;
-        /** Format: date-time */
-        updated_at: string;
-        /** Format: uri */
-        url: string;
-        workflow_id: number;
-        /** Format: uri */
-        workflow_url: string;
-        display_title: string;
-      };
-    };
-  };
-  responses: {
-    /** @description Validation failed, or the endpoint has been spammed. */
-    validation_failed_simple: {
-      content: {
-        "application/json": components["schemas"]["validation-error-simple"];
-      };
-    };
-    /** @description Resource not found */
-    not_found: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-    /** @description Bad Request */
-    bad_request: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-        "application/scim+json": components["schemas"]["scim-error"];
-      };
-    };
-    /** @description Validation failed, or the endpoint has been spammed. */
-    validation_failed: {
-      content: {
-        "application/json": components["schemas"]["validation-error"];
-      };
-    };
-    /** @description Accepted */
-    accepted: {
-      content: {
-        "application/json": Record<string, never>;
-      };
-    };
-    /** @description Not modified */
-    not_modified: {
-      content: never;
-    };
-    /** @description Requires authentication */
-    requires_authentication: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-    /** @description Forbidden */
-    forbidden: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-    /** @description Service unavailable */
-    service_unavailable: {
-      content: {
-        "application/json": {
-          code?: string;
-          message?: string;
-          documentation_url?: string;
-        };
-      };
-    };
-    /** @description Forbidden Gist */
-    forbidden_gist: {
-      content: {
-        "application/json": {
-          block?: {
-            reason?: string;
-            created_at?: string;
-            html_url?: string | null;
-          };
-          message?: string;
-          documentation_url?: string;
-        };
-      };
-    };
-    /** @description Moved permanently */
-    moved_permanently: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-    /** @description Conflict */
-    conflict: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-    /** @description Response */
-    actions_runner_jitconfig: {
-      content: {
-        "application/json": {
-          runner: components["schemas"]["runner"];
-          /** @description The base64 encoded runner configuration. */
-          encoded_jit_config: string;
-        };
-      };
-    };
-    /** @description Response */
-    actions_runner_labels: {
-      content: {
-        "application/json": {
-          total_count: number;
-          labels: components["schemas"]["runner-label"][];
-        };
-      };
-    };
-    /** @description Response */
-    actions_runner_labels_readonly: {
-      content: {
-        "application/json": {
-          total_count: number;
-          labels: components["schemas"]["runner-label"][];
-        };
-      };
-    };
-    /** @description Internal Error */
-    internal_error: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-    /** @description The value of `per_page` multiplied by `page` cannot be greater than 10000. */
-    package_es_list_error: {
-      content: never;
-    };
-    /** @description A header with no content is returned. */
-    no_content: {
-      content: never;
-    };
-    /** @description Gone */
-    gone: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-    /** @description Temporary Redirect */
-    temporary_redirect: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-    /** @description Response if GitHub Advanced Security is not enabled for this repository */
-    code_scanning_forbidden_read: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-    /** @description Response if the repository is archived or if GitHub Advanced Security is not enabled for this repository */
-    code_scanning_forbidden_write: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-    /** @description Found */
-    found: {
-      content: never;
-    };
-    /** @description Response if there is already a validation run in progress with a different default setup configuration */
-    code_scanning_conflict: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-    /** @description Response if GitHub Advanced Security is not enabled for this repository */
-    dependency_review_forbidden: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-    /** @description Unavailable due to service under maintenance. */
-    porter_maintenance: {
-      content: {
-        "application/json": components["schemas"]["basic-error"];
-      };
-    };
-  };
-  parameters: {
-    /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for results before this cursor. */
-    "pagination-before"?: string;
-    /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for results after this cursor. */
-    "pagination-after"?: string;
-    /** @description The direction to sort the results by. */
-    direction?: "asc" | "desc";
-    /** @description The GHSA (GitHub Security Advisory) identifier of the advisory. */
-    ghsa_id: string;
-    /** @description The number of results per page (max 100). */
-    "per-page"?: number;
-    /** @description Used for pagination: the starting delivery from which the page of deliveries is fetched. Refer to the `link` header for the next and previous page cursors. */
-    cursor?: string;
-    "delivery-id": number;
-    /** @description Page number of the results to fetch. */
-    page?: number;
-    /** @description Only show results that were last updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */
-    since?: string;
-    /** @description The unique identifier of the installation. */
-    "installation-id": number;
-    /** @description The client ID of the GitHub app. */
-    "client-id": string;
-    "app-slug": string;
-    /** @description The unique identifier of the classroom assignment. */
-    "assignment-id": number;
-    /** @description The unique identifier of the classroom. */
-    "classroom-id": number;
-    /** @description The slug version of the enterprise name. You can also substitute this value with the enterprise id. */
-    enterprise: string;
-    /**
-     * @description A comma-separated list of states. If specified, only alerts with these states will be returned.
-     *
-     * Can be: `auto_dismissed`, `dismissed`, `fixed`, `open`
-     */
-    "dependabot-alert-comma-separated-states"?: string;
-    /**
-     * @description A comma-separated list of severities. If specified, only alerts with these severities will be returned.
-     *
-     * Can be: `low`, `medium`, `high`, `critical`
-     */
-    "dependabot-alert-comma-separated-severities"?: string;
-    /**
-     * @description A comma-separated list of ecosystems. If specified, only alerts for these ecosystems will be returned.
-     *
-     * Can be: `composer`, `go`, `maven`, `npm`, `nuget`, `pip`, `pub`, `rubygems`, `rust`
-     */
-    "dependabot-alert-comma-separated-ecosystems"?: string;
-    /** @description A comma-separated list of package names. If specified, only alerts for these packages will be returned. */
-    "dependabot-alert-comma-separated-packages"?: string;
-    /** @description The scope of the vulnerable dependency. If specified, only alerts with this scope will be returned. */
-    "dependabot-alert-scope"?: "development" | "runtime";
-    /**
-     * @description The property by which to sort the results.
-     * `created` means when the alert was created.
-     * `updated` means when the alert's state last changed.
-     */
-    "dependabot-alert-sort"?: "created" | "updated";
-    /**
-     * @description **Deprecated**. The number of results per page (max 100), starting from the first matching result.
-     * This parameter must not be used in combination with `last`.
-     * Instead, use `per_page` in combination with `after` to fetch the first page of results.
-     */
-    "pagination-first"?: number;
-    /**
-     * @description **Deprecated**. The number of results per page (max 100), starting from the last matching result.
-     * This parameter must not be used in combination with `first`.
-     * Instead, use `per_page` in combination with `before` to fetch the last page of results.
-     */
-    "pagination-last"?: number;
-    /** @description Set to `open` or `resolved` to only list secret scanning alerts in a specific state. */
-    "secret-scanning-alert-state"?: "open" | "resolved";
-    /**
-     * @description A comma-separated list of secret types to return. By default all secret types are returned.
-     * See "[Secret scanning patterns](https://docs.github.com/code-security/secret-scanning/secret-scanning-patterns#supported-secrets-for-advanced-security)"
-     * for a complete list of secret types.
-     */
-    "secret-scanning-alert-secret-type"?: string;
-    /** @description A comma-separated list of resolutions. Only secret scanning alerts with one of these resolutions are listed. Valid resolutions are `false_positive`, `wont_fix`, `revoked`, `pattern_edited`, `pattern_deleted` or `used_in_tests`. */
-    "secret-scanning-alert-resolution"?: string;
-    /** @description The property to sort the results by. `created` means when the alert was created. `updated` means when the alert was updated or resolved. */
-    "secret-scanning-alert-sort"?: "created" | "updated";
-    /** @description A comma-separated list of validities that, when present, will return alerts that match the validities in this list. Valid options are `active`, `inactive`, and `unknown`. */
-    "secret-scanning-alert-validity"?: string;
-    /** @description The unique identifier of the gist. */
-    "gist-id": string;
-    /** @description The unique identifier of the comment. */
-    "comment-id": number;
-    /** @description A list of comma separated label names. Example: `bug,ui,@high` */
-    labels?: string;
-    /** @description account_id parameter */
-    "account-id": number;
-    /** @description The unique identifier of the plan. */
-    "plan-id": number;
-    /** @description The property to sort the results by. */
-    sort?: "created" | "updated";
-    /** @description The account owner of the repository. The name is not case sensitive. */
-    owner: string;
-    /** @description The name of the repository without the `.git` extension. The name is not case sensitive. */
-    repo: string;
-    /** @description If `true`, show notifications marked as read. */
-    all?: boolean;
-    /** @description If `true`, only shows notifications in which the user is directly participating or mentioned. */
-    participating?: boolean;
-    /** @description Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */
-    before?: string;
-    /** @description The unique identifier of the notification thread. This corresponds to the value returned in the `id` field when you retrieve notifications (for example with the [`GET /notifications` operation](https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user)). */
-    "thread-id": number;
-    /** @description An organization ID. Only return organizations with an ID greater than this ID. */
-    "since-org"?: number;
-    /** @description The organization name. The name is not case sensitive. */
-    org: string;
-    /** @description The unique identifier of the repository. */
-    "repository-id": number;
-    /** @description Unique identifier of the self-hosted runner. */
-    "runner-id": number;
-    /** @description The name of a self-hosted runner's custom label. */
-    "runner-label-name": string;
-    /** @description The name of the secret. */
-    "secret-name": string;
-    /** @description The number of results per page (max 30). */
-    "variables-per-page"?: number;
-    /** @description The name of the variable. */
-    "variable-name": string;
-    /** @description The handle for the GitHub user account. */
-    username: string;
-    /** @description The name of a code scanning tool. Only results by this tool will be listed. You can specify the tool by using either `tool_name` or `tool_guid`, but not both. */
-    "tool-name"?: components["schemas"]["code-scanning-analysis-tool-name"];
-    /** @description The GUID of a code scanning tool. Only results by this tool will be listed. Note that some code scanning tools may not include a GUID in their analysis data. You can specify the tool by using either `tool_guid` or `tool_name`, but not both. */
-    "tool-guid"?: components["schemas"]["code-scanning-analysis-tool-guid"];
-    /** @description The unique identifier of the hook. You can find this value in the `X-GitHub-Hook-ID` header of a webhook delivery. */
-    "hook-id": number;
-    /** @description The unique identifier of the invitation. */
-    "invitation-id": number;
-    /** @description The name of the codespace. */
-    "codespace-name": string;
-    /** @description The unique identifier of the migration. */
-    "migration-id": number;
-    /** @description repo_name parameter */
-    "repo-name": string;
-    /**
-     * @description The selected visibility of the packages.  This parameter is optional and only filters an existing result set.
-     *
-     * The `internal` visibility is only supported for GitHub Packages registries that allow for granular permissions. For other ecosystems `internal` is synonymous with `private`.
-     * For the list of GitHub Packages registries that support granular permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-     */
-    "package-visibility"?: "public" | "private" | "internal";
-    /** @description The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */
-    "package-type":
-      | "npm"
-      | "maven"
-      | "rubygems"
-      | "docker"
-      | "nuget"
-      | "container";
-    /** @description The name of the package. */
-    "package-name": string;
-    /** @description Unique identifier of the package version. */
-    "package-version-id": number;
-    /** @description The property by which to sort the results. */
-    "personal-access-token-sort"?: "created_at";
-    /** @description A list of owner usernames to use to filter the results. */
-    "personal-access-token-owner"?: string[];
-    /** @description The name of the repository to use to filter the results. */
-    "personal-access-token-repository"?: string;
-    /** @description The permission to use to filter the results. */
-    "personal-access-token-permission"?: string;
-    /** @description Only show fine-grained personal access tokens used before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */
-    "personal-access-token-before"?: string;
-    /** @description Only show fine-grained personal access tokens used after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */
-    "personal-access-token-after"?: string;
-    /** @description The unique identifier of the fine-grained personal access token. */
-    "fine-grained-personal-access-token-id": number;
-    /** @description The custom property name. The name is case sensitive. */
-    "custom-property-name": string;
-    /** @description The name of the repository to filter on. When specified, only rule evaluations from this repository will be returned. */
-    "repository-name-in-query"?: number;
-    /**
-     * @description The time period to filter by.
-     *
-     * 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).
-     */
-    "time-period"?: "hour" | "day" | "week" | "month";
-    /** @description The handle for the GitHub user account to filter on. When specified, only rule evaluations triggered by this actor will be returned. */
-    "actor-name-in-query"?: string;
-    /** @description The rule results to filter on. When specified, only suites with this result will be returned. */
-    "rule-suite-result"?: "pass" | "fail" | "bypass" | "all";
-    /**
-     * @description The unique identifier of the rule suite result.
-     * To get this ID, you can use [GET /repos/{owner}/{repo}/rulesets/rule-suites](https://docs.github.com/rest/repos/rule-suites#list-repository-rule-suites)
-     * for repositories and [GET /orgs/{org}/rulesets/rule-suites](https://docs.github.com/rest/orgs/rule-suites#list-organization-rule-suites)
-     * for organizations.
-     */
-    "rule-suite-id": number;
-    /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for events before this cursor. To receive an initial cursor on your first request, include an empty "before" query string. */
-    "secret-scanning-pagination-before-org-repo"?: string;
-    /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for events after this cursor.  To receive an initial cursor on your first request, include an empty "after" query string. */
-    "secret-scanning-pagination-after-org-repo"?: string;
-    /** @description The slug of the team name. */
-    "team-slug": string;
-    /** @description The number that identifies the discussion. */
-    "discussion-number": number;
-    /** @description The number that identifies the comment. */
-    "comment-number": number;
-    /** @description The unique identifier of the reaction. */
-    "reaction-id": number;
-    /** @description The unique identifier of the project. */
-    "project-id": number;
-    /** @description The security feature to enable or disable. */
-    "security-product":
-      | "dependency_graph"
-      | "dependabot_alerts"
-      | "dependabot_security_updates"
-      | "advanced_security"
-      | "code_scanning_default_setup"
-      | "secret_scanning"
-      | "secret_scanning_push_protection";
-    /**
-     * @description The action to take.
-     *
-     * `enable_all` means to enable the specified security feature for all repositories in the organization.
-     * `disable_all` means to disable the specified security feature for all repositories in the organization.
-     */
-    "org-security-product-enablement": "enable_all" | "disable_all";
-    /** @description The unique identifier of the card. */
-    "card-id": number;
-    /** @description The unique identifier of the column. */
-    "column-id": number;
-    /** @description The name field of an artifact. When specified, only artifacts with this name will be returned. */
-    "artifact-name"?: string;
-    /** @description The unique identifier of the artifact. */
-    "artifact-id": number;
-    /** @description The full Git reference for narrowing down the cache. The `ref` for a branch should be formatted as `refs/heads/<branch name>`. To reference a pull request use `refs/pull/<number>/merge`. */
-    "actions-cache-git-ref-full"?: string;
-    /** @description An explicit key or prefix for identifying the cache */
-    "actions-cache-key"?: string;
-    /** @description The property to sort the results by. `created_at` means when the cache was created. `last_accessed_at` means when the cache was last accessed. `size_in_bytes` is the size of the cache in bytes. */
-    "actions-cache-list-sort"?:
-      | "created_at"
-      | "last_accessed_at"
-      | "size_in_bytes";
-    /** @description A key for identifying the cache. */
-    "actions-cache-key-required": string;
-    /** @description The unique identifier of the GitHub Actions cache. */
-    "cache-id": number;
-    /** @description The unique identifier of the job. */
-    "job-id": number;
-    /** @description Returns someone's workflow runs. Use the login for the user who created the `push` associated with the check suite or workflow run. */
-    actor?: string;
-    /** @description Returns workflow runs associated with a branch. Use the name of the branch of the `push`. */
-    "workflow-run-branch"?: string;
-    /** @description Returns workflow run triggered by the event you specify. For example, `push`, `pull_request` or `issue`. For more information, see "[Events that trigger workflows](https://docs.github.com/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows)." */
-    event?: string;
-    /** @description Returns workflow runs with the check run `status` or `conclusion` that you specify. For example, a conclusion can be `success` or a status can be `in_progress`. Only GitHub can set a status of `waiting` or `requested`. */
-    "workflow-run-status"?:
-      | "completed"
-      | "action_required"
-      | "cancelled"
-      | "failure"
-      | "neutral"
-      | "skipped"
-      | "stale"
-      | "success"
-      | "timed_out"
-      | "in_progress"
-      | "queued"
-      | "requested"
-      | "waiting"
-      | "pending";
-    /** @description Returns workflow runs created within the given date-time range. For more information on the syntax, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)." */
-    created?: string;
-    /** @description If `true` pull requests are omitted from the response (empty array). */
-    "exclude-pull-requests"?: boolean;
-    /** @description Returns workflow runs with the `check_suite_id` that you specify. */
-    "workflow-run-check-suite-id"?: number;
-    /** @description Only returns workflow runs that are associated with the specified `head_sha`. */
-    "workflow-run-head-sha"?: string;
-    /** @description The unique identifier of the workflow run. */
-    "run-id": number;
-    /** @description The attempt number of the workflow run. */
-    "attempt-number": number;
-    /** @description The ID of the workflow. You can also pass the workflow file name as a string. */
-    "workflow-id": number | string;
-    /** @description The unique identifier of the autolink. */
-    "autolink-id": number;
-    /** @description The name of the branch. Cannot contain wildcard characters. To use wildcard characters in branch names, use [the GraphQL API](https://docs.github.com/graphql). */
-    branch: string;
-    /** @description The unique identifier of the check run. */
-    "check-run-id": number;
-    /** @description The unique identifier of the check suite. */
-    "check-suite-id": number;
-    /** @description Returns check runs with the specified `name`. */
-    "check-name"?: string;
-    /** @description Returns check runs with the specified `status`. */
-    status?: "queued" | "in_progress" | "completed";
-    /** @description The Git reference for the results you want to list. The `ref` for a branch can be formatted either as `refs/heads/<branch name>` or simply `<branch name>`. To reference a pull request use `refs/pull/<number>/merge`. */
-    "git-ref"?: components["schemas"]["code-scanning-ref"];
-    /** @description The number that identifies an alert. You can find this at the end of the URL for a code scanning alert within GitHub, and in the `number` field in the response from the `GET /repos/{owner}/{repo}/code-scanning/alerts` operation. */
-    "alert-number": components["schemas"]["alert-number"];
-    /** @description The SHA of the commit. */
-    "commit-sha": string;
-    /** @description The commit reference. Can be a commit SHA, branch name (`heads/BRANCH_NAME`), or tag name (`tags/TAG_NAME`). For more information, see "[Git References](https://git-scm.com/book/en/v2/Git-Internals-Git-References)" in the Git documentation. */
-    "commit-ref": string;
-    /** @description A comma-separated list of full manifest paths. If specified, only alerts for these manifests will be returned. */
-    "dependabot-alert-comma-separated-manifests"?: string;
-    /**
-     * @description The number that identifies a Dependabot alert in its repository.
-     * You can find this at the end of the URL for a Dependabot alert within GitHub,
-     * or in `number` fields in the response from the
-     * `GET /repos/{owner}/{repo}/dependabot/alerts` operation.
-     */
-    "dependabot-alert-number": components["schemas"]["alert-number"];
-    /** @description The full path, relative to the repository root, of the dependency manifest file. */
-    "manifest-path"?: string;
-    /** @description deployment_id parameter */
-    "deployment-id": number;
-    /** @description The name of the environment. */
-    "environment-name": string;
-    /** @description The unique identifier of the branch policy. */
-    "branch-policy-id": number;
-    /** @description The unique identifier of the protection rule. */
-    "protection-rule-id": number;
-    /** @description A user ID. Only return users with an ID greater than this ID. */
-    "since-user"?: number;
-    /** @description The number that identifies the issue. */
-    "issue-number": number;
-    /** @description The unique identifier of the key. */
-    "key-id": number;
-    /** @description The number that identifies the milestone. */
-    "milestone-number": number;
-    /** @description The number that identifies the pull request. */
-    "pull-number": number;
-    /** @description The unique identifier of the review. */
-    "review-id": number;
-    /** @description The unique identifier of the asset. */
-    "asset-id": number;
-    /** @description The unique identifier of the release. */
-    "release-id": number;
-    /** @description The name of the ref. Cannot contain wildcard characters. When specified, only rule evaluations triggered for this ref will be returned. */
-    "ref-in-query"?: string;
-    /** @description The unique identifier of the tag protection. */
-    "tag-protection-id": number;
-    /** @description The time frame to display results for. */
-    per?: "day" | "week";
-    /** @description A repository ID. Only return repositories with an ID greater than this ID. */
-    "since-repo"?: number;
-    /** @description Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`. */
-    order?: "desc" | "asc";
-    /** @description The unique identifier of the team. */
-    "team-id": number;
-    /** @description ID of the Repository to filter on */
-    "repository-id-in-query"?: number;
-    /** @description The ID of the export operation, or `latest`. Currently only `latest` is currently supported. */
-    "export-id": string;
-    /** @description The unique identifier of the GPG key. */
-    "gpg-key-id": number;
-    /** @description Only show repositories updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */
-    "since-repo-date"?: string;
-    /** @description Only show repositories updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */
-    "before-repo-date"?: string;
-    /** @description The unique identifier of the SSH signing key. */
-    "ssh-signing-key-id": number;
-    /** @description The property to sort the results by. `created` means when the repository was starred. `updated` means when the repository was last pushed to. */
-    "sort-starred"?: "created" | "updated";
-  };
-  requestBodies: never;
-  headers: {
-    /** @example <https://api.github.com/resource?page=2>; rel="next", <https://api.github.com/resource?page=5>; rel="last" */
-    link: string;
-    /** @example text/html */
-    "content-type": string;
-    /** @example 0.17.4 */
-    "x-common-marker-version": string;
-    /** @example 5000 */
-    "x-rate-limit-limit": number;
-    /** @example 4999 */
-    "x-rate-limit-remaining": number;
-    /** @example 1590701888 */
-    "x-rate-limit-reset": number;
-    /** @example https://pipelines.actions.githubusercontent.com/OhgS4QRKqmgx7bKC27GKU83jnQjyeqG8oIMTge8eqtheppcmw8/_apis/pipelines/1/runs/176/signedlogcontent?urlExpires=2020-01-24T18%3A10%3A31.5729946Z&urlSigningMethod=HMACV1&urlSignature=agG73JakPYkHrh06seAkvmH7rBR4Ji4c2%2B6a2ejYh3E%3D */
-    location: string;
-  };
-  pathItems: never;
-}
-
-export type $defs = Record<string, never>;
-
-export type external = Record<string, never>;
-
-export interface operations {
-  /**
-   * GitHub API Root
-   * @description Get Hypermedia links to resources accessible in GitHub's REST API
-   */
-  "meta/root": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["root"];
-        };
-      };
-    };
-  };
-  /**
-   * List global security advisories
-   * @description Lists all global security advisories that match the specified parameters. If no other parameters are defined, the request will return only GitHub-reviewed advisories that are not malware.
-   *
-   * By default, all responses will exclude advisories for malware, because malware are not standard vulnerabilities. To list advisories for malware, you must include the `type` parameter in your request, with the value `malware`. For more information about the different types of security advisories, see "[About the GitHub Advisory database](https://docs.github.com/code-security/security-advisories/global-security-advisories/about-the-github-advisory-database#about-types-of-security-advisories)."
-   */
-  "security-advisories/list-global-advisories": {
-    parameters: {
-      query?: {
-        /** @description If specified, only advisories with this GHSA (GitHub Security Advisory) identifier will be returned. */
-        ghsa_id?: string;
-        /** @description If specified, only advisories of this type will be returned. By default, a request with no other parameters defined will only return reviewed advisories that are not malware. */
-        type?: "reviewed" | "malware" | "unreviewed";
-        /** @description If specified, only advisories with this CVE (Common Vulnerabilities and Exposures) identifier will be returned. */
-        cve_id?: string;
-        /** @description If specified, only advisories for these ecosystems will be returned. */
-        ecosystem?:
-          | "actions"
-          | "composer"
-          | "erlang"
-          | "go"
-          | "maven"
-          | "npm"
-          | "nuget"
-          | "other"
-          | "pip"
-          | "pub"
-          | "rubygems"
-          | "rust";
-        /** @description If specified, only advisories with these severities will be returned. */
-        severity?: "unknown" | "low" | "medium" | "high" | "critical";
-        /**
-         * @description If specified, only advisories with these Common Weakness Enumerations (CWEs) will be returned.
-         *
-         * Example: `cwes=79,284,22` or `cwes[]=79&cwes[]=284&cwes[]=22`
-         */
-        cwes?: string | string[];
-        /** @description Whether to only return advisories that have been withdrawn. */
-        is_withdrawn?: boolean;
-        /**
-         * @description If specified, only return advisories that affect any of `package` or `package@version`. A maximum of 1000 packages can be specified.
-         * If the query parameter causes the URL to exceed the maximum URL length supported by your client, you must specify fewer packages.
-         *
-         * Example: `affects=package1,package2@1.0.0,package3@^2.0.0` or `affects[]=package1&affects[]=package2@1.0.0`
-         */
-        affects?: string | string[];
-        /**
-         * @description If specified, only return advisories that were published on a date or date range.
-         *
-         * For more information on the syntax of the date range, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)."
-         */
-        published?: string;
-        /**
-         * @description If specified, only return advisories that were updated on a date or date range.
-         *
-         * For more information on the syntax of the date range, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)."
-         */
-        updated?: string;
-        /**
-         * @description If specified, only show advisories that were updated or published on a date or date range.
-         *
-         * For more information on the syntax of the date range, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)."
-         */
-        modified?: string;
-        before?: components["parameters"]["pagination-before"];
-        after?: components["parameters"]["pagination-after"];
-        direction?: components["parameters"]["direction"];
-        /** @description The number of results per page (max 100). */
-        per_page?: number;
-        /** @description The property to sort the results by. */
-        sort?: "updated" | "published";
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["global-advisory"][];
-        };
-      };
-      422: components["responses"]["validation_failed_simple"];
-      /** @description Too many requests */
-      429: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a global security advisory
-   * @description Gets a global security advisory using its GitHub Security Advisory (GHSA) identifier.
-   */
-  "security-advisories/get-global-advisory": {
-    parameters: {
-      path: {
-        ghsa_id: components["parameters"]["ghsa_id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["global-advisory"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get the authenticated app
-   * @description Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/apps/apps#list-installations-for-the-authenticated-app)" endpoint.
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/get-authenticated": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["integration"];
-        };
-      };
-    };
-  };
-  /**
-   * Create a GitHub App from a manifest
-   * @description Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`.
-   */
-  "apps/create-from-manifest": {
-    parameters: {
-      path: {
-        code: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["integration"] & {
-            client_id: string;
-            client_secret: string;
-            webhook_secret: string | null;
-            pem: string;
-            [key: string]: unknown;
-          };
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Get a webhook configuration for an app
-   * @description Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)."
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/get-webhook-config-for-app": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["webhook-config"];
-        };
-      };
-    };
-  };
-  /**
-   * Update a webhook configuration for an app
-   * @description Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)."
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/update-webhook-config-for-app": {
-    requestBody: {
-      content: {
-        "application/json": {
-          url?: components["schemas"]["webhook-config-url"];
-          content_type?: components["schemas"]["webhook-config-content-type"];
-          secret?: components["schemas"]["webhook-config-secret"];
-          insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["webhook-config"];
-        };
-      };
-    };
-  };
-  /**
-   * List deliveries for an app webhook
-   * @description Returns a list of webhook deliveries for the webhook configured for a GitHub App.
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/list-webhook-deliveries": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        cursor?: components["parameters"]["cursor"];
-        redelivery?: boolean;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["hook-delivery-item"][];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a delivery for an app webhook
-   * @description Returns a delivery for the webhook configured for a GitHub App.
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/get-webhook-delivery": {
-    parameters: {
-      path: {
-        delivery_id: components["parameters"]["delivery-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["hook-delivery"];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Redeliver a delivery for an app webhook
-   * @description Redeliver a delivery for the webhook configured for a GitHub App.
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/redeliver-webhook-delivery": {
-    parameters: {
-      path: {
-        delivery_id: components["parameters"]["delivery-id"];
-      };
-    };
-    responses: {
-      202: components["responses"]["accepted"];
-      400: components["responses"]["bad_request"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List installation requests for the authenticated app
-   * @description Lists all the pending installation requests for the authenticated GitHub App.
-   */
-  "apps/list-installation-requests-for-authenticated-app": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description List of integration installation requests */
-      200: {
-        content: {
-          "application/json": components["schemas"]["integration-installation-request"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-    };
-  };
-  /**
-   * List installations for the authenticated app
-   * @description You must use a [JWT](https://docs.github.com/enterprise-server@3.9/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   *
-   * The permissions the installation has are included under the `permissions` key.
-   */
-  "apps/list-installations": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        since?: components["parameters"]["since"];
-        outdated?: string;
-      };
-    };
-    responses: {
-      /** @description The permissions the installation has are included under the `permissions` key. */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            /**
-             * @description The ID of the installation.
-             * @example 1
-             */
-            id: number;
-            account:
-              | ({
-                  name?: string | null;
-                  email?: string | null;
-                  /** @example octocat */
-                  login: string;
-                  /** @example 1 */
-                  id: number;
-                  /** @example MDQ6VXNlcjE= */
-                  node_id: string;
-                  /**
-                   * Format: uri
-                   * @example https://github.com/images/error/octocat_happy.gif
-                   */
-                  avatar_url: string;
-                  /** @example 41d064eb2195891e12d0413f63227ea7 */
-                  gravatar_id: string | null;
-                  /**
-                   * Format: uri
-                   * @example https://api.github.com/users/octocat
-                   */
-                  url: string;
-                  /**
-                   * Format: uri
-                   * @example https://github.com/octocat
-                   */
-                  html_url: string;
-                  /**
-                   * Format: uri
-                   * @example https://api.github.com/users/octocat/followers
-                   */
-                  followers_url: string;
-                  /** @example https://api.github.com/users/octocat/following{/other_user} */
-                  following_url: string;
-                  /** @example https://api.github.com/users/octocat/gists{/gist_id} */
-                  gists_url: string;
-                  /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */
-                  starred_url: string;
-                  /**
-                   * Format: uri
-                   * @example https://api.github.com/users/octocat/subscriptions
-                   */
-                  subscriptions_url: string;
-                  /**
-                   * Format: uri
-                   * @example https://api.github.com/users/octocat/orgs
-                   */
-                  organizations_url: string;
-                  /**
-                   * Format: uri
-                   * @example https://api.github.com/users/octocat/repos
-                   */
-                  repos_url: string;
-                  /** @example https://api.github.com/users/octocat/events{/privacy} */
-                  events_url: string;
-                  /**
-                   * Format: uri
-                   * @example https://api.github.com/users/octocat/received_events
-                   */
-                  received_events_url: string;
-                  /** @example User */
-                  type: string;
-                  site_admin: boolean;
-                  /** @example "2020-07-09T00:17:55Z" */
-                  starred_at?: string;
-                } & {
-                  /** @description A short description of the enterprise. */
-                  description?: string | null;
-                  /**
-                   * Format: uri
-                   * @example https://github.com/enterprises/octo-business
-                   */
-                  html_url: string;
-                  /**
-                   * Format: uri
-                   * @description The enterprise's website URL.
-                   */
-                  website_url?: string | null;
-                  /**
-                   * @description Unique identifier of the enterprise
-                   * @example 42
-                   */
-                  id: number;
-                  /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */
-                  node_id: string;
-                  /**
-                   * @description The name of the enterprise.
-                   * @example Octo Business
-                   */
-                  name: string;
-                  /**
-                   * @description The slug url identifier for the enterprise.
-                   * @example octo-business
-                   */
-                  slug: string;
-                  /**
-                   * Format: date-time
-                   * @example 2019-01-26T19:01:12Z
-                   */
-                  created_at: string | null;
-                  /**
-                   * Format: date-time
-                   * @example 2019-01-26T19:14:43Z
-                   */
-                  updated_at: string | null;
-                  /** Format: uri */
-                  avatar_url: string;
-                })
-              | null;
-            /**
-             * @description Describe whether all repositories have been selected or there's a selection involved
-             * @enum {string}
-             */
-            repository_selection: "all" | "selected";
-            /**
-             * Format: uri
-             * @example https://api.github.com/installations/1/access_tokens
-             */
-            access_tokens_url: string;
-            /**
-             * Format: uri
-             * @example https://api.github.com/installation/repositories
-             */
-            repositories_url: string;
-            /**
-             * Format: uri
-             * @example https://github.com/organizations/github/settings/installations/1
-             */
-            html_url: string;
-            /** @example 1 */
-            app_id: number;
-            /** @description The ID of the user or organization this token is being scoped to. */
-            target_id: number;
-            /** @example Organization */
-            target_type: string;
-            /**
-             * App Permissions
-             * @description The permissions granted to the user access token.
-             * @example {
-             *   "contents": "read",
-             *   "issues": "read",
-             *   "deployments": "write",
-             *   "single_file": "read"
-             * }
-             */
-            permissions: {
-              /**
-               * @description The level of permission to grant the access token for GitHub Actions workflows, workflow runs, and artifacts.
-               * @enum {string}
-               */
-              actions?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for repository creation, deletion, settings, teams, and collaborators creation.
-               * @enum {string}
-               */
-              administration?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for checks on code.
-               * @enum {string}
-               */
-              checks?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for repository contents, commits, branches, downloads, releases, and merges.
-               * @enum {string}
-               */
-              contents?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for deployments and deployment statuses.
-               * @enum {string}
-               */
-              deployments?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for managing repository environments.
-               * @enum {string}
-               */
-              environments?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for issues and related comments, assignees, labels, and milestones.
-               * @enum {string}
-               */
-              issues?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to search repositories, list collaborators, and access repository metadata.
-               * @enum {string}
-               */
-              metadata?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for packages published to GitHub Packages.
-               * @enum {string}
-               */
-              packages?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to retrieve Pages statuses, configuration, and builds, as well as create new builds.
-               * @enum {string}
-               */
-              pages?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for pull requests and related comments, assignees, labels, milestones, and merges.
-               * @enum {string}
-               */
-              pull_requests?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to manage the post-receive hooks for a repository.
-               * @enum {string}
-               */
-              repository_hooks?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to manage repository projects, columns, and cards.
-               * @enum {string}
-               */
-              repository_projects?: "read" | "write" | "admin";
-              /**
-               * @description The level of permission to grant the access token to view and manage secret scanning alerts.
-               * @enum {string}
-               */
-              secret_scanning_alerts?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to manage repository secrets.
-               * @enum {string}
-               */
-              secrets?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to view and manage security events like code scanning alerts.
-               * @enum {string}
-               */
-              security_events?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to manage just a single file.
-               * @enum {string}
-               */
-              single_file?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for commit statuses.
-               * @enum {string}
-               */
-              statuses?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to manage Dependabot alerts.
-               * @enum {string}
-               */
-              vulnerability_alerts?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to update GitHub Actions workflow files.
-               * @enum {string}
-               */
-              workflows?: "write";
-              /**
-               * @description The level of permission to grant the access token for organization teams and members.
-               * @enum {string}
-               */
-              members?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to manage access to an organization.
-               * @enum {string}
-               */
-              organization_administration?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for custom repository roles management. This property is in beta and is subject to change.
-               * @enum {string}
-               */
-              organization_custom_roles?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to view and manage announcement banners for an organization.
-               * @enum {string}
-               */
-              organization_announcement_banners?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to manage the post-receive hooks for an organization.
-               * @enum {string}
-               */
-              organization_hooks?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for viewing and managing fine-grained personal access token requests to an organization.
-               * @enum {string}
-               */
-              organization_personal_access_tokens?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for viewing and managing fine-grained personal access tokens that have been approved by an organization.
-               * @enum {string}
-               */
-              organization_personal_access_token_requests?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token for viewing an organization's plan.
-               * @enum {string}
-               */
-              organization_plan?: "read";
-              /**
-               * @description The level of permission to grant the access token to manage organization projects and projects beta (where available).
-               * @enum {string}
-               */
-              organization_projects?: "read" | "write" | "admin";
-              /**
-               * @description The level of permission to grant the access token for organization packages published to GitHub Packages.
-               * @enum {string}
-               */
-              organization_packages?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to manage organization secrets.
-               * @enum {string}
-               */
-              organization_secrets?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to view and manage GitHub Actions self-hosted runners available to an organization.
-               * @enum {string}
-               */
-              organization_self_hosted_runners?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to view and manage users blocked by the organization.
-               * @enum {string}
-               */
-              organization_user_blocking?: "read" | "write";
-              /**
-               * @description The level of permission to grant the access token to manage team discussions and related comments.
-               * @enum {string}
-               */
-              team_discussions?: "read" | "write";
-            };
-            events: string[];
-            /** Format: date-time */
-            created_at: string;
-            /** Format: date-time */
-            updated_at: string;
-            /** @example config.yaml */
-            single_file_name: string | null;
-            /** @example true */
-            has_multiple_single_files?: boolean;
-            /**
-             * @example [
-             *   "config.yml",
-             *   ".github/issue_TEMPLATE.md"
-             * ]
-             */
-            single_file_paths?: string[];
-            /** @example github-actions */
-            app_slug: string;
-            /**
-             * Simple User
-             * @description A GitHub user.
-             */
-            suspended_by: {
-              name?: string | null;
-              email?: string | null;
-              /** @example octocat */
-              login: string;
-              /** @example 1 */
-              id: number;
-              /** @example MDQ6VXNlcjE= */
-              node_id: string;
-              /**
-               * Format: uri
-               * @example https://github.com/images/error/octocat_happy.gif
-               */
-              avatar_url: string;
-              /** @example 41d064eb2195891e12d0413f63227ea7 */
-              gravatar_id: string | null;
-              /**
-               * Format: uri
-               * @example https://api.github.com/users/octocat
-               */
-              url: string;
-              /**
-               * Format: uri
-               * @example https://github.com/octocat
-               */
-              html_url: string;
-              /**
-               * Format: uri
-               * @example https://api.github.com/users/octocat/followers
-               */
-              followers_url: string;
-              /** @example https://api.github.com/users/octocat/following{/other_user} */
-              following_url: string;
-              /** @example https://api.github.com/users/octocat/gists{/gist_id} */
-              gists_url: string;
-              /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */
-              starred_url: string;
-              /**
-               * Format: uri
-               * @example https://api.github.com/users/octocat/subscriptions
-               */
-              subscriptions_url: string;
-              /**
-               * Format: uri
-               * @example https://api.github.com/users/octocat/orgs
-               */
-              organizations_url: string;
-              /**
-               * Format: uri
-               * @example https://api.github.com/users/octocat/repos
-               */
-              repos_url: string;
-              /** @example https://api.github.com/users/octocat/events{/privacy} */
-              events_url: string;
-              /**
-               * Format: uri
-               * @example https://api.github.com/users/octocat/received_events
-               */
-              received_events_url: string;
-              /** @example User */
-              type: string;
-              site_admin: boolean;
-              /** @example "2020-07-09T00:17:55Z" */
-              starred_at?: string;
-            } | null;
-            /** Format: date-time */
-            suspended_at: string | null;
-            /** @example "test_13f1e99741e3e004@d7e1eb0bc0a1ba12.com" */
-            contact_email?: string | null;
-          }[];
-        };
-      };
-    };
-  };
-  /**
-   * Get an installation for the authenticated app
-   * @description Enables an authenticated GitHub App to find an installation's information using the installation id.
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/get-installation": {
-    parameters: {
-      path: {
-        installation_id: components["parameters"]["installation-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["installation"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete an installation for the authenticated app
-   * @description Uninstalls a GitHub App on a user, organization, or business account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/rest/apps/apps#suspend-an-app-installation)" endpoint.
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/delete-installation": {
-    parameters: {
-      path: {
-        installation_id: components["parameters"]["installation-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create an installation access token for an app
-   * @description Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access. To restrict the access to specific repositories, you can provide the `repository_ids` when creating the token. When you omit `repository_ids`, the response does not contain the `repositories` key.
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/create-installation-access-token": {
-    parameters: {
-      path: {
-        installation_id: components["parameters"]["installation-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description List of repository names that the token should have access to */
-          repositories?: string[];
-          /**
-           * @description List of repository IDs that the token should have access to
-           * @example [
-           *   1
-           * ]
-           */
-          repository_ids?: number[];
-          permissions?: components["schemas"]["app-permissions"];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["installation-token"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Suspend an app installation
-   * @description Suspends a GitHub App on a user, organization, or business account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account.
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/suspend-installation": {
-    parameters: {
-      path: {
-        installation_id: components["parameters"]["installation-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Unsuspend an app installation
-   * @description Removes a GitHub App installation suspension.
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/unsuspend-installation": {
-    parameters: {
-      path: {
-        installation_id: components["parameters"]["installation-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete an app authorization
-   * @description OAuth and GitHub application owners can revoke a grant for their application and a specific user. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted.
-   * Deleting an application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized).
-   */
-  "apps/delete-authorization": {
-    parameters: {
-      path: {
-        client_id: components["parameters"]["client-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The OAuth access token used to authenticate to the GitHub API. */
-          access_token: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Check a token
-   * @description OAuth applications and GitHub applications with OAuth authorizations can use this API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to use this endpoint, where the username is the application `client_id` and the password is its `client_secret`. Invalid tokens will return `404 NOT FOUND`.
-   */
-  "apps/check-token": {
-    parameters: {
-      path: {
-        client_id: components["parameters"]["client-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The access_token of the OAuth or GitHub application. */
-          access_token: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["authorization"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Delete an app token
-   * @description OAuth  or GitHub application owners can revoke a single token for an OAuth application or a GitHub application with an OAuth authorization. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the application's `client_id` and `client_secret` as the username and password.
-   */
-  "apps/delete-token": {
-    parameters: {
-      path: {
-        client_id: components["parameters"]["client-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The OAuth access token used to authenticate to the GitHub API. */
-          access_token: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Reset a token
-   * @description OAuth applications and GitHub applications with OAuth authorizations can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
-   */
-  "apps/reset-token": {
-    parameters: {
-      path: {
-        client_id: components["parameters"]["client-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The access_token of the OAuth or GitHub application. */
-          access_token: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["authorization"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Create a scoped access token
-   * @description Use a non-scoped user access token to create a repository scoped and/or permission scoped user access token. You can specify which repositories the token can access and which permissions are granted to the token. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the `client_id` and `client_secret` of the GitHub App as the username and password. Invalid tokens will return `404 NOT FOUND`.
-   */
-  "apps/scope-token": {
-    parameters: {
-      path: {
-        client_id: components["parameters"]["client-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The access token used to authenticate to the GitHub API.
-           * @example e72e16c7e42f292c6912e7710c838347ae178b4a
-           */
-          access_token: string;
-          /**
-           * @description The name of the user or organization to scope the user access token to. **Required** unless `target_id` is specified.
-           * @example octocat
-           */
-          target?: string;
-          /**
-           * @description The ID of the user or organization to scope the user access token to. **Required** unless `target` is specified.
-           * @example 1
-           */
-          target_id?: number;
-          /** @description The list of repository names to scope the user access token to. `repositories` may not be specified if `repository_ids` is specified. */
-          repositories?: string[];
-          /**
-           * @description The list of repository IDs to scope the user access token to. `repository_ids` may not be specified if `repositories` is specified.
-           * @example [
-           *   1
-           * ]
-           */
-          repository_ids?: number[];
-          permissions?: components["schemas"]["app-permissions"];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["authorization"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get an app
-   * @description **Note**: The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`).
-   *
-   * If the GitHub App you specify is public, you can access this endpoint without authenticating. If the GitHub App you specify is private, you must authenticate with a [personal access token](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
-   */
-  "apps/get-by-slug": {
-    parameters: {
-      path: {
-        app_slug: components["parameters"]["app-slug"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["integration"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get an assignment
-   * @description Gets a GitHub Classroom assignment. Assignment will only be returned if the current user is an administrator of the GitHub Classroom for the assignment.
-   */
-  "classroom/get-an-assignment": {
-    parameters: {
-      path: {
-        assignment_id: components["parameters"]["assignment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["classroom-assignment"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List accepted assignments for an assignment
-   * @description Lists any assignment repositories that have been created by students accepting a GitHub Classroom assignment. Accepted assignments will only be returned if the current user is an administrator of the GitHub Classroom for the assignment.
-   */
-  "classroom/list-accepted-assigments-for-an-assignment": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        assignment_id: components["parameters"]["assignment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["classroom-accepted-assignment"][];
-        };
-      };
-    };
-  };
-  /**
-   * Get assignment grades
-   * @description Gets grades for a GitHub Classroom assignment. Grades will only be returned if the current user is an administrator of the GitHub Classroom for the assignment.
-   */
-  "classroom/get-assignment-grades": {
-    parameters: {
-      path: {
-        assignment_id: components["parameters"]["assignment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["classroom-assignment-grade"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List classrooms
-   * @description Lists GitHub Classroom classrooms for the current user. Classrooms will only be returned if the current user is an administrator of one or more GitHub Classrooms.
-   */
-  "classroom/list-classrooms": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["simple-classroom"][];
-        };
-      };
-    };
-  };
-  /**
-   * Get a classroom
-   * @description Gets a GitHub Classroom classroom for the current user. Classroom will only be returned if the current user is an administrator of the GitHub Classroom.
-   */
-  "classroom/get-a-classroom": {
-    parameters: {
-      path: {
-        classroom_id: components["parameters"]["classroom-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["classroom"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List assignments for a classroom
-   * @description Lists GitHub Classroom assignments for a classroom. Assignments will only be returned if the current user is an administrator of the GitHub Classroom.
-   */
-  "classroom/list-assignments-for-a-classroom": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        classroom_id: components["parameters"]["classroom-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["simple-classroom-assignment"][];
-        };
-      };
-    };
-  };
-  /**
-   * Get all codes of conduct
-   * @description Returns array of all GitHub's codes of conduct.
-   */
-  "codes-of-conduct/get-all-codes-of-conduct": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-of-conduct"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-    };
-  };
-  /**
-   * Get a code of conduct
-   * @description Returns information about the specified GitHub code of conduct.
-   */
-  "codes-of-conduct/get-conduct-code": {
-    parameters: {
-      path: {
-        key: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-of-conduct"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get emojis
-   * @description Lists all the emojis available to use on GitHub.
-   */
-  "emojis/get": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            [key: string]: string;
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-    };
-  };
-  /**
-   * List Dependabot alerts for an enterprise
-   * @description Lists Dependabot alerts for repositories that are owned by the specified enterprise.
-   * To use this endpoint, you must be a member of the enterprise, and you must use an
-   * access token with the `repo` scope or `security_events` scope.
-   * Alerts are only returned for organizations in the enterprise for which you are an organization owner or a security manager. For more information about security managers, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-   */
-  "dependabot/list-alerts-for-enterprise": {
-    parameters: {
-      query?: {
-        state?: components["parameters"]["dependabot-alert-comma-separated-states"];
-        severity?: components["parameters"]["dependabot-alert-comma-separated-severities"];
-        ecosystem?: components["parameters"]["dependabot-alert-comma-separated-ecosystems"];
-        package?: components["parameters"]["dependabot-alert-comma-separated-packages"];
-        scope?: components["parameters"]["dependabot-alert-scope"];
-        sort?: components["parameters"]["dependabot-alert-sort"];
-        direction?: components["parameters"]["direction"];
-        before?: components["parameters"]["pagination-before"];
-        after?: components["parameters"]["pagination-after"];
-        first?: components["parameters"]["pagination-first"];
-        last?: components["parameters"]["pagination-last"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        enterprise: components["parameters"]["enterprise"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["dependabot-alert-with-repository"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * List secret scanning alerts for an enterprise
-   * @description Lists secret scanning alerts for eligible repositories in an enterprise, from newest to oldest.
-   * To use this endpoint, you must be a member of the enterprise, and you must use an access token with the `repo` scope or `security_events` scope. Alerts are only returned for organizations in the enterprise for which you are an organization owner or a [security manager](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization).
-   */
-  "secret-scanning/list-alerts-for-enterprise": {
-    parameters: {
-      query?: {
-        state?: components["parameters"]["secret-scanning-alert-state"];
-        secret_type?: components["parameters"]["secret-scanning-alert-secret-type"];
-        resolution?: components["parameters"]["secret-scanning-alert-resolution"];
-        sort?: components["parameters"]["secret-scanning-alert-sort"];
-        direction?: components["parameters"]["direction"];
-        per_page?: components["parameters"]["per-page"];
-        before?: components["parameters"]["pagination-before"];
-        after?: components["parameters"]["pagination-after"];
-        validity?: components["parameters"]["secret-scanning-alert-validity"];
-      };
-      path: {
-        enterprise: components["parameters"]["enterprise"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["organization-secret-scanning-alert"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List public events
-   * @description We delay the public events feed by five minutes, which means the most recent event returned by the public events API actually occurred at least five minutes ago.
-   */
-  "activity/list-public-events": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["event"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Get feeds
-   * @description GitHub provides several timeline resources in [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) format. The Feeds API lists all the feeds available to the authenticated user:
-   *
-   * *   **Timeline**: The GitHub global public timeline
-   * *   **User**: The public timeline for any user, using [URI template](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia)
-   * *   **Current user public**: The public timeline for the authenticated user
-   * *   **Current user**: The private timeline for the authenticated user
-   * *   **Current user actor**: The private timeline for activity created by the authenticated user
-   * *   **Current user organizations**: The private timeline for the organizations the authenticated user is a member of.
-   * *   **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub.
-   *
-   * **Note**: Private feeds are only returned when [authenticating via Basic Auth](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) since current feed URIs use the older, non revocable auth tokens.
-   */
-  "activity/get-feeds": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["feed"];
-        };
-      };
-    };
-  };
-  /**
-   * List gists for the authenticated user
-   * @description Lists the authenticated user's gists or if called anonymously, this endpoint returns all public gists:
-   */
-  "gists/list": {
-    parameters: {
-      query?: {
-        since?: components["parameters"]["since"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["base-gist"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Create a gist
-   * @description Allows you to add a new gist with one or more files.
-   *
-   * **Note:** Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally.
-   */
-  "gists/create": {
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Description of the gist
-           * @example Example Ruby script
-           */
-          description?: string;
-          /**
-           * @description Names and content for the files that make up the gist
-           * @example {
-           *   "hello.rb": {
-           *     "content": "puts \"Hello, World!\""
-           *   }
-           * }
-           */
-          files: {
-            [key: string]: {
-              /** @description Content of the file */
-              content: string;
-            };
-          };
-          public?: boolean | ("true" | "false");
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/gists/aa5a315d61ae9438b18d */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["gist-simple"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List public gists
-   * @description List public gists sorted by most recently updated to least recently updated.
-   *
-   * Note: With [pagination](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page.
-   */
-  "gists/list-public": {
-    parameters: {
-      query?: {
-        since?: components["parameters"]["since"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["base-gist"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List starred gists
-   * @description List the authenticated user's starred gists:
-   */
-  "gists/list-starred": {
-    parameters: {
-      query?: {
-        since?: components["parameters"]["since"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["base-gist"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /** Get a gist */
-  "gists/get": {
-    parameters: {
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["gist-simple"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden_gist"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Delete a gist */
-  "gists/delete": {
-    parameters: {
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update a gist
-   * @description Allows you to update a gist's description and to update, delete, or rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged.
-   */
-  "gists/update": {
-    parameters: {
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The description of the gist.
-           * @example Example Ruby script
-           */
-          description?: string;
-          /**
-           * @description The gist files to be updated, renamed, or deleted. Each `key` must match the current filename
-           * (including extension) of the targeted gist file. For example: `hello.py`.
-           *
-           * To delete a file, set the whole file to null. For example: `hello.py : null`.
-           * @example {
-           *   "hello.rb": {
-           *     "content": "blah",
-           *     "filename": "goodbye.rb"
-           *   }
-           * }
-           */
-          files?: {
-            [key: string]: {
-              /** @description The new content of the file. */
-              content?: string;
-              /** @description The new filename for the file. */
-              filename?: string | null;
-            };
-          };
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["gist-simple"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /** List gist comments */
-  "gists/list-comments": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["gist-comment"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Create a gist comment */
-  "gists/create-comment": {
-    parameters: {
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The comment text.
-           * @example Body of the attachment
-           */
-          body: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/gists/a6db0bec360bb87e9418/comments/1 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["gist-comment"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Get a gist comment */
-  "gists/get-comment": {
-    parameters: {
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["gist-comment"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden_gist"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Delete a gist comment */
-  "gists/delete-comment": {
-    parameters: {
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Update a gist comment */
-  "gists/update-comment": {
-    parameters: {
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The comment text.
-           * @example Body of the attachment
-           */
-          body: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["gist-comment"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** List gist commits */
-  "gists/list-commits": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          /** @example <https://api.github.com/resource?page=2>; rel="next" */
-          Link?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["gist-commit"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** List gist forks */
-  "gists/list-forks": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["gist-simple"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Fork a gist */
-  "gists/fork": {
-    parameters: {
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/gists/aa5a315d61ae9438b18d */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["base-gist"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /** Check if a gist is starred */
-  "gists/check-is-starred": {
-    parameters: {
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-      };
-    };
-    responses: {
-      /** @description Response if gist is starred */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      /** @description Not Found if gist is not starred */
-      404: {
-        content: {
-          "application/json": Record<string, never>;
-        };
-      };
-    };
-  };
-  /**
-   * Star a gist
-   * @description Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-   */
-  "gists/star": {
-    parameters: {
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Unstar a gist */
-  "gists/unstar": {
-    parameters: {
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Get a gist revision */
-  "gists/get-revision": {
-    parameters: {
-      path: {
-        gist_id: components["parameters"]["gist-id"];
-        sha: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["gist-simple"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get all gitignore templates
-   * @description List all templates available to pass as an option when [creating a repository](https://docs.github.com/rest/repos/repos#create-a-repository-for-the-authenticated-user).
-   */
-  "gitignore/get-all-templates": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": string[];
-        };
-      };
-      304: components["responses"]["not_modified"];
-    };
-  };
-  /**
-   * Get a gitignore template
-   * @description The API also allows fetching the source of a single template.
-   * Use the raw [media type](https://docs.github.com/rest/overview/media-types/) to get the raw contents.
-   */
-  "gitignore/get-template": {
-    parameters: {
-      path: {
-        name: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["gitignore-template"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-    };
-  };
-  /**
-   * List repositories accessible to the app installation
-   * @description List repositories that an app installation can access.
-   *
-   * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
-   */
-  "apps/list-repos-accessible-to-installation": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            repositories: components["schemas"]["repository"][];
-            /** @example selected */
-            repository_selection?: string;
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Revoke an installation access token
-   * @description Revokes the installation token you're using to authenticate as an installation and access this endpoint.
-   *
-   * Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the "[Create an installation access token for an app](https://docs.github.com/rest/apps/apps#create-an-installation-access-token-for-an-app)" endpoint.
-   *
-   * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
-   */
-  "apps/revoke-installation-access-token": {
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List issues assigned to the authenticated user
-   * @description List issues assigned to the authenticated user across all visible repositories including owned repositories, member
-   * repositories, and organization repositories. You can use the `filter` query parameter to fetch issues that are not
-   * necessarily assigned to you.
-   *
-   *
-   * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-   * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-   * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-   * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-   */
-  "issues/list": {
-    parameters: {
-      query?: {
-        /** @description Indicates which sorts of issues to return. `assigned` means issues assigned to you. `created` means issues created by you. `mentioned` means issues mentioning you. `subscribed` means issues you're subscribed to updates for. `all` or `repos` means all issues you can see, regardless of participation or creation. */
-        filter?:
-          | "assigned"
-          | "created"
-          | "mentioned"
-          | "subscribed"
-          | "repos"
-          | "all";
-        /** @description Indicates the state of the issues to return. */
-        state?: "open" | "closed" | "all";
-        labels?: components["parameters"]["labels"];
-        /** @description What to sort results by. */
-        sort?: "created" | "updated" | "comments";
-        direction?: components["parameters"]["direction"];
-        since?: components["parameters"]["since"];
-        collab?: boolean;
-        orgs?: boolean;
-        owned?: boolean;
-        pulls?: boolean;
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["issue"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get all commonly used licenses
-   * @description Lists the most commonly used licenses on GitHub. For more information, see "[Licensing a repository ](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)."
-   */
-  "licenses/get-all-commonly-used": {
-    parameters: {
-      query?: {
-        featured?: boolean;
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["license-simple"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-    };
-  };
-  /**
-   * Get a license
-   * @description Gets information about a specific license. For more information, see "[Licensing a repository ](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)."
-   */
-  "licenses/get": {
-    parameters: {
-      path: {
-        license: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["license"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Render a Markdown document */
-  "markdown/render": {
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The Markdown text to render in HTML. */
-          text: string;
-          /**
-           * @description The rendering mode.
-           * @default markdown
-           * @example markdown
-           * @enum {string}
-           */
-          mode?: "markdown" | "gfm";
-          /** @description The repository context to use when creating references in `gfm` mode.  For example, setting `context` to `octo-org/octo-repo` will change the text `#42` into an HTML link to issue 42 in the `octo-org/octo-repo` repository. */
-          context?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          "Content-Type": components["headers"]["content-type"];
-          /** @example 279 */
-          "Content-Length"?: string;
-          "X-CommonMarker-Version": components["headers"]["x-common-marker-version"];
-        };
-        content: {
-          "text/html": string;
-        };
-      };
-      304: components["responses"]["not_modified"];
-    };
-  };
-  /**
-   * Render a Markdown document in raw mode
-   * @description You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less.
-   */
-  "markdown/render-raw": {
-    requestBody?: {
-      content: {
-        "text/plain": string;
-        "text/x-markdown": string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          "X-CommonMarker-Version": components["headers"]["x-common-marker-version"];
-        };
-        content: {
-          "text/html": string;
-        };
-      };
-      304: components["responses"]["not_modified"];
-    };
-  };
-  /**
-   * Get a subscription plan for an account
-   * @description Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
-   *
-   * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-   */
-  "apps/get-subscription-plan-for-account": {
-    parameters: {
-      path: {
-        account_id: components["parameters"]["account-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["marketplace-purchase"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      /** @description Not Found when the account has not purchased the listing */
-      404: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-    };
-  };
-  /**
-   * List plans
-   * @description Lists all plans that are part of your GitHub Marketplace listing.
-   *
-   * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-   */
-  "apps/list-plans": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["marketplace-listing-plan"][];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List accounts for a plan
-   * @description Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
-   *
-   * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-   */
-  "apps/list-accounts-for-plan": {
-    parameters: {
-      query?: {
-        sort?: components["parameters"]["sort"];
-        /** @description To return the oldest accounts first, set to `asc`. Ignored without the `sort` parameter. */
-        direction?: "asc" | "desc";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        plan_id: components["parameters"]["plan-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["marketplace-purchase"][];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a subscription plan for an account (stubbed)
-   * @description Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
-   *
-   * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-   */
-  "apps/get-subscription-plan-for-account-stubbed": {
-    parameters: {
-      path: {
-        account_id: components["parameters"]["account-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["marketplace-purchase"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      /** @description Not Found when the account has not purchased the listing */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List plans (stubbed)
-   * @description Lists all plans that are part of your GitHub Marketplace listing.
-   *
-   * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-   */
-  "apps/list-plans-stubbed": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["marketplace-listing-plan"][];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-    };
-  };
-  /**
-   * List accounts for a plan (stubbed)
-   * @description Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
-   *
-   * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-   */
-  "apps/list-accounts-for-plan-stubbed": {
-    parameters: {
-      query?: {
-        sort?: components["parameters"]["sort"];
-        /** @description To return the oldest accounts first, set to `asc`. Ignored without the `sort` parameter. */
-        direction?: "asc" | "desc";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        plan_id: components["parameters"]["plan-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["marketplace-purchase"][];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-    };
-  };
-  /**
-   * Get GitHub meta information
-   * @description Returns meta information about GitHub, including a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://docs.github.com/articles/about-github-s-ip-addresses/)."
-   *
-   * The API's response also includes a list of GitHub's domain names.
-   *
-   * The values shown in the documentation's response are example values. You must always query the API directly to get the latest values.
-   *
-   * **Note:** This endpoint returns both IPv4 and IPv6 addresses. However, not all features support IPv6. You should refer to the specific documentation for each feature to determine if IPv6 is supported.
-   */
-  "meta/get": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["api-overview"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-    };
-  };
-  /** List public events for a network of repositories */
-  "activity/list-public-events-for-repo-network": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["event"][];
-        };
-      };
-      301: components["responses"]["moved_permanently"];
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List notifications for the authenticated user
-   * @description List all notifications for the current user, sorted by most recently updated.
-   */
-  "activity/list-notifications-for-authenticated-user": {
-    parameters: {
-      query?: {
-        all?: components["parameters"]["all"];
-        participating?: components["parameters"]["participating"];
-        since?: components["parameters"]["since"];
-        before?: components["parameters"]["before"];
-        page?: components["parameters"]["page"];
-        /** @description The number of results per page (max 50). */
-        per_page?: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["thread"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Mark notifications as read
-   * @description Marks all notifications as "read" for the current user. If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List notifications for the authenticated user](https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`.
-   */
-  "activity/mark-notifications-as-read": {
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * Format: date-time
-           * @description Describes the last point that notifications were checked. Anything updated since this time will not be marked as read. If you omit this parameter, all notifications are marked as read. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp.
-           */
-          last_read_at?: string;
-          /** @description Whether the notification has been read. */
-          read?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      202: {
-        content: {
-          "application/json": {
-            message?: string;
-          };
-        };
-      };
-      /** @description Reset Content */
-      205: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Get a thread
-   * @description Gets information about a notification thread.
-   */
-  "activity/get-thread": {
-    parameters: {
-      path: {
-        thread_id: components["parameters"]["thread-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["thread"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Mark a thread as read
-   * @description Marks a thread as "read." Marking a thread as "read" is equivalent to clicking a notification in your notification inbox on GitHub: https://github.com/notifications.
-   */
-  "activity/mark-thread-as-read": {
-    parameters: {
-      path: {
-        thread_id: components["parameters"]["thread-id"];
-      };
-    };
-    responses: {
-      /** @description Reset Content */
-      205: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Get a thread subscription for the authenticated user
-   * @description This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/rest/activity/watching#get-a-repository-subscription).
-   *
-   * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread.
-   */
-  "activity/get-thread-subscription-for-authenticated-user": {
-    parameters: {
-      path: {
-        thread_id: components["parameters"]["thread-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["thread-subscription"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Set a thread subscription
-   * @description If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**.
-   *
-   * You can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored.
-   *
-   * Unsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/rest/activity/notifications#delete-a-thread-subscription) endpoint.
-   */
-  "activity/set-thread-subscription": {
-    parameters: {
-      path: {
-        thread_id: components["parameters"]["thread-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description Whether to block all notifications from a thread.
-           * @default false
-           */
-          ignored?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["thread-subscription"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Delete a thread subscription
-   * @description Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/rest/activity/notifications#set-a-thread-subscription) endpoint and set `ignore` to `true`.
-   */
-  "activity/delete-thread-subscription": {
-    parameters: {
-      path: {
-        thread_id: components["parameters"]["thread-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Get Octocat
-   * @description Get the octocat as ASCII art
-   */
-  "meta/get-octocat": {
-    parameters: {
-      query?: {
-        /** @description The words to show in Octocat's speech bubble */
-        s?: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/octocat-stream": string;
-        };
-      };
-    };
-  };
-  /**
-   * List organizations
-   * @description Lists all organizations, in the order that they were created on GitHub.
-   *
-   * **Note:** Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of organizations.
-   */
-  "orgs/list": {
-    parameters: {
-      query?: {
-        since?: components["parameters"]["since-org"];
-        per_page?: components["parameters"]["per-page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          /** @example <https://api.github.com/organizations?since=135>; rel="next" */
-          Link?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["organization-simple"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-    };
-  };
-  /**
-   * Get an organization
-   * @description To see many of the organization response values, you need to be an authenticated organization owner with the `admin:org` scope. When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, and outside collaborators to enable [two-factor authentication](https://docs.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/).
-   *
-   * GitHub Apps with the `Organization plan` permission can use this endpoint to retrieve information about an organization's GitHub plan. See "[Authenticating with GitHub Apps](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/)" for details. For an example response, see 'Response with GitHub plan information' below."
-   */
-  "orgs/get": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["organization-full"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete an organization
-   * @description Deletes an organization and all its repositories.
-   *
-   * The organization login will be unavailable for 90 days after deletion.
-   *
-   * Please review the Terms of Service regarding account deletion before using this endpoint:
-   *
-   * https://docs.github.com/site-policy/github-terms/github-terms-of-service
-   */
-  "orgs/delete": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      202: components["responses"]["accepted"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update an organization
-   * @description **Parameter Deprecation Notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. The new input parameters are `members_can_create_public_repositories`, `members_can_create_private_repositories` for all organizations and `members_can_create_internal_repositories` for organizations associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes).
-   *
-   * Enables an authenticated organization owner with the `admin:org` scope or the `repo` scope to update the organization's profile and member privileges.
-   */
-  "orgs/update": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description Billing email address. This address is not publicized. */
-          billing_email?: string;
-          /** @description The company name. */
-          company?: string;
-          /** @description The publicly visible email address. */
-          email?: string;
-          /** @description The Twitter username of the company. */
-          twitter_username?: string;
-          /** @description The location. */
-          location?: string;
-          /** @description The shorthand name of the company. */
-          name?: string;
-          /** @description The description of the company. */
-          description?: string;
-          /** @description Whether an organization can use organization projects. */
-          has_organization_projects?: boolean;
-          /** @description Whether repositories that belong to the organization can use repository projects. */
-          has_repository_projects?: boolean;
-          /**
-           * @description Default permission level members have for organization repositories.
-           * @default read
-           * @enum {string}
-           */
-          default_repository_permission?: "read" | "write" | "admin" | "none";
-          /**
-           * @description Whether of non-admin organization members can create repositories. **Note:** A parameter can override this parameter. See `members_allowed_repository_creation_type` in this table for details.
-           * @default true
-           */
-          members_can_create_repositories?: boolean;
-          /** @description Whether organization members can create internal repositories, which are visible to all enterprise members. You can only allow members to create internal repositories if your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see "[Restricting repository creation in your organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)" in the GitHub Help documentation. */
-          members_can_create_internal_repositories?: boolean;
-          /** @description Whether organization members can create private repositories, which are visible to organization members with permission. For more information, see "[Restricting repository creation in your organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)" in the GitHub Help documentation. */
-          members_can_create_private_repositories?: boolean;
-          /** @description Whether organization members can create public repositories, which are visible to anyone. For more information, see "[Restricting repository creation in your organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)" in the GitHub Help documentation. */
-          members_can_create_public_repositories?: boolean;
-          /**
-           * @description Specifies which types of repositories non-admin organization members can create. `private` is only available to repositories that are part of an organization on GitHub Enterprise Cloud.
-           * **Note:** This parameter is deprecated and will be removed in the future. Its return value ignores internal repositories. Using this parameter overrides values set in `members_can_create_repositories`. See the parameter deprecation notice in the operation description for details.
-           * @enum {string}
-           */
-          members_allowed_repository_creation_type?: "all" | "private" | "none";
-          /**
-           * @description Whether organization members can create GitHub Pages sites. Existing published sites will not be impacted.
-           * @default true
-           */
-          members_can_create_pages?: boolean;
-          /**
-           * @description Whether organization members can create public GitHub Pages sites. Existing published sites will not be impacted.
-           * @default true
-           */
-          members_can_create_public_pages?: boolean;
-          /**
-           * @description Whether organization members can create private GitHub Pages sites. Existing published sites will not be impacted.
-           * @default true
-           */
-          members_can_create_private_pages?: boolean;
-          /**
-           * @description Whether organization members can fork private organization repositories.
-           * @default false
-           */
-          members_can_fork_private_repositories?: boolean;
-          /**
-           * @description Whether contributors to organization repositories are required to sign off on commits they make through GitHub's web interface.
-           * @default false
-           */
-          web_commit_signoff_required?: boolean;
-          /** @example "http://github.blog" */
-          blog?: string;
-          /**
-           * @description Whether GitHub Advanced Security is automatically enabled for new repositories.
-           *
-           * To use this parameter, 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-           *
-           * You can check which security and analysis features are currently enabled by using a `GET /orgs/{org}` request.
-           */
-          advanced_security_enabled_for_new_repositories?: boolean;
-          /**
-           * @description Whether Dependabot alerts is automatically enabled for new repositories.
-           *
-           * To use this parameter, 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-           *
-           * You can check which security and analysis features are currently enabled by using a `GET /orgs/{org}` request.
-           */
-          dependabot_alerts_enabled_for_new_repositories?: boolean;
-          /**
-           * @description Whether Dependabot security updates is automatically enabled for new repositories.
-           *
-           * To use this parameter, 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-           *
-           * You can check which security and analysis features are currently enabled by using a `GET /orgs/{org}` request.
-           */
-          dependabot_security_updates_enabled_for_new_repositories?: boolean;
-          /**
-           * @description Whether dependency graph is automatically enabled for new repositories.
-           *
-           * To use this parameter, 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-           *
-           * You can check which security and analysis features are currently enabled by using a `GET /orgs/{org}` request.
-           */
-          dependency_graph_enabled_for_new_repositories?: boolean;
-          /**
-           * @description Whether secret scanning is automatically enabled for new repositories.
-           *
-           * To use this parameter, 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-           *
-           * You can check which security and analysis features are currently enabled by using a `GET /orgs/{org}` request.
-           */
-          secret_scanning_enabled_for_new_repositories?: boolean;
-          /**
-           * @description Whether secret scanning push protection is automatically enabled for new repositories.
-           *
-           * To use this parameter, 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-           *
-           * You can check which security and analysis features are currently enabled by using a `GET /orgs/{org}` request.
-           */
-          secret_scanning_push_protection_enabled_for_new_repositories?: boolean;
-          /** @description Whether a custom link is shown to contributors who are blocked from pushing a secret by push protection. */
-          secret_scanning_push_protection_custom_link_enabled?: boolean;
-          /** @description If `secret_scanning_push_protection_custom_link_enabled` is true, the URL that will be displayed to contributors who are blocked from pushing a secret. */
-          secret_scanning_push_protection_custom_link?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["organization-full"];
-        };
-      };
-      409: components["responses"]["conflict"];
-      /** @description Validation failed */
-      422: {
-        content: {
-          "application/json":
-            | components["schemas"]["validation-error"]
-            | components["schemas"]["validation-error-simple"];
-        };
-      };
-    };
-  };
-  /**
-   * Get GitHub Actions cache usage for an organization
-   * @description Gets the total GitHub Actions cache usage for an organization.
-   * The 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.
-   * You must authenticate using an access token with the `read:org` scope to use this endpoint. GitHub Apps must have the `organization_admistration:read` permission to use this endpoint.
-   */
-  "actions/get-actions-cache-usage-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["actions-cache-usage-org-enterprise"];
-        };
-      };
-    };
-  };
-  /**
-   * List repositories with GitHub Actions cache usage for an organization
-   * @description Lists repositories and their GitHub Actions cache usage for an organization.
-   * The 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.
-   * You must authenticate using an access token with the `read:org` scope to use this endpoint. GitHub Apps must have the `organization_admistration:read` permission to use this endpoint.
-   */
-  "actions/get-actions-cache-usage-by-repo-for-org": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            repository_cache_usages: components["schemas"]["actions-cache-usage-by-repository"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get the customization template for an OIDC subject claim for an organization
-   * @description Gets the customization template for an OpenID Connect (OIDC) subject claim.
-   * You must authenticate using an access token with the `read:org` scope to use this endpoint.
-   * GitHub Apps must have the `organization_administration:write` permission to use this endpoint.
-   */
-  "oidc/get-oidc-custom-sub-template-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description A JSON serialized template for OIDC subject claim customization */
-      200: {
-        content: {
-          "application/json": components["schemas"]["oidc-custom-sub"];
-        };
-      };
-    };
-  };
-  /**
-   * Set the customization template for an OIDC subject claim for an organization
-   * @description Creates or updates the customization template for an OpenID Connect (OIDC) subject claim.
-   * You must authenticate using an access token with the `write:org` scope to use this endpoint.
-   * GitHub Apps must have the `admin:org` permission to use this endpoint.
-   */
-  "oidc/update-oidc-custom-sub-template-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["oidc-custom-sub"];
-      };
-    };
-    responses: {
-      /** @description Empty response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get GitHub Actions permissions for an organization
-   * @description Gets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-   */
-  "actions/get-github-actions-permissions-organization": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-organization-permissions"];
-        };
-      };
-    };
-  };
-  /**
-   * Set GitHub Actions permissions for an organization
-   * @description Sets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-   */
-  "actions/set-github-actions-permissions-organization": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          enabled_repositories: components["schemas"]["enabled-repositories"];
-          allowed_actions?: components["schemas"]["allowed-actions"];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List selected repositories enabled for GitHub Actions in an organization
-   * @description Lists the 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](#set-github-actions-permissions-for-an-organization)."
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-   */
-  "actions/list-selected-repositories-enabled-github-actions-organization": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            repositories: components["schemas"]["repository"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Set selected repositories enabled for GitHub Actions in an organization
-   * @description Replaces 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](#set-github-actions-permissions-for-an-organization)."
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-   */
-  "actions/set-selected-repositories-enabled-github-actions-organization": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description List of repository IDs to enable for GitHub Actions. */
-          selected_repository_ids: number[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Enable a selected repository for GitHub Actions in an organization
-   * @description 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](#set-github-actions-permissions-for-an-organization)."
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-   */
-  "actions/enable-selected-repository-github-actions-organization": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        repository_id: components["parameters"]["repository-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Disable a selected repository for GitHub Actions in an organization
-   * @description 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](#set-github-actions-permissions-for-an-organization)."
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-   */
-  "actions/disable-selected-repository-github-actions-organization": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        repository_id: components["parameters"]["repository-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get allowed actions and reusable workflows for an organization
-   * @description Gets the selected actions and reusable workflows 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](#set-github-actions-permissions-for-an-organization).""
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-   */
-  "actions/get-allowed-actions-organization": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["selected-actions"];
-        };
-      };
-    };
-  };
-  /**
-   * Set allowed actions and reusable workflows for an organization
-   * @description Sets the actions and reusable workflows 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](#set-github-actions-permissions-for-an-organization)."
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-   */
-  "actions/set-allowed-actions-organization": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": components["schemas"]["selected-actions"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get default workflow permissions for an organization
-   * @description Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization,
-   * as well as whether GitHub Actions can submit approving pull request reviews. For more information, see
-   * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)."
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-   */
-  "actions/get-github-actions-default-workflow-permissions-organization": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-get-default-workflow-permissions"];
-        };
-      };
-    };
-  };
-  /**
-   * Set default workflow permissions for an organization
-   * @description Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, and sets if GitHub Actions
-   * can submit approving pull request reviews. For more information, see
-   * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)."
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-   */
-  "actions/set-github-actions-default-workflow-permissions-organization": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": components["schemas"]["actions-set-default-workflow-permissions"];
-      };
-    };
-    responses: {
-      /** @description Success response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List self-hosted runners for an organization
-   * @description Lists all self-hosted runners configured in an organization.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/list-self-hosted-runners-for-org": {
-    parameters: {
-      query?: {
-        /** @description The name of a self-hosted runner. */
-        name?: string;
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            runners: components["schemas"]["runner"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * List runner applications for an organization
-   * @description Lists binaries for the runner application that you can download and run.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/list-runner-applications-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["runner-application"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create configuration for a just-in-time runner for an organization
-   * @description Generates a configuration that can be passed to the runner application at startup.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/generate-runner-jitconfig-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the new runner. */
-          name: string;
-          /** @description The ID of the runner group to register the runner to. */
-          runner_group_id: number;
-          /** @description The names of the custom labels to add to the runner. **Minimum items**: 1. **Maximum items**: 100. */
-          labels: string[];
-          /**
-           * @description The working directory to be used for job execution, relative to the runner install directory.
-           * @default _work
-           */
-          work_folder?: string;
-        };
-      };
-    };
-    responses: {
-      201: components["responses"]["actions_runner_jitconfig"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Create a registration token for an organization
-   * @description Returns a token that you can pass to the `config` script. The token expires after one hour.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   *
-   * Example using registration token:
-   *
-   * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint.
-   *
-   * ```
-   * ./config.sh --url https://github.com/octo-org --token TOKEN
-   * ```
-   */
-  "actions/create-registration-token-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["authentication-token"];
-        };
-      };
-    };
-  };
-  /**
-   * Create a remove token for an organization
-   * @description 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.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   *
-   * Example using remove token:
-   *
-   * To remove your self-hosted runner from an organization, replace `TOKEN` with the remove token provided by this
-   * endpoint.
-   *
-   * ```
-   * ./config.sh remove --token TOKEN
-   * ```
-   */
-  "actions/create-remove-token-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["authentication-token"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a self-hosted runner for an organization
-   * @description Gets a specific self-hosted runner configured in an organization.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/get-self-hosted-runner-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        runner_id: components["parameters"]["runner-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["runner"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a self-hosted runner from an organization
-   * @description Forces the removal of a self-hosted runner from an organization. You can use this endpoint to completely remove the runner when the machine you were using no longer exists.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/delete-self-hosted-runner-from-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        runner_id: components["parameters"]["runner-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List labels for a self-hosted runner for an organization
-   * @description Lists all labels for a self-hosted runner configured in an organization.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/list-labels-for-self-hosted-runner-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        runner_id: components["parameters"]["runner-id"];
-      };
-    };
-    responses: {
-      200: components["responses"]["actions_runner_labels"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Set custom labels for a self-hosted runner for an organization
-   * @description Remove all previous custom labels and set the new custom labels for a specific
-   * self-hosted runner configured in an organization.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/set-custom-labels-for-self-hosted-runner-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        runner_id: components["parameters"]["runner-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The names of the custom labels to set for the runner. You can pass an empty array to remove all custom labels. */
-          labels: string[];
-        };
-      };
-    };
-    responses: {
-      200: components["responses"]["actions_runner_labels"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Add custom labels to a self-hosted runner for an organization
-   * @description Add custom labels to a self-hosted runner configured in an organization.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/add-custom-labels-to-self-hosted-runner-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        runner_id: components["parameters"]["runner-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The names of the custom labels to add to the runner. */
-          labels: string[];
-        };
-      };
-    };
-    responses: {
-      200: components["responses"]["actions_runner_labels"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Remove all custom labels from a self-hosted runner for an organization
-   * @description Remove all custom labels from a self-hosted runner configured in an
-   * organization. Returns the remaining read-only labels from the runner.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/remove-all-custom-labels-from-self-hosted-runner-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        runner_id: components["parameters"]["runner-id"];
-      };
-    };
-    responses: {
-      200: components["responses"]["actions_runner_labels_readonly"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Remove a custom label from a self-hosted runner for an organization
-   * @description Remove a custom label from a self-hosted runner configured
-   * in an organization. Returns the remaining labels from the runner.
-   *
-   * This endpoint returns a `404 Not Found` status if the custom label is not
-   * present on the runner.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/remove-custom-label-from-self-hosted-runner-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        runner_id: components["parameters"]["runner-id"];
-        name: components["parameters"]["runner-label-name"];
-      };
-    };
-    responses: {
-      200: components["responses"]["actions_runner_labels"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * List organization secrets
-   * @description Lists all secrets available in an organization without revealing their
-   * encrypted values.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/list-org-secrets": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            secrets: components["schemas"]["organization-actions-secret"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get an organization public key
-   * @description Gets your public key, which you need to encrypt secrets. You need to
-   * encrypt a secret before you can create or update secrets.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/get-org-public-key": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-public-key"];
-        };
-      };
-    };
-  };
-  /**
-   * Get an organization secret
-   * @description Gets a single organization secret without revealing its encrypted value.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/get-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["organization-actions-secret"];
-        };
-      };
-    };
-  };
-  /**
-   * Create or update an organization secret
-   * @description Creates or updates an organization secret with an encrypted value. Encrypt your secret using
-   * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access
-   * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to
-   * use this endpoint.
-   *
-   * #### Example encrypting a secret using Node.js
-   *
-   * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library.
-   *
-   * ```
-   * const sodium = require('tweetsodium');
-   *
-   * const key = "base64-encoded-public-key";
-   * const value = "plain-text-secret";
-   *
-   * // Convert the message and key to Uint8Array's (Buffer implements that interface)
-   * const messageBytes = Buffer.from(value);
-   * const keyBytes = Buffer.from(key, 'base64');
-   *
-   * // Encrypt using LibSodium.
-   * const encryptedBytes = sodium.seal(messageBytes, keyBytes);
-   *
-   * // Base64 the encrypted secret
-   * const encrypted = Buffer.from(encryptedBytes).toString('base64');
-   *
-   * console.log(encrypted);
-   * ```
-   *
-   *
-   * #### Example encrypting a secret using Python
-   *
-   * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3.
-   *
-   * ```
-   * from base64 import b64encode
-   * from nacl import encoding, public
-   *
-   * def encrypt(public_key: str, secret_value: str) -> str:
-   *   """Encrypt a Unicode string using the public key."""
-   *   public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder())
-   *   sealed_box = public.SealedBox(public_key)
-   *   encrypted = sealed_box.encrypt(secret_value.encode("utf-8"))
-   *   return b64encode(encrypted).decode("utf-8")
-   * ```
-   *
-   * #### Example encrypting a secret using C#
-   *
-   * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package.
-   *
-   * ```
-   * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret");
-   * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU=");
-   *
-   * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);
-   *
-   * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));
-   * ```
-   *
-   * #### Example encrypting a secret using Ruby
-   *
-   * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem.
-   *
-   * ```ruby
-   * require "rbnacl"
-   * require "base64"
-   *
-   * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=")
-   * public_key = RbNaCl::PublicKey.new(key)
-   *
-   * box = RbNaCl::Boxes::Sealed.from_public_key(public_key)
-   * encrypted_secret = box.encrypt("my_secret")
-   *
-   * # Print the base64 encoded secret
-   * puts Base64.strict_encode64(encrypted_secret)
-   * ```
-   */
-  "actions/create-or-update-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an organization public key](https://docs.github.com/rest/reference/actions#get-an-organization-public-key) endpoint. */
-          encrypted_value?: string;
-          /** @description ID of the key you used to encrypt the secret. */
-          key_id?: string;
-          /**
-           * @description Which type of organization repositories have access to the organization secret. `selected` means only the repositories specified by `selected_repository_ids` can access the secret.
-           * @enum {string}
-           */
-          visibility: "all" | "private" | "selected";
-          /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can manage the list of selected repositories using the [List selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#list-selected-repositories-for-an-organization-secret), [Set selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#set-selected-repositories-for-an-organization-secret), and [Remove selected repository from an organization secret](https://docs.github.com/rest/reference/actions#remove-selected-repository-from-an-organization-secret) endpoints. */
-          selected_repository_ids?: (number | string)[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response when creating a secret */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      /** @description Response when updating a secret */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Delete an organization secret
-   * @description Deletes a secret in an organization using the secret name.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/delete-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List selected repositories for an organization secret
-   * @description Lists all repositories that have been selected when the `visibility`
-   * for repository access to a secret is set to `selected`.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/list-selected-repos-for-org-secret": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            repositories: components["schemas"]["minimal-repository"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Set selected repositories for an organization secret
-   * @description Replaces all repositories for an organization secret when the `visibility`
-   * for repository access is set to `selected`. The visibility is set when you [Create
-   * or update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret).
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/set-selected-repos-for-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can add and remove individual repositories using the [Add selected repository to an organization secret](https://docs.github.com/rest/actions/secrets#add-selected-repository-to-an-organization-secret) and [Remove selected repository from an organization secret](https://docs.github.com/rest/actions/secrets#remove-selected-repository-from-an-organization-secret) endpoints. */
-          selected_repository_ids: number[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Add selected repository to an organization secret
-   * @description Adds a repository to an organization secret when the `visibility` for
-   * repository access is set to `selected`. The visibility is set when you [Create or
-   * update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret).
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/add-selected-repo-to-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-        repository_id: number;
-      };
-    };
-    responses: {
-      /** @description No Content when repository was added to the selected list */
-      204: {
-        content: never;
-      };
-      /** @description Conflict when visibility type is not set to selected */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Remove selected repository from an organization secret
-   * @description Removes a repository from an organization secret when the `visibility`
-   * for repository access is set to `selected`. The visibility is set when you [Create
-   * or update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret).
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/remove-selected-repo-from-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-        repository_id: number;
-      };
-    };
-    responses: {
-      /** @description Response when repository was removed from the selected list */
-      204: {
-        content: never;
-      };
-      /** @description Conflict when visibility type not set to selected */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List organization variables
-   * @description Lists all organization variables.
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `organization_actions_variables:read` organization permission to use this endpoint. Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/list-org-variables": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["variables-per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            variables: components["schemas"]["organization-actions-variable"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Create an organization variable
-   * @description Creates an organization variable that you can reference in a GitHub Actions workflow.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/create-org-variable": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the variable. */
-          name: string;
-          /** @description The value of the variable. */
-          value: string;
-          /**
-           * @description The type of repositories in the organization that can access the variable. `selected` means only the repositories specified by `selected_repository_ids` can access the variable.
-           * @enum {string}
-           */
-          visibility: "all" | "private" | "selected";
-          /** @description An array of repository ids that can access the organization variable. You can only provide a list of repository ids when the `visibility` is set to `selected`. */
-          selected_repository_ids?: number[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response when creating a variable */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-    };
-  };
-  /**
-   * Get an organization variable
-   * @description Gets a specific variable in an organization.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `organization_actions_variables:read` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/get-org-variable": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        name: components["parameters"]["variable-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["organization-actions-variable"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete an organization variable
-   * @description Deletes an organization variable using the variable name.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/delete-org-variable": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        name: components["parameters"]["variable-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update an organization variable
-   * @description Updates an organization variable that you can reference in a GitHub Actions workflow.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/update-org-variable": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        name: components["parameters"]["variable-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the variable. */
-          name?: string;
-          /** @description The value of the variable. */
-          value?: string;
-          /**
-           * @description The type of repositories in the organization that can access the variable. `selected` means only the repositories specified by `selected_repository_ids` can access the variable.
-           * @enum {string}
-           */
-          visibility?: "all" | "private" | "selected";
-          /** @description An array of repository ids that can access the organization variable. You can only provide a list of repository ids when the `visibility` is set to `selected`. */
-          selected_repository_ids?: number[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List selected repositories for an organization variable
-   * @description Lists all repositories that can access an organization variable
-   * that is available to selected repositories.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `organization_actions_variables:read` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/list-selected-repos-for-org-variable": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        name: components["parameters"]["variable-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            repositories: components["schemas"]["minimal-repository"][];
-          };
-        };
-      };
-      /** @description Response when the visibility of the variable is not set to `selected` */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Set selected repositories for an organization variable
-   * @description Replaces all repositories for an organization variable that is available
-   * to selected repositories. Organization variables that are available to selected
-   * repositories have their `visibility` field set to `selected`.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this
-   * endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/set-selected-repos-for-org-variable": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        name: components["parameters"]["variable-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The IDs of the repositories that can access the organization variable. */
-          selected_repository_ids: number[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      /** @description Response when the visibility of the variable is not set to `selected` */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Add selected repository to an organization variable
-   * @description Adds a repository to an organization variable that is available to selected repositories.
-   * Organization variables that are available to selected repositories have their `visibility` field set to `selected`.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/add-selected-repo-to-org-variable": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        name: components["parameters"]["variable-name"];
-        repository_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      /** @description Response when the visibility of the variable is not set to `selected` */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Remove selected repository from an organization variable
-   * @description Removes a repository from an organization variable that is
-   * available to selected repositories. Organization variables that are available to
-   * selected repositories have their `visibility` field set to `selected`.
-   *
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/remove-selected-repo-from-org-variable": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        name: components["parameters"]["variable-name"];
-        repository_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      /** @description Response when the visibility of the variable is not set to `selected` */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List users blocked by an organization
-   * @description List the users blocked by an organization.
-   */
-  "orgs/list-blocked-users": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-    };
-  };
-  /**
-   * Check if a user is blocked by an organization
-   * @description Returns a 204 if the given user is blocked by the given organization. Returns a 404 if the organization is not blocking the user, or if the user account has been identified as spam by GitHub.
-   */
-  "orgs/check-blocked-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description If the user is blocked */
-      204: {
-        content: never;
-      };
-      /** @description If the user is not blocked */
-      404: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-    };
-  };
-  /**
-   * Block a user from an organization
-   * @description Blocks the given user on behalf of the specified organization and returns a 204. If the organization cannot block the given user a 422 is returned.
-   */
-  "orgs/block-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Unblock a user from an organization
-   * @description Unblocks the given user on behalf of the specified organization.
-   */
-  "orgs/unblock-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List code scanning alerts for an organization
-   * @description Lists code scanning alerts for the default branch for all eligible repositories in an organization. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-   *
-   * To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.
-   *
-   * For public repositories, you may instead use the `public_repo` scope.
-   *
-   * GitHub Apps must have the `security_events` read permission to use this endpoint.
-   */
-  "code-scanning/list-alerts-for-org": {
-    parameters: {
-      query?: {
-        tool_name?: components["parameters"]["tool-name"];
-        tool_guid?: components["parameters"]["tool-guid"];
-        before?: components["parameters"]["pagination-before"];
-        after?: components["parameters"]["pagination-after"];
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-        direction?: components["parameters"]["direction"];
-        /** @description If specified, only code scanning alerts with this state will be returned. */
-        state?: components["schemas"]["code-scanning-alert-state-query"];
-        /** @description The property by which to sort the results. */
-        sort?: "created" | "updated";
-        /** @description If specified, only code scanning alerts with this severity will be returned. */
-        severity?: components["schemas"]["code-scanning-alert-severity"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["code-scanning-organization-alert-items"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List codespaces for the organization
-   * @description Lists the codespaces associated to a specified organization.
-   *
-   * You must authenticate using an access token with the `admin:org` scope or the `Organization codespaces` read permission to use this endpoint.
-   */
-  "codespaces/list-in-organization": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            codespaces: components["schemas"]["codespace"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Manage access control for organization codespaces
-   * @deprecated
-   * @description Sets which users can access codespaces in an organization. This is synonymous with granting or revoking codespaces access permissions for users according to the visibility.
-   * You must authenticate using an access token with the `admin:org` scope or the `Organization codespaces settings` write permission to use this endpoint.
-   */
-  "codespaces/set-codespaces-access": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Which users can access codespaces in the organization. `disabled` means that no users can access codespaces in the organization.
-           * @enum {string}
-           */
-          visibility:
-            | "disabled"
-            | "selected_members"
-            | "all_members"
-            | "all_members_and_outside_collaborators";
-          /** @description The usernames of the organization members who should have access to codespaces in the organization. Required when `visibility` is `selected_members`. The provided list of usernames will replace any existing value. */
-          selected_usernames?: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response when successfully modifying permissions. */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      /** @description Users are neither members nor collaborators of this organization. */
-      400: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Add users to Codespaces access for an organization
-   * @deprecated
-   * @description Codespaces for the specified users will be billed to the organization.
-   *
-   * To use this endpoint, the access settings for the organization must be set to `selected_members`.
-   * For information on how to change this setting, see "[Manage access control for organization codespaces](https://docs.github.com/rest/codespaces/organizations#manage-access-control-for-organization-codespaces)."
-   *
-   * You must authenticate using an access token with the `admin:org` scope or the `Organization codespaces settings` write permission to use this endpoint.
-   */
-  "codespaces/set-codespaces-access-users": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The usernames of the organization members whose codespaces be billed to the organization. */
-          selected_usernames: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response when successfully modifying permissions. */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      /** @description Users are neither members nor collaborators of this organization. */
-      400: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Remove users from Codespaces access for an organization
-   * @deprecated
-   * @description Codespaces for the specified users will no longer be billed to the organization.
-   *
-   * To use this endpoint, the access settings for the organization must be set to `selected_members`.
-   * For information on how to change this setting, see "[Manage access control for organization codespaces](https://docs.github.com/rest/codespaces/organizations#manage-access-control-for-organization-codespaces)."
-   *
-   * You must authenticate using an access token with the `admin:org` scope or the `Organization codespaces settings` write permission to use this endpoint.
-   */
-  "codespaces/delete-codespaces-access-users": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The usernames of the organization members whose codespaces should not be billed to the organization. */
-          selected_usernames: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response when successfully modifying permissions. */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      /** @description Users are neither members nor collaborators of this organization. */
-      400: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List organization secrets
-   * @description Lists all Codespaces secrets available at the organization-level without revealing their encrypted values.
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   */
-  "codespaces/list-org-secrets": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            secrets: components["schemas"]["codespaces-org-secret"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get an organization public key
-   * @description Gets a public key for an organization, which is required in order to encrypt secrets. You need to encrypt the value of a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   */
-  "codespaces/get-org-public-key": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["codespaces-public-key"];
-        };
-      };
-    };
-  };
-  /**
-   * Get an organization secret
-   * @description Gets an organization secret without revealing its encrypted value.
-   * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   */
-  "codespaces/get-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["codespaces-org-secret"];
-        };
-      };
-    };
-  };
-  /**
-   * Create or update an organization secret
-   * @description Creates or updates an organization secret with an encrypted value. Encrypt your secret using
-   * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-   *
-   * You must authenticate using an access
-   * token with the `admin:org` scope to use this endpoint.
-   */
-  "codespaces/create-or-update-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an organization public key](https://docs.github.com/rest/codespaces/organization-secrets#get-an-organization-public-key) endpoint. */
-          encrypted_value?: string;
-          /** @description The ID of the key you used to encrypt the secret. */
-          key_id?: string;
-          /**
-           * @description Which type of organization repositories have access to the organization secret. `selected` means only the repositories specified by `selected_repository_ids` can access the secret.
-           * @enum {string}
-           */
-          visibility: "all" | "private" | "selected";
-          /** @description An array of repository IDs that can access the organization secret. You can only provide a list of repository IDs when the `visibility` is set to `selected`. You can manage the list of selected repositories using the [List selected repositories for an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#list-selected-repositories-for-an-organization-secret), [Set selected repositories for an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#set-selected-repositories-for-an-organization-secret), and [Remove selected repository from an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#remove-selected-repository-from-an-organization-secret) endpoints. */
-          selected_repository_ids?: number[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response when creating a secret */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      /** @description Response when updating a secret */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Delete an organization secret
-   * @description Deletes an organization secret using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   */
-  "codespaces/delete-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List selected repositories for an organization secret
-   * @description Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   */
-  "codespaces/list-selected-repos-for-org-secret": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            repositories: components["schemas"]["minimal-repository"][];
-          };
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Set selected repositories for an organization secret
-   * @description Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   */
-  "codespaces/set-selected-repos-for-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can add and remove individual repositories using the [Set selected repositories for an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#set-selected-repositories-for-an-organization-secret) and [Remove selected repository from an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#remove-selected-repository-from-an-organization-secret) endpoints. */
-          selected_repository_ids: number[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      /** @description Conflict when visibility type not set to selected */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Add selected repository to an organization secret
-   * @description Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   */
-  "codespaces/add-selected-repo-to-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-        repository_id: number;
-      };
-    };
-    responses: {
-      /** @description No Content when repository was added to the selected list */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      /** @description Conflict when visibility type is not set to selected */
-      409: {
-        content: never;
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove selected repository from an organization secret
-   * @description Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-   */
-  "codespaces/remove-selected-repo-from-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-        repository_id: number;
-      };
-    };
-    responses: {
-      /** @description Response when repository was removed from the selected list */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      /** @description Conflict when visibility type not set to selected */
-      409: {
-        content: never;
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get Copilot for Business seat information and settings for an organization
-   * @description **Note**: This endpoint is in beta and is subject to change.
-   *
-   * Gets information about an organization's Copilot for Business subscription, including seat breakdown
-   * and code matching policies. To configure these settings, go to your organization's settings on GitHub.com.
-   * For more information, see "[Configuring GitHub Copilot settings in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization)".
-   *
-   * Only organization owners and members with admin permissions can configure and view details about the organization's Copilot for Business subscription. You must
-   * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-   */
-  "copilot/get-copilot-organization-details": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description OK */
-      200: {
-        content: {
-          "application/json": components["schemas"]["copilot-organization-details"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List all Copilot for Business seat assignments for an organization
-   * @description **Note**: This endpoint is in beta and is subject to change.
-   *
-   * Lists all Copilot for Business seat assignments for an organization that are currently being billed (either active or pending cancellation at the start of the next billing cycle).
-   *
-   * Only organization owners and members with admin permissions can configure and view details about the organization's Copilot for Business subscription. You must
-   * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-   */
-  "copilot/list-copilot-seats": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        /** @description The number of results per page (max 100). */
-        per_page?: number;
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            /** @description Total number of Copilot For Business seats for the organization currently being billed. */
-            total_seats?: number;
-            seats?: components["schemas"]["copilot-seat-details"][];
-          };
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Add teams to the Copilot for Business subscription for an organization
-   * @description **Note**: This endpoint is in beta and is subject to change.
-   *
-   *  Purchases a GitHub Copilot for Business seat for all users within each specified team.
-   *  The organization will be billed accordingly. For more information about Copilot for Business pricing, see "[About billing for GitHub Copilot for Business](https://docs.github.com/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#pricing-for-github-copilot-for-business)".
-   *
-   *  Only organization owners and members with admin permissions can configure GitHub Copilot in their organization. You must
-   *  authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-   *
-   *  In order for an admin to use this endpoint, the organization must have a Copilot for Business subscription and a configured suggestion matching policy.
-   *  For more information about setting up a Copilot for Business subscription, see "[Setting up a Copilot for Business subscription for your organization](https://docs.github.com/billing/managing-billing-for-github-copilot/managing-your-github-copilot-subscription-for-your-organization-or-enterprise#setting-up-a-copilot-for-business-subscription-for-your-organization)".
-   *  For more information about setting a suggestion matching policy, see "[Configuring suggestion matching policies for GitHub Copilot in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization#configuring-suggestion-matching-policies-for-github-copilot-in-your-organization)".
-   */
-  "copilot/add-copilot-for-business-seats-for-teams": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description List of team names within the organization to which to grant access to GitHub Copilot. */
-          selected_teams: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description OK */
-      201: {
-        content: {
-          "application/json": {
-            seats_created: number;
-          };
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      /** @description Copilot for Business is not enabled for this organization, billing has not been set up for this organization, a public code suggestions policy has not been set for this organization, or the organization's Copilot access setting is set to enable Copilot for all users or is unconfigured. */
-      422: {
-        content: never;
-      };
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Remove teams from the Copilot for Business subscription for an organization
-   * @description **Note**: This endpoint is in beta and is subject to change.
-   *
-   * Cancels the Copilot for Business seat assignment for all members of each team specified.
-   * This will cause the members of the specified team(s) to lose access to GitHub Copilot at the end of the current billing cycle, and the organization will not be billed further for those users.
-   *
-   * For more information about Copilot for Business pricing, see "[About billing for GitHub Copilot for Business](https://docs.github.com/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#pricing-for-github-copilot-for-business)".
-   *
-   * For more information about disabling access to Copilot for Business, see "[Disabling access to GitHub Copilot for specific users in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization#disabling-access-to-github-copilot-for-specific-users-in-your-organization)".
-   *
-   * Only organization owners and members with admin permissions can configure GitHub Copilot in their organization. You must
-   * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-   */
-  "copilot/cancel-copilot-seat-assignment-for-teams": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The names of teams from which to revoke access to GitHub Copilot. */
-          selected_teams: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description OK */
-      200: {
-        content: {
-          "application/json": {
-            seats_cancelled: number;
-          };
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      /** @description Copilot for Business is not enabled for this organization, billing has not been set up for this organization, a public code suggestions policy has not been set for this organization, or the organization's Copilot access setting is set to enable Copilot for all users or is unconfigured. */
-      422: {
-        content: never;
-      };
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Add users to the Copilot for Business subscription for an organization
-   * @description **Note**: This endpoint is in beta and is subject to change.
-   *
-   * Purchases a GitHub Copilot for Business seat for each user specified.
-   * The organization will be billed accordingly. For more information about Copilot for Business pricing, see "[About billing for GitHub Copilot for Business](https://docs.github.com/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#pricing-for-github-copilot-for-business)".
-   *
-   * Only organization owners and members with admin permissions can configure GitHub Copilot in their organization. You must
-   * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-   *
-   * In order for an admin to use this endpoint, the organization must have a Copilot for Business subscription and a configured suggestion matching policy.
-   * For more information about setting up a Copilot for Business subscription, see "[Setting up a Copilot for Business subscription for your organization](https://docs.github.com/billing/managing-billing-for-github-copilot/managing-your-github-copilot-subscription-for-your-organization-or-enterprise#setting-up-a-copilot-for-business-subscription-for-your-organization)".
-   * For more information about setting a suggestion matching policy, see "[Configuring suggestion matching policies for GitHub Copilot in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization#configuring-suggestion-matching-policies-for-github-copilot-in-your-organization)".
-   */
-  "copilot/add-copilot-for-business-seats-for-users": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The usernames of the organization members to be granted access to GitHub Copilot. */
-          selected_usernames: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description OK */
-      201: {
-        content: {
-          "application/json": {
-            seats_created: number;
-          };
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      /** @description Copilot for Business is not enabled for this organization, billing has not been set up for this organization, a public code suggestions policy has not been set for this organization, or the organization's Copilot access setting is set to enable Copilot for all users or is unconfigured. */
-      422: {
-        content: never;
-      };
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Remove users from the Copilot for Business subscription for an organization
-   * @description **Note**: This endpoint is in beta and is subject to change.
-   *
-   * Cancels the Copilot for Business seat assignment for each user specified.
-   * This will cause the specified users to lose access to GitHub Copilot at the end of the current billing cycle, and the organization will not be billed further for those users.
-   *
-   * For more information about Copilot for Business pricing, see "[About billing for GitHub Copilot for Business](https://docs.github.com/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#pricing-for-github-copilot-for-business)"
-   *
-   * For more information about disabling access to Copilot for Business, see "[Disabling access to GitHub Copilot for specific users in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization#disabling-access-to-github-copilot-for-specific-users-in-your-organization)".
-   *
-   * Only organization owners and members with admin permissions can configure GitHub Copilot in their organization. You must
-   * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-   */
-  "copilot/cancel-copilot-seat-assignment-for-users": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The usernames of the organization members for which to revoke access to GitHub Copilot. */
-          selected_usernames: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description OK */
-      200: {
-        content: {
-          "application/json": {
-            seats_cancelled: number;
-          };
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      /** @description Copilot for Business is not enabled for this organization, billing has not been set up for this organization, a public code suggestions policy has not been set for this organization, the seat management setting is set to enable Copilot for all users or is unconfigured, or a user's seat cannot be cancelled because it was assigned to them via a team. */
-      422: {
-        content: never;
-      };
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List Dependabot alerts for an organization
-   * @description Lists Dependabot alerts for an organization.
-   *
-   * To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.
-   *
-   * For public repositories, you may instead use the `public_repo` scope.
-   *
-   * GitHub Apps must have **Dependabot alerts** read permission to use this endpoint.
-   */
-  "dependabot/list-alerts-for-org": {
-    parameters: {
-      query?: {
-        state?: components["parameters"]["dependabot-alert-comma-separated-states"];
-        severity?: components["parameters"]["dependabot-alert-comma-separated-severities"];
-        ecosystem?: components["parameters"]["dependabot-alert-comma-separated-ecosystems"];
-        package?: components["parameters"]["dependabot-alert-comma-separated-packages"];
-        scope?: components["parameters"]["dependabot-alert-scope"];
-        sort?: components["parameters"]["dependabot-alert-sort"];
-        direction?: components["parameters"]["direction"];
-        before?: components["parameters"]["pagination-before"];
-        after?: components["parameters"]["pagination-after"];
-        first?: components["parameters"]["pagination-first"];
-        last?: components["parameters"]["pagination-last"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["dependabot-alert-with-repository"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      400: components["responses"]["bad_request"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * List organization secrets
-   * @description Lists all secrets available in an organization without revealing their encrypted values. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-   */
-  "dependabot/list-org-secrets": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            secrets: components["schemas"]["organization-dependabot-secret"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get an organization public key
-   * @description Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-   */
-  "dependabot/get-org-public-key": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["dependabot-public-key"];
-        };
-      };
-    };
-  };
-  /**
-   * Get an organization secret
-   * @description Gets a single organization secret without revealing its encrypted value. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-   */
-  "dependabot/get-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["organization-dependabot-secret"];
-        };
-      };
-    };
-  };
-  /**
-   * Create or update an organization secret
-   * @description Creates or updates an organization secret with an encrypted value. Encrypt your secret using
-   * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access
-   * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization
-   * permission to use this endpoint.
-   *
-   * #### Example encrypting a secret using Node.js
-   *
-   * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library.
-   *
-   * ```
-   * const sodium = require('tweetsodium');
-   *
-   * const key = "base64-encoded-public-key";
-   * const value = "plain-text-secret";
-   *
-   * // Convert the message and key to Uint8Array's (Buffer implements that interface)
-   * const messageBytes = Buffer.from(value);
-   * const keyBytes = Buffer.from(key, 'base64');
-   *
-   * // Encrypt using LibSodium.
-   * const encryptedBytes = sodium.seal(messageBytes, keyBytes);
-   *
-   * // Base64 the encrypted secret
-   * const encrypted = Buffer.from(encryptedBytes).toString('base64');
-   *
-   * console.log(encrypted);
-   * ```
-   *
-   *
-   * #### Example encrypting a secret using Python
-   *
-   * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3.
-   *
-   * ```
-   * from base64 import b64encode
-   * from nacl import encoding, public
-   *
-   * def encrypt(public_key: str, secret_value: str) -> str:
-   *   """Encrypt a Unicode string using the public key."""
-   *   public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder())
-   *   sealed_box = public.SealedBox(public_key)
-   *   encrypted = sealed_box.encrypt(secret_value.encode("utf-8"))
-   *   return b64encode(encrypted).decode("utf-8")
-   * ```
-   *
-   * #### Example encrypting a secret using C#
-   *
-   * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package.
-   *
-   * ```
-   * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret");
-   * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU=");
-   *
-   * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);
-   *
-   * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));
-   * ```
-   *
-   * #### Example encrypting a secret using Ruby
-   *
-   * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem.
-   *
-   * ```ruby
-   * require "rbnacl"
-   * require "base64"
-   *
-   * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=")
-   * public_key = RbNaCl::PublicKey.new(key)
-   *
-   * box = RbNaCl::Boxes::Sealed.from_public_key(public_key)
-   * encrypted_secret = box.encrypt("my_secret")
-   *
-   * # Print the base64 encoded secret
-   * puts Base64.strict_encode64(encrypted_secret)
-   * ```
-   */
-  "dependabot/create-or-update-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an organization public key](https://docs.github.com/rest/reference/dependabot#get-an-organization-public-key) endpoint. */
-          encrypted_value?: string;
-          /** @description ID of the key you used to encrypt the secret. */
-          key_id?: string;
-          /**
-           * @description Which type of organization repositories have access to the organization secret. `selected` means only the repositories specified by `selected_repository_ids` can access the secret.
-           * @enum {string}
-           */
-          visibility: "all" | "private" | "selected";
-          /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can manage the list of selected repositories using the [List selected repositories for an organization secret](https://docs.github.com/rest/reference/dependabot#list-selected-repositories-for-an-organization-secret), [Set selected repositories for an organization secret](https://docs.github.com/rest/reference/dependabot#set-selected-repositories-for-an-organization-secret), and [Remove selected repository from an organization secret](https://docs.github.com/rest/reference/dependabot#remove-selected-repository-from-an-organization-secret) endpoints. */
-          selected_repository_ids?: (string | number)[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response when creating a secret */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      /** @description Response when updating a secret */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Delete an organization secret
-   * @description Deletes a secret in an organization using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-   */
-  "dependabot/delete-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List selected repositories for an organization secret
-   * @description Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-   */
-  "dependabot/list-selected-repos-for-org-secret": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            repositories: components["schemas"]["minimal-repository"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Set selected repositories for an organization secret
-   * @description Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-   */
-  "dependabot/set-selected-repos-for-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can add and remove individual repositories using the [Set selected repositories for an organization secret](https://docs.github.com/rest/dependabot/secrets#set-selected-repositories-for-an-organization-secret) and [Remove selected repository from an organization secret](https://docs.github.com/rest/dependabot/secrets#remove-selected-repository-from-an-organization-secret) endpoints. */
-          selected_repository_ids: number[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Add selected repository to an organization secret
-   * @description Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-   */
-  "dependabot/add-selected-repo-to-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-        repository_id: number;
-      };
-    };
-    responses: {
-      /** @description No Content when repository was added to the selected list */
-      204: {
-        content: never;
-      };
-      /** @description Conflict when visibility type is not set to selected */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Remove selected repository from an organization secret
-   * @description Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-   */
-  "dependabot/remove-selected-repo-from-org-secret": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        secret_name: components["parameters"]["secret-name"];
-        repository_id: number;
-      };
-    };
-    responses: {
-      /** @description Response when repository was removed from the selected list */
-      204: {
-        content: never;
-      };
-      /** @description Conflict when visibility type not set to selected */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get list of conflicting packages during Docker migration for organization
-   * @description Lists all packages that are in a specific organization, are readable by the requesting user, and that encountered a conflict during a Docker migration.
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` scope.
-   */
-  "packages/list-docker-migration-conflicting-packages-for-organization": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package"][];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /** List public organization events */
-  "activity/list-public-org-events": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["event"][];
-        };
-      };
-    };
-  };
-  /**
-   * List failed organization invitations
-   * @description The return hash contains `failed_at` and `failed_reason` fields which represent the time at which the invitation failed and the reason for the failure.
-   */
-  "orgs/list-failed-invitations": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["organization-invitation"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** List organization webhooks */
-  "orgs/list-webhooks": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["org-hook"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create an organization webhook
-   * @description Here's how you can create a hook that posts payloads in JSON format:
-   */
-  "orgs/create-webhook": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Must be passed as "web". */
-          name: string;
-          /** @description Key/value pairs to provide settings for this webhook. */
-          config: {
-            url: components["schemas"]["webhook-config-url"];
-            content_type?: components["schemas"]["webhook-config-content-type"];
-            secret?: components["schemas"]["webhook-config-secret"];
-            insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"];
-            /** @example "kdaigle" */
-            username?: string;
-            /** @example "password" */
-            password?: string;
-          };
-          /**
-           * @description Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. Set to `["*"]` to receive all possible events.
-           * @default [
-           *   "push"
-           * ]
-           */
-          events?: string[];
-          /**
-           * @description Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
-           * @default true
-           */
-          active?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/orgs/octocat/hooks/1 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["org-hook"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get an organization webhook
-   * @description Returns a webhook configured in an organization. To get only the webhook `config` properties, see "[Get a webhook configuration for an organization](/rest/orgs/webhooks#get-a-webhook-configuration-for-an-organization)."
-   */
-  "orgs/get-webhook": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["org-hook"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Delete an organization webhook */
-  "orgs/delete-webhook": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update an organization webhook
-   * @description Updates a webhook configured in an organization. When you update a webhook, the `secret` will be overwritten. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for an organization](/rest/orgs/webhooks#update-a-webhook-configuration-for-an-organization)."
-   */
-  "orgs/update-webhook": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description Key/value pairs to provide settings for this webhook. */
-          config?: {
-            url: components["schemas"]["webhook-config-url"];
-            content_type?: components["schemas"]["webhook-config-content-type"];
-            secret?: components["schemas"]["webhook-config-secret"];
-            insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"];
-          };
-          /**
-           * @description Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for.
-           * @default [
-           *   "push"
-           * ]
-           */
-          events?: string[];
-          /**
-           * @description Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
-           * @default true
-           */
-          active?: boolean;
-          /** @example "web" */
-          name?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["org-hook"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a webhook configuration for an organization
-   * @description Returns the webhook configuration for an organization. To get more information about the webhook, including the `active` state and `events`, use "[Get an organization webhook ](/rest/orgs/webhooks#get-an-organization-webhook)."
-   *
-   * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:read` permission.
-   */
-  "orgs/get-webhook-config-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["webhook-config"];
-        };
-      };
-    };
-  };
-  /**
-   * Update a webhook configuration for an organization
-   * @description 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 ](/rest/orgs/webhooks#update-an-organization-webhook)."
-   *
-   * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:write` permission.
-   */
-  "orgs/update-webhook-config-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          url?: components["schemas"]["webhook-config-url"];
-          content_type?: components["schemas"]["webhook-config-content-type"];
-          secret?: components["schemas"]["webhook-config-secret"];
-          insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["webhook-config"];
-        };
-      };
-    };
-  };
-  /**
-   * List deliveries for an organization webhook
-   * @description Returns a list of webhook deliveries for a webhook configured in an organization.
-   */
-  "orgs/list-webhook-deliveries": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        cursor?: components["parameters"]["cursor"];
-        redelivery?: boolean;
-      };
-      path: {
-        org: components["parameters"]["org"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["hook-delivery-item"][];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a webhook delivery for an organization webhook
-   * @description Returns a delivery for a webhook configured in an organization.
-   */
-  "orgs/get-webhook-delivery": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        hook_id: components["parameters"]["hook-id"];
-        delivery_id: components["parameters"]["delivery-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["hook-delivery"];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Redeliver a delivery for an organization webhook
-   * @description Redeliver a delivery for a webhook configured in an organization.
-   */
-  "orgs/redeliver-webhook-delivery": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        hook_id: components["parameters"]["hook-id"];
-        delivery_id: components["parameters"]["delivery-id"];
-      };
-    };
-    responses: {
-      202: components["responses"]["accepted"];
-      400: components["responses"]["bad_request"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Ping an organization webhook
-   * @description This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook.
-   */
-  "orgs/ping-webhook": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get an organization installation for the authenticated app
-   * @description Enables an authenticated GitHub App to find the organization's installation information.
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/get-org-installation": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["installation"];
-        };
-      };
-    };
-  };
-  /**
-   * List app installations for an organization
-   * @description Lists all GitHub Apps in an organization. The installation count includes all GitHub Apps installed on repositories in the organization. You must be an organization owner with `admin:read` scope to use this endpoint.
-   */
-  "orgs/list-app-installations": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            installations: components["schemas"]["installation"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get interaction restrictions for an organization
-   * @description Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response.
-   */
-  "interactions/get-restrictions-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json":
-            | components["schemas"]["interaction-limit-response"]
-            | Record<string, never>;
-        };
-      };
-    };
-  };
-  /**
-   * Set interaction restrictions for an organization
-   * @description Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization.
-   */
-  "interactions/set-restrictions-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["interaction-limit"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["interaction-limit-response"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove interaction restrictions for an organization
-   * @description Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions.
-   */
-  "interactions/remove-restrictions-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List pending organization invitations
-   * @description The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, or `hiring_manager`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.
-   */
-  "orgs/list-pending-invitations": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        /** @description Filter invitations by their member role. */
-        role?:
-          | "all"
-          | "admin"
-          | "direct_member"
-          | "billing_manager"
-          | "hiring_manager";
-        /** @description Filter invitations by their invitation source. */
-        invitation_source?: "all" | "member" | "scim";
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["organization-invitation"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create an organization invitation
-   * @description Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner.
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   */
-  "orgs/create-invitation": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description **Required unless you provide `email`**. GitHub user ID for the person you are inviting. */
-          invitee_id?: number;
-          /** @description **Required unless you provide `invitee_id`**. Email address of the person you are inviting, which can be an existing GitHub user. */
-          email?: string;
-          /**
-           * @description The role for the new member.
-           *  * `admin` - Organization owners with full administrative rights to the organization and complete access to all repositories and teams.
-           *  * `direct_member` - Non-owner organization members with ability to see other members and join teams by invitation.
-           *  * `billing_manager` - Non-owner organization members with ability to manage the billing settings of your organization.
-           * @default direct_member
-           * @enum {string}
-           */
-          role?: "admin" | "direct_member" | "billing_manager";
-          /** @description Specify IDs for the teams you want to invite new members to. */
-          team_ids?: number[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["organization-invitation"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Cancel an organization invitation
-   * @description Cancel an organization invitation. In order to cancel an organization invitation, the authenticated user must be an organization owner.
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications).
-   */
-  "orgs/cancel-invitation": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        invitation_id: components["parameters"]["invitation-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List organization invitation teams
-   * @description List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner.
-   */
-  "orgs/list-invitation-teams": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        invitation_id: components["parameters"]["invitation-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["team"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List organization issues assigned to the authenticated user
-   * @description List issues in an organization assigned to the authenticated user.
-   *
-   * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-   * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-   * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-   * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-   */
-  "issues/list-for-org": {
-    parameters: {
-      query?: {
-        /** @description Indicates which sorts of issues to return. `assigned` means issues assigned to you. `created` means issues created by you. `mentioned` means issues mentioning you. `subscribed` means issues you're subscribed to updates for. `all` or `repos` means all issues you can see, regardless of participation or creation. */
-        filter?:
-          | "assigned"
-          | "created"
-          | "mentioned"
-          | "subscribed"
-          | "repos"
-          | "all";
-        /** @description Indicates the state of the issues to return. */
-        state?: "open" | "closed" | "all";
-        labels?: components["parameters"]["labels"];
-        /** @description What to sort results by. */
-        sort?: "created" | "updated" | "comments";
-        direction?: components["parameters"]["direction"];
-        since?: components["parameters"]["since"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["issue"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List organization members
-   * @description List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned.
-   */
-  "orgs/list-members": {
-    parameters: {
-      query?: {
-        /** @description Filter members returned in the list. `2fa_disabled` means that only members without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled will be returned. This options is only available for organization owners. */
-        filter?: "2fa_disabled" | "all";
-        /** @description Filter members returned by their role. */
-        role?: "all" | "admin" | "member";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Check organization membership for a user
-   * @description Check if a user is, publicly or privately, a member of the organization.
-   */
-  "orgs/check-membership-for-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response if requester is an organization member and user is a member */
-      204: {
-        content: never;
-      };
-      /** @description Response if requester is not an organization member */
-      302: {
-        headers: {
-          /** @example https://api.github.com/orgs/github/public_members/pezra */
-          Location?: string;
-        };
-        content: never;
-      };
-      /** @description Not Found if requester is an organization member and user is not a member */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Remove an organization member
-   * @description Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories.
-   */
-  "orgs/remove-member": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * List codespaces for a user in organization
-   * @description Lists the codespaces that a member of an organization has for repositories in that organization.
-   *
-   * You must authenticate using an access token with the `admin:org` scope or the `Organization codespaces` read permission to use this endpoint.
-   */
-  "codespaces/get-codespaces-for-user-in-org": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            codespaces: components["schemas"]["codespace"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Delete a codespace from the organization
-   * @description Deletes a user's codespace.
-   *
-   * To use this endpoint you must authenticate using one of the following methods:
-   *
-   * - An access token with the `admin:org` scope
-   * - An access token with write permissions for `Codespaces` on the specific repository and write permissions for `Organization codespaces`
-   */
-  "codespaces/delete-from-organization": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-        codespace_name: components["parameters"]["codespace-name"];
-      };
-    };
-    responses: {
-      202: components["responses"]["accepted"];
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Stop a codespace for an organization user
-   * @description Stops a user's codespace.
-   *
-   * To use this endpoint you must authenticate using one of the following methods:
-   *
-   * - An access token with the `admin:org` scope
-   * - An access token with write permissions for `Codespaces lifecycle admin` on the specific repository and write permissions for `Organization codespaces`
-   */
-  "codespaces/stop-in-organization": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-        codespace_name: components["parameters"]["codespace-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["codespace"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Get Copilot for Business seat assignment details for a user
-   * @description **Note**: This endpoint is in beta and is subject to change.
-   *
-   * Gets the GitHub Copilot for Business seat assignment details for a member of an organization who currently has access to GitHub Copilot.
-   *
-   * Organization owners and members with admin permissions can view GitHub Copilot seat assignment details for members in their organization. You must authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-   */
-  "copilot/get-copilot-seat-details-for-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description The user's GitHub Copilot seat details, including usage. */
-      200: {
-        content: {
-          "application/json": components["schemas"]["copilot-seat-details"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      /** @description Copilot for Business is not enabled for this organization or the user has a pending organization invitation. */
-      422: {
-        content: never;
-      };
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Get organization membership for a user
-   * @description In order to get a user's membership with an organization, the authenticated user must be an organization member. The `state` parameter in the response can be used to identify the user's membership status.
-   */
-  "orgs/get-membership-for-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["org-membership"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Set organization membership for a user
-   * @description Only authenticated organization owners can add a member to the organization or update the member's role.
-   *
-   * *   If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/orgs/members#get-organization-membership-for-a-user) will be `pending` until they accept the invitation.
-   *
-   * *   Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent.
-   *
-   * **Rate limits**
-   *
-   * To prevent abuse, the authenticated user is limited to 50 organization invitations per 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period.
-   */
-  "orgs/set-membership-for-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The role to give the user in the organization. Can be one of:
-           *  * `admin` - The user will become an owner of the organization.
-           *  * `member` - The user will become a non-owner member of the organization.
-           * @default member
-           * @enum {string}
-           */
-          role?: "admin" | "member";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["org-membership"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove organization membership for a user
-   * @description In order to remove a user's membership with an organization, the authenticated user must be an organization owner.
-   *
-   * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases.
-   */
-  "orgs/remove-membership-for-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List organization migrations
-   * @description Lists the most recent migrations, including both exports (which can be started through the REST API) and imports (which cannot be started using the REST API).
-   *
-   * A list of `repositories` is only returned for export migrations.
-   */
-  "migrations/list-for-org": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        /** @description Exclude attributes from the API response to improve performance */
-        exclude?: "repositories"[];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["migration"][];
-        };
-      };
-    };
-  };
-  /**
-   * Start an organization migration
-   * @description Initiates the generation of a migration archive.
-   */
-  "migrations/start-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description A list of arrays indicating which repositories should be migrated. */
-          repositories: string[];
-          /**
-           * @description Indicates whether repositories should be locked (to prevent manipulation) while migrating data.
-           * @default false
-           * @example true
-           */
-          lock_repositories?: boolean;
-          /**
-           * @description Indicates whether metadata should be excluded and only git source should be included for the migration.
-           * @default false
-           */
-          exclude_metadata?: boolean;
-          /**
-           * @description Indicates whether the repository git data should be excluded from the migration.
-           * @default false
-           */
-          exclude_git_data?: boolean;
-          /**
-           * @description Indicates whether attachments should be excluded from the migration (to reduce migration archive file size).
-           * @default false
-           * @example true
-           */
-          exclude_attachments?: boolean;
-          /**
-           * @description Indicates whether releases should be excluded from the migration (to reduce migration archive file size).
-           * @default false
-           * @example true
-           */
-          exclude_releases?: boolean;
-          /**
-           * @description Indicates whether projects owned by the organization or users should be excluded. from the migration.
-           * @default false
-           * @example true
-           */
-          exclude_owner_projects?: boolean;
-          /**
-           * @description Indicates whether this should only include organization metadata (repositories array should be empty and will ignore other flags).
-           * @default false
-           * @example true
-           */
-          org_metadata_only?: boolean;
-          /** @description Exclude related items from being returned in the response in order to improve performance of the request. */
-          exclude?: "repositories"[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["migration"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get an organization migration status
-   * @description Fetches the status of a migration.
-   *
-   * The `state` of a migration can be one of the following values:
-   *
-   * *   `pending`, which means the migration hasn't started yet.
-   * *   `exporting`, which means the migration is in progress.
-   * *   `exported`, which means the migration finished successfully.
-   * *   `failed`, which means the migration failed.
-   */
-  "migrations/get-status-for-org": {
-    parameters: {
-      query?: {
-        /** @description Exclude attributes from the API response to improve performance */
-        exclude?: "repositories"[];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        migration_id: components["parameters"]["migration-id"];
-      };
-    };
-    responses: {
-      /**
-       * @description *   `pending`, which means the migration hasn't started yet.
-       * *   `exporting`, which means the migration is in progress.
-       * *   `exported`, which means the migration finished successfully.
-       * *   `failed`, which means the migration failed.
-       */
-      200: {
-        content: {
-          "application/json": components["schemas"]["migration"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Download an organization migration archive
-   * @description Fetches the URL to a migration archive.
-   */
-  "migrations/download-archive-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        migration_id: components["parameters"]["migration-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      302: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete an organization migration archive
-   * @description Deletes a previous migration archive. Migration archives are automatically deleted after seven days.
-   */
-  "migrations/delete-archive-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        migration_id: components["parameters"]["migration-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Unlock an organization repository
-   * @description Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://docs.github.com/rest/repos/repos#delete-a-repository) when the migration is complete and you no longer need the source data.
-   */
-  "migrations/unlock-repo-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        migration_id: components["parameters"]["migration-id"];
-        repo_name: components["parameters"]["repo-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List repositories in an organization migration
-   * @description List all the repositories for this organization migration.
-   */
-  "migrations/list-repos-for-org": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        migration_id: components["parameters"]["migration-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["minimal-repository"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List outside collaborators for an organization
-   * @description List all users who are outside collaborators of an organization.
-   */
-  "orgs/list-outside-collaborators": {
-    parameters: {
-      query?: {
-        /** @description Filter the list of outside collaborators. `2fa_disabled` means that only outside collaborators without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled will be returned. */
-        filter?: "2fa_disabled" | "all";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-    };
-  };
-  /**
-   * Convert an organization member to outside collaborator
-   * @description When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://docs.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)". Converting an organization member to an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)."
-   */
-  "orgs/convert-member-to-outside-collaborator": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description When set to `true`, the request will be performed asynchronously. Returns a 202 status code when the job is successfully queued.
-           * @default false
-           */
-          async?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description User is getting converted asynchronously */
-      202: {
-        content: {
-          "application/json": Record<string, never>;
-        };
-      };
-      /** @description User was converted */
-      204: {
-        content: never;
-      };
-      /** @description Forbidden if user is the last owner of the organization, not a member of the organization, or if the enterprise enforces a policy for inviting outside collaborators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)." */
-      403: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Remove outside collaborator from an organization
-   * @description Removing a user from this list will remove them from all the organization's repositories.
-   */
-  "orgs/remove-outside-collaborator": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      /** @description Unprocessable Entity if user is a member of the organization */
-      422: {
-        content: {
-          "application/json": {
-            message?: string;
-            documentation_url?: string;
-          };
-        };
-      };
-    };
-  };
-  /**
-   * List packages for an organization
-   * @description Lists packages in an organization readable by the user.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/list-packages-for-organization": {
-    parameters: {
-      query: {
-        /** @description The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */
-        package_type:
-          | "npm"
-          | "maven"
-          | "rubygems"
-          | "docker"
-          | "nuget"
-          | "container";
-        visibility?: components["parameters"]["package-visibility"];
-        /** @description Page number of the results to fetch. */
-        page?: number;
-        /** @description The number of results per page (max 100). */
-        per_page?: number;
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package"][];
-        };
-      };
-      400: components["responses"]["package_es_list_error"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Get a package for an organization
-   * @description Gets a specific package in an organization.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/get-package-for-organization": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a package for an organization
-   * @description Deletes an entire package in an organization. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance.
-   *
-   * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `delete:packages` scopes. In addition:
-   * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package you want to delete. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-   */
-  "packages/delete-package-for-org": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Restore a package for an organization
-   * @description Restores an entire package in an organization.
-   *
-   * You can restore a deleted package under the following conditions:
-   *   - The package was deleted within the last 30 days.
-   *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-   *
-   * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `write:packages` scopes. In addition:
-   * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package you want to restore. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-   */
-  "packages/restore-package-for-org": {
-    parameters: {
-      query?: {
-        /** @description package token */
-        token?: string;
-      };
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List package versions for a package owned by an organization
-   * @description Lists package versions for a package owned by an organization.
-   *
-   * If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/get-all-package-versions-for-package-owned-by-org": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-        /** @description The state of the package, either active or deleted. */
-        state?: "active" | "deleted";
-      };
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package-version"][];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get a package version for an organization
-   * @description Gets a specific package version in an organization.
-   *
-   * You must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/get-package-version-for-organization": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        org: components["parameters"]["org"];
-        package_version_id: components["parameters"]["package-version-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package-version"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete package version for an organization
-   * @description Deletes a specific package version in an organization. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance.
-   *
-   * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `delete:packages` scopes. In addition:
-   * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package whose version you want to delete. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-   */
-  "packages/delete-package-version-for-org": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        org: components["parameters"]["org"];
-        package_version_id: components["parameters"]["package-version-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Restore package version for an organization
-   * @description Restores a specific package version in an organization.
-   *
-   * You can restore a deleted package under the following conditions:
-   *   - The package was deleted within the last 30 days.
-   *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-   *
-   * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `write:packages` scopes. In addition:
-   * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package whose version you want to restore. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-   */
-  "packages/restore-package-version-for-org": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        org: components["parameters"]["org"];
-        package_version_id: components["parameters"]["package-version-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List requests to access organization resources with fine-grained personal access tokens
-   * @description Lists requests from organization members to access organization resources with a fine-grained personal access token. Only GitHub Apps can call this API,
-   * using the `organization_personal_access_token_requests: read` permission.
-   *
-   * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-   */
-  "orgs/list-pat-grant-requests": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        sort?: components["parameters"]["personal-access-token-sort"];
-        direction?: components["parameters"]["direction"];
-        owner?: components["parameters"]["personal-access-token-owner"];
-        repository?: components["parameters"]["personal-access-token-repository"];
-        permission?: components["parameters"]["personal-access-token-permission"];
-        last_used_before?: components["parameters"]["personal-access-token-before"];
-        last_used_after?: components["parameters"]["personal-access-token-after"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["organization-programmatic-access-grant-request"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Review requests to access organization resources with fine-grained personal access tokens
-   * @description Approves or denies multiple pending requests to access organization resources via a fine-grained personal access token. Only GitHub Apps can call this API,
-   * using the `organization_personal_access_token_requests: write` permission.
-   *
-   * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-   */
-  "orgs/review-pat-grant-requests-in-bulk": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Unique identifiers of the requests for access via fine-grained personal access token. Must be formed of between 1 and 100 `pat_request_id` values. */
-          pat_request_ids?: number[];
-          /**
-           * @description Action to apply to the requests.
-           * @enum {string}
-           */
-          action: "approve" | "deny";
-          /** @description Reason for approving or denying the requests. Max 1024 characters. */
-          reason?: string | null;
-        };
-      };
-    };
-    responses: {
-      202: components["responses"]["accepted"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Review a request to access organization resources with a fine-grained personal access token
-   * @description Approves or denies a pending request to access organization resources via a fine-grained personal access token. Only GitHub Apps can call this API,
-   * using the `organization_personal_access_token_requests: write` permission.
-   *
-   * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-   */
-  "orgs/review-pat-grant-request": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        /** @description Unique identifier of the request for access via fine-grained personal access token. */
-        pat_request_id: number;
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Action to apply to the request.
-           * @enum {string}
-           */
-          action: "approve" | "deny";
-          /** @description Reason for approving or denying the request. Max 1024 characters. */
-          reason?: string | null;
-        };
-      };
-    };
-    responses: {
-      204: components["responses"]["no_content"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List repositories requested to be accessed by a fine-grained personal access token
-   * @description Lists the repositories a fine-grained personal access token request is requesting access to. Only GitHub Apps can call this API,
-   * using the `organization_personal_access_token_requests: read` permission.
-   *
-   * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-   */
-  "orgs/list-pat-grant-request-repositories": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        /** @description Unique identifier of the request for access via fine-grained personal access token. */
-        pat_request_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["minimal-repository"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List fine-grained personal access tokens with access to organization resources
-   * @description Lists approved fine-grained personal access tokens owned by organization members that can access organization resources. Only GitHub Apps can call this API,
-   * using the `organization_personal_access_tokens: read` permission.
-   *
-   * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-   */
-  "orgs/list-pat-grants": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        sort?: components["parameters"]["personal-access-token-sort"];
-        direction?: components["parameters"]["direction"];
-        owner?: components["parameters"]["personal-access-token-owner"];
-        repository?: components["parameters"]["personal-access-token-repository"];
-        permission?: components["parameters"]["personal-access-token-permission"];
-        last_used_before?: components["parameters"]["personal-access-token-before"];
-        last_used_after?: components["parameters"]["personal-access-token-after"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["organization-programmatic-access-grant"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Update the access to organization resources via fine-grained personal access tokens
-   * @description Updates the access organization members have to organization resources via fine-grained personal access tokens. Limited to revoking a token's existing access. Only GitHub Apps can call this API,
-   * using the `organization_personal_access_tokens: write` permission.
-   *
-   * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-   */
-  "orgs/update-pat-accesses": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Action to apply to the fine-grained personal access token.
-           * @enum {string}
-           */
-          action: "revoke";
-          /** @description The IDs of the fine-grained personal access tokens. */
-          pat_ids: number[];
-        };
-      };
-    };
-    responses: {
-      202: components["responses"]["accepted"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Update the access a fine-grained personal access token has to organization resources
-   * @description Updates the access an organization member has to organization resources via a fine-grained personal access token. Limited to revoking the token's existing access. Limited to revoking a token's existing access. Only GitHub Apps can call this API,
-   * using the `organization_personal_access_tokens: write` permission.
-   *
-   * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-   */
-  "orgs/update-pat-access": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        pat_id: components["parameters"]["fine-grained-personal-access-token-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Action to apply to the fine-grained personal access token.
-           * @enum {string}
-           */
-          action: "revoke";
-        };
-      };
-    };
-    responses: {
-      204: components["responses"]["no_content"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List repositories a fine-grained personal access token has access to
-   * @description Lists the repositories a fine-grained personal access token has access to. Only GitHub Apps can call this API,
-   * using the `organization_personal_access_tokens: read` permission.
-   *
-   * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-   */
-  "orgs/list-pat-grant-repositories": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        /** @description Unique identifier of the fine-grained personal access token. */
-        pat_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["minimal-repository"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List organization projects
-   * @description Lists the projects in an organization. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-   */
-  "projects/list-for-org": {
-    parameters: {
-      query?: {
-        /** @description Indicates the state of the projects to return. */
-        state?: "open" | "closed" | "all";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["project"][];
-        };
-      };
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Create an organization project
-   * @description Creates an organization project board. Returns a `410 Gone` status if projects are disabled in the organization or if the organization does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-   */
-  "projects/create-for-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the project. */
-          name: string;
-          /** @description The description of the project. */
-          body?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["project"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Get all custom properties for an organization
-   * @description Gets all custom properties defined for an organization.
-   * You must be an organization owner to use this endpoint.
-   */
-  "orgs/get-all-custom-properties": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["org-custom-property"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create or update custom properties for an organization
-   * @description Creates new or updates existing custom properties defined for an organization in a batch.
-   * Only organization owners (or users with the proper permissions granted by them) can update these properties
-   */
-  "orgs/create-or-update-custom-properties": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The array of custom properties to create or update. */
-          properties: components["schemas"]["org-custom-property"][];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["org-custom-property"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get a custom property for an organization
-   * @description Gets a custom property that is defined for an organization.
-   * You must be an organization owner to use this endpoint.
-   */
-  "orgs/get-custom-property": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        custom_property_name: components["parameters"]["custom-property-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["org-custom-property"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create or update a custom property for an organization
-   * @description Creates a new or updates an existing custom property that is defined for an organization.
-   * You must be an organization owner to use this endpoint.
-   */
-  "orgs/create-or-update-custom-property": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        custom_property_name: components["parameters"]["custom-property-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The type of the value for the property
-           * @example single_select
-           * @enum {string}
-           */
-          value_type: "string" | "single_select";
-          /** @description Whether the property is required. */
-          required?: boolean;
-          /** @description Default value of the property */
-          default_value?: string | null;
-          /** @description Short description of the property */
-          description?: string | null;
-          /** @description Ordered list of allowed values of the property */
-          allowed_values?: string[] | null;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["org-custom-property"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Remove a custom property for an organization
-   * @description Removes a custom property that is defined for an organization.
-   * You must be an organization owner to use this endpoint.
-   */
-  "orgs/remove-custom-property": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        custom_property_name: components["parameters"]["custom-property-name"];
-      };
-    };
-    responses: {
-      204: components["responses"]["no_content"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List custom property values for organization repositories
-   * @description Lists organization repositories with all of their custom property values.
-   * Organization members can read these properties.
-   */
-  "orgs/list-custom-properties-values-for-repos": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        /** @description Finds repositories in the organization with a query containing one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching for repositories](https://docs.github.com/articles/searching-for-repositories/)" for a detailed list of qualifiers. */
-        repository_query?: string;
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["org-repo-custom-property-values"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create or update custom property values for organization repositories
-   * @description Create new or update existing custom property values for repositories in a batch that belong to an organization.
-   * Each target repository will have its custom property values updated to match the values provided in the request.
-   *
-   * A maximum of 30 repositories can be updated in a single request.
-   *
-   * Using a value of `null` for a custom property will remove or 'unset' the property value from the repository.
-   *
-   * Only organization owners (or users with the proper permissions granted by them) can update these properties
-   */
-  "orgs/create-or-update-custom-properties-values-for-repos": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The names of repositories that the custom property values will be applied to. */
-          repository_names: string[];
-          /** @description List of custom property names and associated values to apply to the repositories. */
-          properties: components["schemas"]["custom-property-value"][];
-        };
-      };
-    };
-    responses: {
-      /** @description No Content when custom property values are successfully created or updated */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List public organization members
-   * @description Members of an organization can choose to have their membership publicized or not.
-   */
-  "orgs/list-public-members": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-    };
-  };
-  /**
-   * Check public organization membership for a user
-   * @description Check if the provided user is a public member of the organization.
-   */
-  "orgs/check-public-membership-for-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response if user is a public member */
-      204: {
-        content: never;
-      };
-      /** @description Not Found if user is not a public member */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Set public organization membership for the authenticated user
-   * @description The user can publicize their own membership. (A user cannot publicize the membership for another user.)
-   *
-   * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-   */
-  "orgs/set-public-membership-for-authenticated-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Remove public organization membership for the authenticated user
-   * @description Removes the public membership for the authenticated user from the specified organization, unless public visibility is enforced by default.
-   */
-  "orgs/remove-public-membership-for-authenticated-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List organization repositories
-   * @description Lists repositories for the specified organization.
-   *
-   * **Note:** In 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-   */
-  "repos/list-for-org": {
-    parameters: {
-      query?: {
-        /** @description Specifies the types of repositories you want returned. */
-        type?: "all" | "public" | "private" | "forks" | "sources" | "member";
-        /** @description The property to sort the results by. */
-        sort?: "created" | "updated" | "pushed" | "full_name";
-        /** @description The order to sort by. Default: `asc` when using `full_name`, otherwise `desc`. */
-        direction?: "asc" | "desc";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["minimal-repository"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create an organization repository
-   * @description Creates a new repository in the specified organization. The authenticated user must be a member of the organization.
-   *
-   * **OAuth scope requirements**
-   *
-   * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
-   *
-   * *   `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.
-   * *   `repo` scope to create a private repository
-   */
-  "repos/create-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the repository. */
-          name: string;
-          /** @description A short description of the repository. */
-          description?: string;
-          /** @description A URL with more information about the repository. */
-          homepage?: string;
-          /**
-           * @description Whether the repository is private.
-           * @default false
-           */
-          private?: boolean;
-          /**
-           * @description The visibility of the repository.
-           * @enum {string}
-           */
-          visibility?: "public" | "private";
-          /**
-           * @description Either `true` to enable issues for this repository or `false` to disable them.
-           * @default true
-           */
-          has_issues?: boolean;
-          /**
-           * @description Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.
-           * @default true
-           */
-          has_projects?: boolean;
-          /**
-           * @description Either `true` to enable the wiki for this repository or `false` to disable it.
-           * @default true
-           */
-          has_wiki?: boolean;
-          /**
-           * @description Whether downloads are enabled.
-           * @default true
-           * @example true
-           */
-          has_downloads?: boolean;
-          /**
-           * @description Either `true` to make this repo available as a template repository or `false` to prevent it.
-           * @default false
-           */
-          is_template?: boolean;
-          /** @description The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization. */
-          team_id?: number;
-          /**
-           * @description Pass `true` to create an initial commit with empty README.
-           * @default false
-           */
-          auto_init?: boolean;
-          /** @description Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, "Haskell". */
-          gitignore_template?: string;
-          /** @description Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://docs.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, "mit" or "mpl-2.0". */
-          license_template?: string;
-          /**
-           * @description Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
-           * @default true
-           */
-          allow_squash_merge?: boolean;
-          /**
-           * @description Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
-           * @default true
-           */
-          allow_merge_commit?: boolean;
-          /**
-           * @description Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
-           * @default true
-           */
-          allow_rebase_merge?: boolean;
-          /**
-           * @description Either `true` to allow auto-merge on pull requests, or `false` to disallow auto-merge.
-           * @default false
-           */
-          allow_auto_merge?: boolean;
-          /**
-           * @description Either `true` to allow automatically deleting head branches when pull requests are merged, or `false` to prevent automatic deletion. **The authenticated user must be an organization owner to set this property to `true`.**
-           * @default false
-           */
-          delete_branch_on_merge?: boolean;
-          /**
-           * @deprecated
-           * @description Either `true` to allow squash-merge commits to use pull request title, or `false` to use commit message. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-           * @default false
-           */
-          use_squash_pr_title_as_default?: boolean;
-          /**
-           * @description The default value for a squash merge commit title:
-           *
-           * - `PR_TITLE` - default to the pull request's title.
-           * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-           * @enum {string}
-           */
-          squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-          /**
-           * @description The default value for a squash merge commit message:
-           *
-           * - `PR_BODY` - default to the pull request's body.
-           * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-           * - `BLANK` - default to a blank commit message.
-           * @enum {string}
-           */
-          squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-          /**
-           * @description The default value for a merge commit title.
-           *
-           * - `PR_TITLE` - default to the pull request's title.
-           * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-           * @enum {string}
-           */
-          merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-          /**
-           * @description The default value for a merge commit message.
-           *
-           * - `PR_TITLE` - default to the pull request's title.
-           * - `PR_BODY` - default to the pull request's body.
-           * - `BLANK` - default to a blank commit message.
-           * @enum {string}
-           */
-          merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-          /** @description The custom properties for the new respository. The keys are the custom property names, and the values are the corresponding custom property values. */
-          custom_properties?: {
-            [key: string]: unknown;
-          };
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["repository"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get all organization repository rulesets
-   * @description Get all the repository rulesets for an organization.
-   */
-  "repos/get-org-rulesets": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-ruleset"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Create an organization repository ruleset
-   * @description Create a repository ruleset for an organization.
-   */
-  "repos/create-org-ruleset": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    /** @description Request body */
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the ruleset. */
-          name: string;
-          /**
-           * @description The target of the ruleset.
-           * @enum {string}
-           */
-          target?: "branch" | "tag";
-          enforcement: components["schemas"]["repository-rule-enforcement"];
-          /** @description The actors that can bypass the rules in this ruleset */
-          bypass_actors?: components["schemas"]["repository-ruleset-bypass-actor"][];
-          conditions?: components["schemas"]["org-ruleset-conditions"];
-          /** @description An array of rules within the ruleset. */
-          rules?: components["schemas"]["repository-rule"][];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["repository-ruleset"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List organization rule suites
-   * @description Lists suites of rule evaluations at the organization level.
-   * For more information, see "[Managing rulesets for repositories in your organization](https://docs.github.com/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#viewing-insights-for-rulesets)."
-   */
-  "repos/get-org-rule-suites": {
-    parameters: {
-      query?: {
-        repository_name?: components["parameters"]["repository-name-in-query"];
-        time_period?: components["parameters"]["time-period"];
-        actor_name?: components["parameters"]["actor-name-in-query"];
-        rule_suite_result?: components["parameters"]["rule-suite-result"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["rule-suites"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Get an organization rule suite
-   * @description Gets information about a suite of rule evaluations from within an organization.
-   * For more information, see "[Managing rulesets for repositories in your organization](https://docs.github.com/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#viewing-insights-for-rulesets)."
-   */
-  "repos/get-org-rule-suite": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        rule_suite_id: components["parameters"]["rule-suite-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["rule-suite"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Get an organization repository ruleset
-   * @description Get a repository ruleset for an organization.
-   */
-  "repos/get-org-ruleset": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        /** @description The ID of the ruleset. */
-        ruleset_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-ruleset"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Update an organization repository ruleset
-   * @description Update a ruleset for an organization.
-   */
-  "repos/update-org-ruleset": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        /** @description The ID of the ruleset. */
-        ruleset_id: number;
-      };
-    };
-    /** @description Request body */
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The name of the ruleset. */
-          name?: string;
-          /**
-           * @description The target of the ruleset.
-           * @enum {string}
-           */
-          target?: "branch" | "tag";
-          enforcement?: components["schemas"]["repository-rule-enforcement"];
-          /** @description The actors that can bypass the rules in this ruleset */
-          bypass_actors?: components["schemas"]["repository-ruleset-bypass-actor"][];
-          conditions?: components["schemas"]["org-ruleset-conditions"];
-          /** @description An array of rules within the ruleset. */
-          rules?: components["schemas"]["repository-rule"][];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-ruleset"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Delete an organization repository ruleset
-   * @description Delete a ruleset for an organization.
-   */
-  "repos/delete-org-ruleset": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        /** @description The ID of the ruleset. */
-        ruleset_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List secret scanning alerts for an organization
-   * @description Lists secret scanning alerts for eligible repositories in an organization, from newest to oldest.
-   * To use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.
-   * For public repositories, you may instead use the `public_repo` scope.
-   *
-   * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.
-   */
-  "secret-scanning/list-alerts-for-org": {
-    parameters: {
-      query?: {
-        state?: components["parameters"]["secret-scanning-alert-state"];
-        secret_type?: components["parameters"]["secret-scanning-alert-secret-type"];
-        resolution?: components["parameters"]["secret-scanning-alert-resolution"];
-        sort?: components["parameters"]["secret-scanning-alert-sort"];
-        direction?: components["parameters"]["direction"];
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-        before?: components["parameters"]["secret-scanning-pagination-before-org-repo"];
-        after?: components["parameters"]["secret-scanning-pagination-after-org-repo"];
-        validity?: components["parameters"]["secret-scanning-alert-validity"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["organization-secret-scanning-alert"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List repository security advisories for an organization
-   * @description Lists repository security advisories for an organization.
-   *
-   * To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `repository_advisories:write` permission.
-   */
-  "security-advisories/list-org-repository-advisories": {
-    parameters: {
-      query?: {
-        direction?: components["parameters"]["direction"];
-        /** @description The property to sort the results by. */
-        sort?: "created" | "updated" | "published";
-        before?: components["parameters"]["pagination-before"];
-        after?: components["parameters"]["pagination-after"];
-        /** @description The number of advisories to return per page. */
-        per_page?: number;
-        /** @description Filter by the state of the repository advisories. Only advisories of this state will be returned. */
-        state?: "triage" | "draft" | "published" | "closed";
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-advisory"][];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List security manager teams
-   * @description Lists teams that are security managers for an organization. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-   *
-   * To use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the `read:org` scope.
-   *
-   * GitHub Apps must have the `administration` organization read permission to use this endpoint.
-   */
-  "orgs/list-security-manager-teams": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-simple"][];
-        };
-      };
-    };
-  };
-  /**
-   * Add a security manager team
-   * @description Adds a team as a security manager for an organization. For more information, see "[Managing security for an organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization) for an organization."
-   *
-   * To use this endpoint, you must be an administrator for the organization, and you must use an access token with the `write:org` scope.
-   *
-   * GitHub Apps must have the `administration` organization read-write permission to use this endpoint.
-   */
-  "orgs/add-security-manager-team": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      /** @description The organization has reached the maximum number of security manager teams. */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Remove a security manager team
-   * @description Removes the security manager role from a team for an organization. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization) team from an organization."
-   *
-   * To use this endpoint, you must be an administrator for the organization, and you must use an access token with the `admin:org` scope.
-   *
-   * GitHub Apps must have the `administration` organization read-write permission to use this endpoint.
-   */
-  "orgs/remove-security-manager-team": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get GitHub Actions billing for an organization
-   * @description Gets the summary of the free and paid GitHub Actions minutes used.
-   *
-   * 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](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
-   *
-   * Access tokens must have the `repo` or `admin:org` scope.
-   */
-  "billing/get-github-actions-billing-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-billing-usage"];
-        };
-      };
-    };
-  };
-  /**
-   * Get GitHub Packages billing for an organization
-   * @description Gets the free and paid storage used for GitHub Packages in gigabytes.
-   *
-   * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)."
-   *
-   * Access tokens must have the `repo` or `admin:org` scope.
-   */
-  "billing/get-github-packages-billing-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["packages-billing-usage"];
-        };
-      };
-    };
-  };
-  /**
-   * Get shared storage billing for an organization
-   * @description Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages.
-   *
-   * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)."
-   *
-   * Access tokens must have the `repo` or `admin:org` scope.
-   */
-  "billing/get-shared-storage-billing-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["combined-billing-usage"];
-        };
-      };
-    };
-  };
-  /**
-   * List teams
-   * @description Lists all teams in an organization that are visible to the authenticated user.
-   */
-  "teams/list": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["team"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Create a team
-   * @description To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://docs.github.com/articles/setting-team-creation-permissions-in-your-organization)."
-   *
-   * When you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see "[About teams](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/about-teams)".
-   */
-  "teams/create": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the team. */
-          name: string;
-          /** @description The description of the team. */
-          description?: string;
-          /** @description List GitHub IDs for organization members who will become team maintainers. */
-          maintainers?: string[];
-          /** @description The full name (e.g., "organization-name/repository-name") of repositories to add the team to. */
-          repo_names?: string[];
-          /**
-           * @description The level of privacy this team should have. The options are:
-           * **For a non-nested team:**
-           *  * `secret` - only visible to organization owners and members of this team.
-           *  * `closed` - visible to all members of this organization.
-           * Default: `secret`
-           * **For a parent or child team:**
-           *  * `closed` - visible to all members of this organization.
-           * Default for child team: `closed`
-           * @enum {string}
-           */
-          privacy?: "secret" | "closed";
-          /**
-           * @description The notification setting the team has chosen. The options are:
-           *  * `notifications_enabled` - team members receive notifications when the team is @mentioned.
-           *  * `notifications_disabled` - no one receives notifications.
-           * Default: `notifications_enabled`
-           * @enum {string}
-           */
-          notification_setting?:
-            | "notifications_enabled"
-            | "notifications_disabled";
-          /**
-           * @description **Deprecated**. The permission that new repositories will be added to the team with when none is specified.
-           * @default pull
-           * @enum {string}
-           */
-          permission?: "pull" | "push";
-          /** @description The ID of a team to set as the parent team. */
-          parent_team_id?: number;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["team-full"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a team by name
-   * @description Gets a team using the team's `slug`. To create the `slug`, GitHub replaces special characters in the `name` string, changes all words to lowercase, and replaces spaces with a `-` separator. For example, `"My TEam Näme"` would become `my-team-name`.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`.
-   */
-  "teams/get-by-name": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-full"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a team
-   * @description To delete a team, the authenticated user must be an organization owner or team maintainer.
-   *
-   * If you are an organization owner, deleting a parent team will delete all of its child teams as well.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`.
-   */
-  "teams/delete-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update a team
-   * @description To edit a team, the authenticated user must either be an organization owner or a team maintainer.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`.
-   */
-  "teams/update-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The name of the team. */
-          name?: string;
-          /** @description The description of the team. */
-          description?: string;
-          /**
-           * @description The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. When a team is nested, the `privacy` for parent teams cannot be `secret`. The options are:
-           * **For a non-nested team:**
-           *  * `secret` - only visible to organization owners and members of this team.
-           *  * `closed` - visible to all members of this organization.
-           * **For a parent or child team:**
-           *  * `closed` - visible to all members of this organization.
-           * @enum {string}
-           */
-          privacy?: "secret" | "closed";
-          /**
-           * @description The notification setting the team has chosen. Editing teams without specifying this parameter leaves `notification_setting` intact. The options are:
-           *  * `notifications_enabled` - team members receive notifications when the team is @mentioned.
-           *  * `notifications_disabled` - no one receives notifications.
-           * @enum {string}
-           */
-          notification_setting?:
-            | "notifications_enabled"
-            | "notifications_disabled";
-          /**
-           * @description **Deprecated**. The permission that new repositories will be added to the team with when none is specified.
-           * @default pull
-           * @enum {string}
-           */
-          permission?: "pull" | "push" | "admin";
-          /** @description The ID of a team to set as the parent team. */
-          parent_team_id?: number | null;
-        };
-      };
-    };
-    responses: {
-      /** @description Response when the updated information already exists */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-full"];
-        };
-      };
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["team-full"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List discussions
-   * @description List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions`.
-   */
-  "teams/list-discussions-in-org": {
-    parameters: {
-      query?: {
-        direction?: components["parameters"]["direction"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        /** @description Pinned discussions only filter */
-        pinned?: string;
-      };
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["team-discussion"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create a discussion
-   * @description Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions`.
-   */
-  "teams/create-discussion-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The discussion post's title. */
-          title: string;
-          /** @description The discussion post's body text. */
-          body: string;
-          /**
-           * @description Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post.
-           * @default false
-           */
-          private?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["team-discussion"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a discussion
-   * @description Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`.
-   */
-  "teams/get-discussion-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-discussion"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a discussion
-   * @description Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`.
-   */
-  "teams/delete-discussion-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update a discussion
-   * @description Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`.
-   */
-  "teams/update-discussion-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The discussion post's title. */
-          title?: string;
-          /** @description The discussion post's body text. */
-          body?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-discussion"];
-        };
-      };
-    };
-  };
-  /**
-   * List discussion comments
-   * @description List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * **Note:** You 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`.
-   */
-  "teams/list-discussion-comments-in-org": {
-    parameters: {
-      query?: {
-        direction?: components["parameters"]["direction"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["team-discussion-comment"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create a discussion comment
-   * @description Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   *
-   * **Note:** You 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`.
-   */
-  "teams/create-discussion-comment-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The discussion comment's body text. */
-          body: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["team-discussion-comment"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a discussion comment
-   * @description Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * **Note:** You 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}`.
-   */
-  "teams/get-discussion-comment-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-        comment_number: components["parameters"]["comment-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-discussion-comment"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a discussion comment
-   * @description Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * **Note:** You 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}`.
-   */
-  "teams/delete-discussion-comment-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-        comment_number: components["parameters"]["comment-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update a discussion comment
-   * @description Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`.
-   */
-  "teams/update-discussion-comment-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-        comment_number: components["parameters"]["comment-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The discussion comment's body text. */
-          body: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-discussion-comment"];
-        };
-      };
-    };
-  };
-  /**
-   * List reactions for a team discussion comment
-   * @description List the reactions to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * **Note:** You 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`.
-   */
-  "reactions/list-for-team-discussion-comment-in-org": {
-    parameters: {
-      query?: {
-        /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a team discussion comment. */
-        content?:
-          | "+1"
-          | "-1"
-          | "laugh"
-          | "confused"
-          | "heart"
-          | "hooray"
-          | "rocket"
-          | "eyes";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-        comment_number: components["parameters"]["comment-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["reaction"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create reaction for a team discussion comment
-   * @description Create a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment.
-   *
-   * **Note:** You 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`.
-   */
-  "reactions/create-for-team-discussion-comment-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-        comment_number: components["parameters"]["comment-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the team discussion comment.
-           * @enum {string}
-           */
-          content:
-            | "+1"
-            | "-1"
-            | "laugh"
-            | "confused"
-            | "heart"
-            | "hooray"
-            | "rocket"
-            | "eyes";
-        };
-      };
-    };
-    responses: {
-      /** @description Response when the reaction type has already been added to this team discussion comment */
-      200: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete team discussion comment reaction
-   * @description **Note:** You 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`.
-   *
-   * Delete a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "reactions/delete-for-team-discussion-comment": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-        comment_number: components["parameters"]["comment-number"];
-        reaction_id: components["parameters"]["reaction-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List reactions for a team discussion
-   * @description List the reactions to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * **Note:** You 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`.
-   */
-  "reactions/list-for-team-discussion-in-org": {
-    parameters: {
-      query?: {
-        /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a team discussion. */
-        content?:
-          | "+1"
-          | "-1"
-          | "laugh"
-          | "confused"
-          | "heart"
-          | "hooray"
-          | "rocket"
-          | "eyes";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["reaction"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create reaction for a team discussion
-   * @description Create a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`.
-   */
-  "reactions/create-for-team-discussion-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the team discussion.
-           * @enum {string}
-           */
-          content:
-            | "+1"
-            | "-1"
-            | "laugh"
-            | "confused"
-            | "heart"
-            | "hooray"
-            | "rocket"
-            | "eyes";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete team discussion reaction
-   * @description **Note:** You 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/reactions/:reaction_id`.
-   *
-   * Delete a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "reactions/delete-for-team-discussion": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        discussion_number: components["parameters"]["discussion-number"];
-        reaction_id: components["parameters"]["reaction-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List pending team invitations
-   * @description The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/invitations`.
-   */
-  "teams/list-pending-invitations-in-org": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["organization-invitation"][];
-        };
-      };
-    };
-  };
-  /**
-   * List team members
-   * @description Team members will include the members of child teams.
-   *
-   * To list members in a team, the team must be visible to the authenticated user.
-   */
-  "teams/list-members-in-org": {
-    parameters: {
-      query?: {
-        /** @description Filters members returned by their role in the team. */
-        role?: "member" | "maintainer" | "all";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-    };
-  };
-  /**
-   * Get team membership for a user
-   * @description Team members will include the members of child teams.
-   *
-   * To get a user's membership with a team, the team must be visible to the authenticated user.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/memberships/{username}`.
-   *
-   * **Note:**
-   * The response contains the `state` of the membership and the member's `role`.
-   *
-   * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/teams/teams#create-a-team).
-   */
-  "teams/get-membership-for-user-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-membership"];
-        };
-      };
-      /** @description if user has no team membership */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Add or update team membership for a user
-   * @description Adds an organization member to a team. An authenticated organization owner or team maintainer can add organization members to a team.
-   *
-   * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-   *
-   * An organization owner can add someone who is not part of the team's organization to a team. When an organization owner adds someone to a team who is not an organization member, this endpoint will send an invitation to the person via email. This newly-created membership will be in the "pending" state until the person accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team.
-   *
-   * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/memberships/{username}`.
-   */
-  "teams/add-or-update-membership-for-user-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        username: components["parameters"]["username"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The role that this user should have in the team.
-           * @default member
-           * @enum {string}
-           */
-          role?: "member" | "maintainer";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-membership"];
-        };
-      };
-      /** @description Forbidden if team synchronization is set up */
-      403: {
-        content: never;
-      };
-      /** @description Unprocessable Entity if you attempt to add an organization to a team */
-      422: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Remove team membership for a user
-   * @description To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team.
-   *
-   * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/memberships/{username}`.
-   */
-  "teams/remove-membership-for-user-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      /** @description Forbidden if team synchronization is set up */
-      403: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List team projects
-   * @description Lists the organization projects for a team.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects`.
-   */
-  "teams/list-projects-in-org": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["team-project"][];
-        };
-      };
-    };
-  };
-  /**
-   * Check team permissions for a project
-   * @description Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects/{project_id}`.
-   */
-  "teams/check-permissions-for-project-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        project_id: components["parameters"]["project-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-project"];
-        };
-      };
-      /** @description Not Found if project is not managed by this team */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Add or update team project permissions
-   * @description Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/projects/{project_id}`.
-   */
-  "teams/add-or-update-project-permissions-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        project_id: components["parameters"]["project-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The permission to grant to the team for this project. Default: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-           * @enum {string}
-           */
-          permission?: "read" | "write" | "admin";
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      /** @description Forbidden if the project is not owned by the organization */
-      403: {
-        content: {
-          "application/json": {
-            message?: string;
-            documentation_url?: string;
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Remove a project from a team
-   * @description Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. This endpoint removes the project from the team, but does not delete the project.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/projects/{project_id}`.
-   */
-  "teams/remove-project-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        project_id: components["parameters"]["project-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List team repositories
-   * @description Lists a team's repositories visible to the authenticated user.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`.
-   */
-  "teams/list-repos-in-org": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["minimal-repository"][];
-        };
-      };
-    };
-  };
-  /**
-   * Check team permissions for a repository
-   * @description 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.
-   *
-   * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `application/vnd.github.v3.repository+json` accept header.
-   *
-   * If a team doesn't have permission for the repository, you will receive a `404 Not Found` response status.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.
-   */
-  "teams/check-permissions-for-repo-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Alternative response with repository permissions */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-repository"];
-        };
-      };
-      /** @description Response if team has permission for the repository. This is the response when the repository media type hasn't been provded in the Accept header. */
-      204: {
-        content: never;
-      };
-      /** @description Not Found if team does not have permission for the repository */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Add or update team repository permissions
-   * @description 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 verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.
-   *
-   * For more information about the permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)".
-   */
-  "teams/add-or-update-repo-permissions-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The permission to grant the team on this repository. We accept the following permissions to be set: `pull`, `triage`, `push`, `maintain`, `admin` and you can also specify a custom repository role name, if the owning organization has defined any. If no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository.
-           * @default push
-           */
-          permission?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Remove a repository from a team
-   * @description If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.
-   */
-  "teams/remove-repo-in-org": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List child teams
-   * @description Lists the child teams of the team specified by `{team_slug}`.
-   *
-   * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`.
-   */
-  "teams/list-child-in-org": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        org: components["parameters"]["org"];
-        team_slug: components["parameters"]["team-slug"];
-      };
-    };
-    responses: {
-      /** @description if child teams exist */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["team"][];
-        };
-      };
-    };
-  };
-  /**
-   * Enable or disable a security feature for an organization
-   * @description Enables or disables the specified security feature for all eligible repositories in an organization.
-   *
-   * To use this endpoint, you must be an organization owner or be member of a team with the security manager role.
-   * A token with the 'write:org' scope is also required.
-   *
-   * GitHub Apps must have the `organization_administration:write` permission to use this endpoint.
-   *
-   * For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-   */
-  "orgs/enable-or-disable-security-product-on-all-org-repos": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-        security_product: components["parameters"]["security-product"];
-        enablement: components["parameters"]["org-security-product-enablement"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description CodeQL query suite to be used. If you specify the `query_suite` parameter, the default setup will be configured with this query suite only on all repositories that didn't have default setup already configured. It will not change the query suite on repositories that already have default setup configured.
-           * If you don't specify any `query_suite` in your request, the preferred query suite of the organization will be applied.
-           * @enum {string}
-           */
-          query_suite?: "default" | "extended";
-        };
-      };
-    };
-    responses: {
-      /** @description Action started */
-      204: {
-        content: never;
-      };
-      /** @description The action could not be taken due to an in progress enablement, or a policy is preventing enablement */
-      422: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get a project card
-   * @description Gets information about a project card.
-   */
-  "projects/get-card": {
-    parameters: {
-      path: {
-        card_id: components["parameters"]["card-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["project-card"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a project card
-   * @description Deletes a project card
-   */
-  "projects/delete-card": {
-    parameters: {
-      path: {
-        card_id: components["parameters"]["card-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      /** @description Forbidden */
-      403: {
-        content: {
-          "application/json": {
-            message?: string;
-            documentation_url?: string;
-            errors?: string[];
-          };
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Update an existing project card */
-  "projects/update-card": {
-    parameters: {
-      path: {
-        card_id: components["parameters"]["card-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The project card's note
-           * @example Update all gems
-           */
-          note?: string | null;
-          /**
-           * @description Whether or not the card is archived
-           * @example false
-           */
-          archived?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["project-card"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /** Move a project card */
-  "projects/move-card": {
-    parameters: {
-      path: {
-        card_id: components["parameters"]["card-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The position of the card in a column. Can be one of: `top`, `bottom`, or `after:<card_id>` to place after the specified card.
-           * @example bottom
-           */
-          position: string;
-          /**
-           * @description The unique identifier of the column the card should be moved to
-           * @example 42
-           */
-          column_id?: number;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": Record<string, never>;
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      /** @description Forbidden */
-      403: {
-        content: {
-          "application/json": {
-            message?: string;
-            documentation_url?: string;
-            errors?: {
-              code?: string;
-              message?: string;
-              resource?: string;
-              field?: string;
-            }[];
-          };
-        };
-      };
-      422: components["responses"]["validation_failed"];
-      /** @description Response */
-      503: {
-        content: {
-          "application/json": {
-            code?: string;
-            message?: string;
-            documentation_url?: string;
-            errors?: {
-              code?: string;
-              message?: string;
-            }[];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get a project column
-   * @description Gets information about a project column.
-   */
-  "projects/get-column": {
-    parameters: {
-      path: {
-        column_id: components["parameters"]["column-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["project-column"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a project column
-   * @description Deletes a project column.
-   */
-  "projects/delete-column": {
-    parameters: {
-      path: {
-        column_id: components["parameters"]["column-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /** Update an existing project column */
-  "projects/update-column": {
-    parameters: {
-      path: {
-        column_id: components["parameters"]["column-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Name of the project column
-           * @example Remaining tasks
-           */
-          name: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["project-column"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * List project cards
-   * @description Lists the project cards in a project.
-   */
-  "projects/list-cards": {
-    parameters: {
-      query?: {
-        /** @description Filters the project cards that are returned by the card's state. */
-        archived_state?: "all" | "archived" | "not_archived";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        column_id: components["parameters"]["column-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["project-card"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /** Create a project card */
-  "projects/create-card": {
-    parameters: {
-      path: {
-        column_id: components["parameters"]["column-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": OneOf<
-          [
-            {
-              /**
-               * @description The project card's note
-               * @example Update all gems
-               */
-              note: string | null;
-            },
-            {
-              /**
-               * @description The unique identifier of the content associated with the card
-               * @example 42
-               */
-              content_id: number;
-              /**
-               * @description The piece of content associated with the card
-               * @example PullRequest
-               */
-              content_type: string;
-            },
-          ]
-        >;
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["project-card"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      /** @description Validation failed */
-      422: {
-        content: {
-          "application/json":
-            | components["schemas"]["validation-error"]
-            | components["schemas"]["validation-error-simple"];
-        };
-      };
-      /** @description Response */
-      503: {
-        content: {
-          "application/json": {
-            code?: string;
-            message?: string;
-            documentation_url?: string;
-            errors?: {
-              code?: string;
-              message?: string;
-            }[];
-          };
-        };
-      };
-    };
-  };
-  /** Move a project column */
-  "projects/move-column": {
-    parameters: {
-      path: {
-        column_id: components["parameters"]["column-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The position of the column in a project. Can be one of: `first`, `last`, or `after:<column_id>` to place after the specified column.
-           * @example last
-           */
-          position: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": Record<string, never>;
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Get a project
-   * @description Gets a project by its `id`. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-   */
-  "projects/get": {
-    parameters: {
-      path: {
-        project_id: components["parameters"]["project-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["project"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Delete a project
-   * @description Deletes a project board. Returns a `404 Not Found` status if projects are disabled.
-   */
-  "projects/delete": {
-    parameters: {
-      path: {
-        project_id: components["parameters"]["project-id"];
-      };
-    };
-    responses: {
-      /** @description Delete Success */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      /** @description Forbidden */
-      403: {
-        content: {
-          "application/json": {
-            message?: string;
-            documentation_url?: string;
-            errors?: string[];
-          };
-        };
-      };
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-    };
-  };
-  /**
-   * Update a project
-   * @description Updates a project board's information. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-   */
-  "projects/update": {
-    parameters: {
-      path: {
-        project_id: components["parameters"]["project-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description Name of the project
-           * @example Week One Sprint
-           */
-          name?: string;
-          /**
-           * @description Body of the project
-           * @example This project represents the sprint of the first week in January
-           */
-          body?: string | null;
-          /**
-           * @description State of the project; either 'open' or 'closed'
-           * @example open
-           */
-          state?: string;
-          /**
-           * @description The baseline permission that all organization members have on this project
-           * @enum {string}
-           */
-          organization_permission?: "read" | "write" | "admin" | "none";
-          /** @description Whether or not this project can be seen by everyone. */
-          private?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["project"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      /** @description Forbidden */
-      403: {
-        content: {
-          "application/json": {
-            message?: string;
-            documentation_url?: string;
-            errors?: string[];
-          };
-        };
-      };
-      /** @description Not Found if the authenticated user does not have access to the project */
-      404: {
-        content: never;
-      };
-      410: components["responses"]["gone"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * List project collaborators
-   * @description Lists the collaborators for an organization project. For a project, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. You must be an organization owner or a project `admin` to list collaborators.
-   */
-  "projects/list-collaborators": {
-    parameters: {
-      query?: {
-        /** @description Filters the collaborators by their affiliation. `outside` means outside collaborators of a project that are not a member of the project's organization. `direct` means collaborators with permissions to a project, regardless of organization membership status. `all` means all collaborators the authenticated user can see. */
-        affiliation?: "outside" | "direct" | "all";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        project_id: components["parameters"]["project-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Add project collaborator
-   * @description Adds a collaborator to an organization project and sets their permission level. You must be an organization owner or a project `admin` to add a collaborator.
-   */
-  "projects/add-collaborator": {
-    parameters: {
-      path: {
-        project_id: components["parameters"]["project-id"];
-        username: components["parameters"]["username"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The permission to grant the collaborator.
-           * @default write
-           * @example write
-           * @enum {string}
-           */
-          permission?: "read" | "write" | "admin";
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove user as a collaborator
-   * @description Removes a collaborator from an organization project. You must be an organization owner or a project `admin` to remove a collaborator.
-   */
-  "projects/remove-collaborator": {
-    parameters: {
-      path: {
-        project_id: components["parameters"]["project-id"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get project permission for a user
-   * @description Returns the collaborator's permission level for an organization project. Possible values for the `permission` key: `admin`, `write`, `read`, `none`. You must be an organization owner or a project `admin` to review a user's permission level.
-   */
-  "projects/get-permission-for-user": {
-    parameters: {
-      path: {
-        project_id: components["parameters"]["project-id"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["project-collaborator-permission"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List project columns
-   * @description Lists the project columns in a project.
-   */
-  "projects/list-columns": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        project_id: components["parameters"]["project-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["project-column"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Create a project column
-   * @description Creates a new project column.
-   */
-  "projects/create-column": {
-    parameters: {
-      path: {
-        project_id: components["parameters"]["project-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Name of the project column
-           * @example Remaining tasks
-           */
-          name: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["project-column"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Get rate limit status for the authenticated user
-   * @description **Note:** Accessing this endpoint does not count against your REST API rate limit.
-   *
-   * Some categories of endpoints have custom rate limits that are separate from the rate limit governing the other REST API endpoints. For this reason, the API response categorizes your rate limit. Under `resources`, you'll see objects relating to different categories:
-   * * The `core` object provides your rate limit status for all non-search-related resources in the REST API.
-   * * The `search` object provides your rate limit status for the REST API for searching (excluding code searches). For more information, see "[Search](https://docs.github.com/rest/search)."
-   * * The `code_search` object provides your rate limit status for the REST API for searching code. For more information, see "[Search code](https://docs.github.com/rest/search/search#search-code)."
-   * * The `graphql` object provides your rate limit status for the GraphQL API. For more information, see "[Resource limitations](https://docs.github.com/graphql/overview/resource-limitations#rate-limit)."
-   * * The `integration_manifest` object provides your rate limit status for the `POST /app-manifests/{code}/conversions` operation. For more information, see "[Creating a GitHub App from a manifest](https://docs.github.com/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app-from-a-manifest#3-you-exchange-the-temporary-code-to-retrieve-the-app-configuration)."
-   * * The `dependency_snapshots` object provides your rate limit status for submitting snapshots to the dependency graph. For more information, see "[Dependency graph](https://docs.github.com/rest/dependency-graph)."
-   * * The `code_scanning_upload` object provides your rate limit status for uploading SARIF results to code scanning. For more information, see "[Uploading a SARIF file to GitHub](https://docs.github.com/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github)."
-   * * The `actions_runner_registration` object provides your rate limit status for registering self-hosted runners in GitHub Actions. For more information, see "[Self-hosted runners](https://docs.github.com/rest/actions/self-hosted-runners)."
-   * * The `source_import` object is no longer in use for any API endpoints, and it will be removed in the next API version. For more information about API versions, see "[API Versions](https://docs.github.com/rest/overview/api-versions)."
-   *
-   * **Note:** The `rate` object is deprecated. If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object.
-   */
-  "rate-limit/get": {
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          "X-RateLimit-Limit": components["headers"]["x-rate-limit-limit"];
-          "X-RateLimit-Remaining": components["headers"]["x-rate-limit-remaining"];
-          "X-RateLimit-Reset": components["headers"]["x-rate-limit-reset"];
-        };
-        content: {
-          "application/json": components["schemas"]["rate-limit-overview"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get a repository
-   * @description The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network.
-   *
-   * **Note:** In 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-   */
-  "repos/get": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["full-repository"];
-        };
-      };
-      301: components["responses"]["moved_permanently"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a repository
-   * @description Deleting a repository requires admin access. If OAuth is used, the `delete_repo` scope is required.
-   *
-   * If an organization owner has configured the organization to prevent members from deleting organization-owned
-   * repositories, you will get a `403 Forbidden` response.
-   */
-  "repos/delete": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      307: components["responses"]["temporary_redirect"];
-      /** @description If an organization owner has configured the organization to prevent members from deleting organization-owned repositories, a member will get this response: */
-      403: {
-        content: {
-          "application/json": {
-            message?: string;
-            documentation_url?: string;
-          };
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update a repository
-   * @description **Note**: To edit a repository's topics, use the [Replace all repository topics](https://docs.github.com/rest/repos/repos#replace-all-repository-topics) endpoint.
-   */
-  "repos/update": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The name of the repository. */
-          name?: string;
-          /** @description A short description of the repository. */
-          description?: string;
-          /** @description A URL with more information about the repository. */
-          homepage?: string;
-          /**
-           * @description Either `true` to make the repository private or `false` to make it public. Default: `false`.
-           * **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://docs.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private.
-           * @default false
-           */
-          private?: boolean;
-          /**
-           * @description The visibility of the repository.
-           * @enum {string}
-           */
-          visibility?: "public" | "private";
-          /**
-           * @description Specify which security and analysis features to enable or disable for the repository.
-           *
-           * To use this parameter, 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-           *
-           * For example, to enable GitHub Advanced Security, use this data in the body of the `PATCH` request:
-           * `{ "security_and_analysis": {"advanced_security": { "status": "enabled" } } }`.
-           *
-           * You can check which security and analysis features are currently enabled by using a `GET /repos/{owner}/{repo}` request.
-           */
-          security_and_analysis?: {
-            /** @description Use the `status` property to enable or disable GitHub Advanced Security for this repository. For more information, see "[About GitHub Advanced Security](/github/getting-started-with-github/learning-about-github/about-github-advanced-security)." */
-            advanced_security?: {
-              /** @description Can be `enabled` or `disabled`. */
-              status?: string;
-            };
-            /** @description Use the `status` property to enable or disable secret scanning for this repository. For more information, see "[About secret scanning](/code-security/secret-security/about-secret-scanning)." */
-            secret_scanning?: {
-              /** @description Can be `enabled` or `disabled`. */
-              status?: string;
-            };
-            /** @description Use the `status` property to enable or disable secret scanning push protection for this repository. For more information, see "[Protecting pushes with secret scanning](/code-security/secret-scanning/protecting-pushes-with-secret-scanning)." */
-            secret_scanning_push_protection?: {
-              /** @description Can be `enabled` or `disabled`. */
-              status?: string;
-            };
-          } | null;
-          /**
-           * @description Either `true` to enable issues for this repository or `false` to disable them.
-           * @default true
-           */
-          has_issues?: boolean;
-          /**
-           * @description Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.
-           * @default true
-           */
-          has_projects?: boolean;
-          /**
-           * @description Either `true` to enable the wiki for this repository or `false` to disable it.
-           * @default true
-           */
-          has_wiki?: boolean;
-          /**
-           * @description Either `true` to make this repo available as a template repository or `false` to prevent it.
-           * @default false
-           */
-          is_template?: boolean;
-          /** @description Updates the default branch for this repository. */
-          default_branch?: string;
-          /**
-           * @description Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
-           * @default true
-           */
-          allow_squash_merge?: boolean;
-          /**
-           * @description Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
-           * @default true
-           */
-          allow_merge_commit?: boolean;
-          /**
-           * @description Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
-           * @default true
-           */
-          allow_rebase_merge?: boolean;
-          /**
-           * @description Either `true` to allow auto-merge on pull requests, or `false` to disallow auto-merge.
-           * @default false
-           */
-          allow_auto_merge?: boolean;
-          /**
-           * @description Either `true` to allow automatically deleting head branches when pull requests are merged, or `false` to prevent automatic deletion.
-           * @default false
-           */
-          delete_branch_on_merge?: boolean;
-          /**
-           * @description Either `true` to always allow a pull request head branch that is behind its base branch to be updated even if it is not required to be up to date before merging, or false otherwise.
-           * @default false
-           */
-          allow_update_branch?: boolean;
-          /**
-           * @deprecated
-           * @description Either `true` to allow squash-merge commits to use pull request title, or `false` to use commit message. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
-           * @default false
-           */
-          use_squash_pr_title_as_default?: boolean;
-          /**
-           * @description The default value for a squash merge commit title:
-           *
-           * - `PR_TITLE` - default to the pull request's title.
-           * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-           * @enum {string}
-           */
-          squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-          /**
-           * @description The default value for a squash merge commit message:
-           *
-           * - `PR_BODY` - default to the pull request's body.
-           * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-           * - `BLANK` - default to a blank commit message.
-           * @enum {string}
-           */
-          squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-          /**
-           * @description The default value for a merge commit title.
-           *
-           * - `PR_TITLE` - default to the pull request's title.
-           * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-           * @enum {string}
-           */
-          merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-          /**
-           * @description The default value for a merge commit message.
-           *
-           * - `PR_TITLE` - default to the pull request's title.
-           * - `PR_BODY` - default to the pull request's body.
-           * - `BLANK` - default to a blank commit message.
-           * @enum {string}
-           */
-          merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-          /**
-           * @description Whether to archive this repository. `false` will unarchive a previously archived repository.
-           * @default false
-           */
-          archived?: boolean;
-          /**
-           * @description Either `true` to allow private forks, or `false` to prevent private forks.
-           * @default false
-           */
-          allow_forking?: boolean;
-          /**
-           * @description Either `true` to require contributors to sign off on web-based commits, or `false` to not require contributors to sign off on web-based commits.
-           * @default false
-           */
-          web_commit_signoff_required?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["full-repository"];
-        };
-      };
-      307: components["responses"]["temporary_redirect"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List artifacts for a repository
-   * @description Lists all artifacts for a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/list-artifacts-for-repo": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        name?: components["parameters"]["artifact-name"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            artifacts: components["schemas"]["artifact"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get an artifact
-   * @description Gets a specific artifact for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/get-artifact": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        artifact_id: components["parameters"]["artifact-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["artifact"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete an artifact
-   * @description Deletes an artifact for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-   */
-  "actions/delete-artifact": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        artifact_id: components["parameters"]["artifact-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Download an artifact
-   * @description Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in
-   * the response header to find the URL for the download. The `:archive_format` must be `zip`.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/download-artifact": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        artifact_id: components["parameters"]["artifact-id"];
-        archive_format: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      302: {
-        headers: {
-          Location: components["headers"]["location"];
-        };
-        content: never;
-      };
-      410: components["responses"]["gone"];
-    };
-  };
-  /**
-   * Get GitHub Actions cache usage for a repository
-   * @description Gets GitHub Actions cache usage for a repository.
-   * The 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.
-   * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/get-actions-cache-usage": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-cache-usage-by-repository"];
-        };
-      };
-    };
-  };
-  /**
-   * List GitHub Actions caches for a repository
-   * @description Lists the GitHub Actions caches for a repository.
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/get-actions-cache-list": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        ref?: components["parameters"]["actions-cache-git-ref-full"];
-        key?: components["parameters"]["actions-cache-key"];
-        sort?: components["parameters"]["actions-cache-list-sort"];
-        direction?: components["parameters"]["direction"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["actions-cache-list"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete GitHub Actions caches for a repository (using a cache key)
-   * @description Deletes one or more GitHub Actions caches for a repository, using a complete cache key. By default, all caches that match the provided key are deleted, but you can optionally provide a Git ref to restrict deletions to caches that match both the provided key and the Git ref.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   *
-   * GitHub Apps must have the `actions:write` permission to use this endpoint.
-   */
-  "actions/delete-actions-cache-by-key": {
-    parameters: {
-      query: {
-        key: components["parameters"]["actions-cache-key-required"];
-        ref?: components["parameters"]["actions-cache-git-ref-full"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-cache-list"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a GitHub Actions cache for a repository (using a cache ID)
-   * @description Deletes a GitHub Actions cache for a repository, using a cache ID.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   *
-   * GitHub Apps must have the `actions:write` permission to use this endpoint.
-   */
-  "actions/delete-actions-cache-by-id": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        cache_id: components["parameters"]["cache-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get a job for a workflow run
-   * @description Gets a specific job in a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/get-job-for-workflow-run": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        job_id: components["parameters"]["job-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["job"];
-        };
-      };
-    };
-  };
-  /**
-   * Download job logs for a workflow run
-   * @description Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look
-   * for `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can
-   * use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must
-   * have the `actions:read` permission to use this endpoint.
-   */
-  "actions/download-job-logs-for-workflow-run": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        job_id: components["parameters"]["job-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      302: {
-        headers: {
-          /** @example https://pipelines.actions.githubusercontent.com/ab1f3cCFPB34Nd6imvFxpGZH5hNlDp2wijMwl2gDoO0bcrrlJj/_apis/pipelines/1/jobs/19/signedlogcontent?urlExpires=2020-01-22T22%3A44%3A54.1389777Z&urlSigningMethod=HMACV1&urlSignature=2TUDfIg4fm36OJmfPy6km5QD5DLCOkBVzvhWZM8B%2BUY%3D */
-          Location?: string;
-        };
-        content: never;
-      };
-    };
-  };
-  /**
-   * Re-run a job from a workflow run
-   * @description Re-run a job and its dependent jobs in a workflow run.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `actions:write` permission to use this endpoint.
-   */
-  "actions/re-run-job-for-workflow-run": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        job_id: components["parameters"]["job-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description Whether to enable debug logging for the re-run.
-           * @default false
-           */
-          enable_debug_logging?: boolean;
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Get the customization template for an OIDC subject claim for a repository
-   * @description Gets the customization template for an OpenID Connect (OIDC) subject claim.
-   * You must authenticate using an access token with the `repo` scope to use this
-   * endpoint. GitHub Apps must have the `organization_administration:read` permission to use this endpoint.
-   */
-  "actions/get-custom-oidc-sub-claim-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Status response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["oidc-custom-sub-repo"];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Set the customization template for an OIDC subject claim for a repository
-   * @description Sets the customization template and `opt-in` or `opt-out` flag for an OpenID Connect (OIDC) subject claim for a repository.
-   * You must authenticate using an access token with the `repo` scope to use this
-   * endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-   */
-  "actions/set-custom-oidc-sub-claim-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Whether to use the default template or not. If `true`, the `include_claim_keys` field is ignored. */
-          use_default: boolean;
-          /** @description Array of unique strings. Each claim key can only contain alphanumeric characters and underscores. */
-          include_claim_keys?: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Empty response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * List repository organization secrets
-   * @description Lists all organization secrets shared with a repository without revealing their encrypted
-   * values.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/list-repo-organization-secrets": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            secrets: components["schemas"]["actions-secret"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * List repository organization variables
-   * @description Lists all organiation variables shared with a repository.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `actions_variables:read` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/list-repo-organization-variables": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["variables-per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            variables: components["schemas"]["actions-variable"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get GitHub Actions permissions for a repository
-   * @description Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions and reusable workflows allowed to run in the repository.
-   *
-   * 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.
-   */
-  "actions/get-github-actions-permissions-repository": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-repository-permissions"];
-        };
-      };
-    };
-  };
-  /**
-   * Set GitHub Actions permissions for a repository
-   * @description Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions and reusable workflows in the repository.
-   *
-   * 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.
-   */
-  "actions/set-github-actions-permissions-repository": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          enabled: components["schemas"]["actions-enabled"];
-          allowed_actions?: components["schemas"]["allowed-actions"];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get the level of access for workflows outside of the repository
-   * @description Gets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository.
-   * This endpoint only applies to private repositories.
-   * For more information, see "[Allowing access to components in a private repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)."
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the
-   * repository `administration` permission to use this endpoint.
-   */
-  "actions/get-workflow-access-to-repository": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-workflow-access-to-repository"];
-        };
-      };
-    };
-  };
-  /**
-   * Set the level of access for workflows outside of the repository
-   * @description Sets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository.
-   * This endpoint only applies to private repositories.
-   * For more information, see "[Allowing access to components in a private repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)".
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the
-   * repository `administration` permission to use this endpoint.
-   */
-  "actions/set-workflow-access-to-repository": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["actions-workflow-access-to-repository"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get allowed actions and reusable workflows for a repository
-   * @description Gets the settings for selected actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)."
-   *
-   * 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.
-   */
-  "actions/get-allowed-actions-repository": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["selected-actions"];
-        };
-      };
-    };
-  };
-  /**
-   * Set allowed actions and reusable workflows for a repository
-   * @description Sets the actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)."
-   *
-   * 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.
-   */
-  "actions/set-allowed-actions-repository": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": components["schemas"]["selected-actions"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get default workflow permissions for a repository
-   * @description Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository,
-   * as well as if GitHub Actions can submit approving pull request reviews.
-   * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/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)."
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the repository `administration` permission to use this API.
-   */
-  "actions/get-github-actions-default-workflow-permissions-repository": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-get-default-workflow-permissions"];
-        };
-      };
-    };
-  };
-  /**
-   * Set default workflow permissions for a repository
-   * @description Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, and sets if GitHub Actions
-   * can submit approving pull request reviews.
-   * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/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)."
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the repository `administration` permission to use this API.
-   */
-  "actions/set-github-actions-default-workflow-permissions-repository": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["actions-set-default-workflow-permissions"];
-      };
-    };
-    responses: {
-      /** @description Success response */
-      204: {
-        content: never;
-      };
-      /** @description Conflict response when changing a setting is prevented by the owning organization */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List self-hosted runners for a repository
-   * @description Lists all self-hosted runners configured in a repository.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/list-self-hosted-runners-for-repo": {
-    parameters: {
-      query?: {
-        /** @description The name of a self-hosted runner. */
-        name?: string;
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            runners: components["schemas"]["runner"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * List runner applications for a repository
-   * @description Lists binaries for the runner application that you can download and run.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/list-runner-applications-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["runner-application"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create configuration for a just-in-time runner for a repository
-   * @description Generates a configuration that can be passed to the runner application at startup.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/generate-runner-jitconfig-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the new runner. */
-          name: string;
-          /** @description The ID of the runner group to register the runner to. */
-          runner_group_id: number;
-          /** @description The names of the custom labels to add to the runner. **Minimum items**: 1. **Maximum items**: 100. */
-          labels: string[];
-          /**
-           * @description The working directory to be used for job execution, relative to the runner install directory.
-           * @default _work
-           */
-          work_folder?: string;
-        };
-      };
-    };
-    responses: {
-      201: components["responses"]["actions_runner_jitconfig"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Create a registration token for a repository
-   * @description Returns a token that you can pass to the `config` script. The token
-   * expires after one hour.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   *
-   * Example using registration token:
-   *
-   * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided
-   * by this endpoint.
-   *
-   * ```config.sh --url https://github.com/octo-org/octo-repo-artifacts --token TOKEN```
-   */
-  "actions/create-registration-token-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["authentication-token"];
-        };
-      };
-    };
-  };
-  /**
-   * Create a remove token for a repository
-   * @description Returns a token that you can pass to remove a self-hosted runner from
-   * a repository. The token expires after one hour.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   *
-   * Example using remove token:
-   *
-   * To remove your self-hosted runner from a repository, replace TOKEN with
-   * the remove token provided by this endpoint.
-   *
-   * ```config.sh remove --token TOKEN```
-   */
-  "actions/create-remove-token-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["authentication-token"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a self-hosted runner for a repository
-   * @description Gets a specific self-hosted runner configured in a repository.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/get-self-hosted-runner-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        runner_id: components["parameters"]["runner-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["runner"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a self-hosted runner from a repository
-   * @description Forces the removal of a self-hosted runner from a repository. You can use this endpoint to completely remove the runner when the machine you were using no longer exists.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/delete-self-hosted-runner-from-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        runner_id: components["parameters"]["runner-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List labels for a self-hosted runner for a repository
-   * @description Lists all labels for a self-hosted runner configured in a repository.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/list-labels-for-self-hosted-runner-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        runner_id: components["parameters"]["runner-id"];
-      };
-    };
-    responses: {
-      200: components["responses"]["actions_runner_labels"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Set custom labels for a self-hosted runner for a repository
-   * @description Remove all previous custom labels and set the new custom labels for a specific
-   * self-hosted runner configured in a repository.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/set-custom-labels-for-self-hosted-runner-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        runner_id: components["parameters"]["runner-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The names of the custom labels to set for the runner. You can pass an empty array to remove all custom labels. */
-          labels: string[];
-        };
-      };
-    };
-    responses: {
-      200: components["responses"]["actions_runner_labels"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Add custom labels to a self-hosted runner for a repository
-   * @description Add custom labels to a self-hosted runner configured in a repository.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/add-custom-labels-to-self-hosted-runner-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        runner_id: components["parameters"]["runner-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The names of the custom labels to add to the runner. */
-          labels: string[];
-        };
-      };
-    };
-    responses: {
-      200: components["responses"]["actions_runner_labels"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Remove all custom labels from a self-hosted runner for a repository
-   * @description Remove all custom labels from a self-hosted runner configured in a
-   * repository. Returns the remaining read-only labels from the runner.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/remove-all-custom-labels-from-self-hosted-runner-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        runner_id: components["parameters"]["runner-id"];
-      };
-    };
-    responses: {
-      200: components["responses"]["actions_runner_labels_readonly"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Remove a custom label from a self-hosted runner for a repository
-   * @description Remove a custom label from a self-hosted runner configured
-   * in a repository. Returns the remaining labels from the runner.
-   *
-   * This endpoint returns a `404 Not Found` status if the custom label is not
-   * present on the runner.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-   * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-   */
-  "actions/remove-custom-label-from-self-hosted-runner-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        runner_id: components["parameters"]["runner-id"];
-        name: components["parameters"]["runner-label-name"];
-      };
-    };
-    responses: {
-      200: components["responses"]["actions_runner_labels"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * List workflow runs for a repository
-   * @description 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](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).
-   *
-   * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/list-workflow-runs-for-repo": {
-    parameters: {
-      query?: {
-        actor?: components["parameters"]["actor"];
-        branch?: components["parameters"]["workflow-run-branch"];
-        event?: components["parameters"]["event"];
-        status?: components["parameters"]["workflow-run-status"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        created?: components["parameters"]["created"];
-        exclude_pull_requests?: components["parameters"]["exclude-pull-requests"];
-        check_suite_id?: components["parameters"]["workflow-run-check-suite-id"];
-        head_sha?: components["parameters"]["workflow-run-head-sha"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            workflow_runs: components["schemas"]["workflow-run"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get a workflow run
-   * @description Gets a specific workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/get-workflow-run": {
-    parameters: {
-      query?: {
-        exclude_pull_requests?: components["parameters"]["exclude-pull-requests"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["workflow-run"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a workflow run
-   * @description Delete a specific workflow run. Anyone with write access to the repository can use this endpoint. If the repository is
-   * private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:write` permission to use
-   * this endpoint.
-   */
-  "actions/delete-workflow-run": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get the review history for a workflow run
-   * @description Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/get-reviews-for-run": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["environment-approvals"][];
-        };
-      };
-    };
-  };
-  /**
-   * Approve a workflow run for a fork pull request
-   * @description Approves a workflow run for a pull request from a public fork of a first time contributor. For more information, see ["Approving workflow runs from public forks](https://docs.github.com/actions/managing-workflow-runs/approving-workflow-runs-from-public-forks)."
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-   */
-  "actions/approve-workflow-run": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List workflow run artifacts
-   * @description Lists artifacts for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/list-workflow-run-artifacts": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        name?: components["parameters"]["artifact-name"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            artifacts: components["schemas"]["artifact"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get a workflow run attempt
-   * @description Gets a specific workflow run attempt. Anyone with read access to the repository
-   * can use this endpoint. If the repository is private you must use an access token
-   * with the `repo` scope. GitHub Apps must have the `actions:read` permission to
-   * use this endpoint.
-   */
-  "actions/get-workflow-run-attempt": {
-    parameters: {
-      query?: {
-        exclude_pull_requests?: components["parameters"]["exclude-pull-requests"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-        attempt_number: components["parameters"]["attempt-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["workflow-run"];
-        };
-      };
-    };
-  };
-  /**
-   * List jobs for a workflow run attempt
-   * @description Lists jobs for a specific workflow run attempt. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).
-   */
-  "actions/list-jobs-for-workflow-run-attempt": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-        attempt_number: components["parameters"]["attempt-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            jobs: components["schemas"]["job"][];
-          };
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Download workflow run attempt logs
-   * @description Gets a redirect URL to download an archive of log files for a specific workflow run attempt. This link expires after
-   * 1 minute. Look for `Location:` in the response header to find the URL for the download. Anyone with read access to
-   * the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/download-workflow-run-attempt-logs": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-        attempt_number: components["parameters"]["attempt-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      302: {
-        headers: {
-          /** @example https://pipelines.actions.githubusercontent.com/ab1f3cCFPB34Nd6imvFxpGZH5hNlDp2wijMwl2gDoO0bcrrlJj/_apis/pipelines/1/runs/19/signedlogcontent?urlExpires=2020-01-22T22%3A44%3A54.1389777Z&urlSigningMethod=HMACV1&urlSignature=2TUDfIg4fm36OJmfPy6km5QD5DLCOkBVzvhWZM8B%2BUY%3D */
-          Location?: string;
-        };
-        content: never;
-      };
-    };
-  };
-  /**
-   * Cancel a workflow run
-   * @description Cancels a workflow run using its `id`.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `actions:write` permission to use this endpoint.
-   */
-  "actions/cancel-workflow-run": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      202: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      409: components["responses"]["conflict"];
-    };
-  };
-  /**
-   * Review custom deployment protection rules for a workflow run
-   * @description Approve or reject custom deployment protection rules provided by a GitHub App for a workflow run. For more information, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
-   *
-   * **Note:** GitHub Apps can only review their own custom deployment protection rules.
-   * To approve or reject pending deployments that are waiting for review from a specific person or team, see [`POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments`](/rest/actions/workflow-runs#review-pending-deployments-for-a-workflow-run).
-   *
-   * If the repository is private, you must use an access token with the `repo` scope.
-   * GitHub Apps must have read and write permission for **Deployments** to use this endpoint.
-   */
-  "actions/review-custom-gates-for-run": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json":
-          | components["schemas"]["review-custom-gates-comment-required"]
-          | components["schemas"]["review-custom-gates-state-required"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Force cancel a workflow run
-   * @description Cancels a workflow run and bypasses conditions that would otherwise cause a workflow execution to continue, such as an `always()` condition on a job.
-   * You should only use this endpoint to cancel a workflow run when the workflow run is not responding to [`POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel`](/rest/actions/workflow-runs#cancel-a-workflow-run).
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `actions:write` permission to use this endpoint.
-   */
-  "actions/force-cancel-workflow-run": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      202: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      409: components["responses"]["conflict"];
-    };
-  };
-  /**
-   * List jobs for a workflow run
-   * @description Lists jobs for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).
-   */
-  "actions/list-jobs-for-workflow-run": {
-    parameters: {
-      query?: {
-        /** @description Filters jobs by their `completed_at` timestamp. `latest` returns jobs from the most recent execution of the workflow run. `all` returns all jobs for a workflow run, including from old executions of the workflow run. */
-        filter?: "latest" | "all";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            jobs: components["schemas"]["job"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Download workflow run logs
-   * @description Gets a redirect URL to download an archive of log files for a workflow run. This link expires after 1 minute. Look for
-   * `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can use
-   * this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have
-   * the `actions:read` permission to use this endpoint.
-   */
-  "actions/download-workflow-run-logs": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      302: {
-        headers: {
-          /** @example https://pipelines.actions.githubusercontent.com/ab1f3cCFPB34Nd6imvFxpGZH5hNlDp2wijMwl2gDoO0bcrrlJj/_apis/pipelines/1/runs/19/signedlogcontent?urlExpires=2020-01-22T22%3A44%3A54.1389777Z&urlSigningMethod=HMACV1&urlSignature=2TUDfIg4fm36OJmfPy6km5QD5DLCOkBVzvhWZM8B%2BUY%3D */
-          Location?: string;
-        };
-        content: never;
-      };
-    };
-  };
-  /**
-   * Delete workflow run logs
-   * @description Deletes all logs for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-   */
-  "actions/delete-workflow-run-logs": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Get pending deployments for a workflow run
-   * @description Get all deployment environments for a workflow run that are waiting for protection rules to pass.
-   *
-   * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/get-pending-deployments-for-run": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pending-deployment"][];
-        };
-      };
-    };
-  };
-  /**
-   * Review pending deployments for a workflow run
-   * @description Approve or reject pending deployments that are waiting on approval by a required reviewer.
-   *
-   * Required reviewers with read access to the repository contents and deployments can use this endpoint. Required reviewers must authenticate using an access token with the `repo` scope to use this endpoint.
-   */
-  "actions/review-pending-deployments-for-run": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The list of environment ids to approve or reject
-           * @example [
-           *   161171787,
-           *   161171795
-           * ]
-           */
-          environment_ids: number[];
-          /**
-           * @description Whether to approve or reject deployment to the specified environments.
-           * @example approved
-           * @enum {string}
-           */
-          state: "approved" | "rejected";
-          /**
-           * @description A comment to accompany the deployment review
-           * @example Ship it!
-           */
-          comment: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["deployment"][];
-        };
-      };
-    };
-  };
-  /**
-   * Re-run a workflow
-   * @description Re-runs your workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-   */
-  "actions/re-run-workflow": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description Whether to enable debug logging for the re-run.
-           * @default false
-           */
-          enable_debug_logging?: boolean;
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-    };
-  };
-  /**
-   * Re-run failed jobs from a workflow run
-   * @description Re-run all of the failed jobs and their dependent jobs in a workflow run using the `id` of the workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint.
-   */
-  "actions/re-run-workflow-failed-jobs": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description Whether to enable debug logging for the re-run.
-           * @default false
-           */
-          enable_debug_logging?: boolean;
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-    };
-  };
-  /**
-   * Get workflow run usage
-   * @description Gets the number of billable minutes and total run time for a specific workflow run. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
-   *
-   * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/get-workflow-run-usage": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        run_id: components["parameters"]["run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["workflow-run-usage"];
-        };
-      };
-    };
-  };
-  /**
-   * List repository secrets
-   * @description Lists all secrets available in a repository without revealing their encrypted
-   * values.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/list-repo-secrets": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            secrets: components["schemas"]["actions-secret"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get a repository public key
-   * @description Gets your public key, which you need to encrypt secrets. You need to
-   * encrypt a secret before you can create or update secrets.
-   *
-   * Anyone with read access to the repository can use this endpoint.
-   * If the repository is private you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/get-repo-public-key": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-public-key"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a repository secret
-   * @description Gets a single repository secret without revealing its encrypted value.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/get-repo-secret": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-secret"];
-        };
-      };
-    };
-  };
-  /**
-   * Create or update a repository secret
-   * @description Creates or updates a repository secret with an encrypted value. Encrypt your secret using
-   * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/create-or-update-repo-secret": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get a repository public key](https://docs.github.com/rest/actions/secrets#get-a-repository-public-key) endpoint. */
-          encrypted_value?: string;
-          /** @description ID of the key you used to encrypt the secret. */
-          key_id?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response when creating a secret */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      /** @description Response when updating a secret */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Delete a repository secret
-   * @description Deletes a secret in a repository using the secret name.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/delete-repo-secret": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List repository variables
-   * @description Lists all repository variables.
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `actions_variables:read` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/list-repo-variables": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["variables-per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            variables: components["schemas"]["actions-variable"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Create a repository variable
-   * @description Creates a repository variable that you can reference in a GitHub Actions workflow.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `actions_variables:write` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/create-repo-variable": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the variable. */
-          name: string;
-          /** @description The value of the variable. */
-          value: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a repository variable
-   * @description Gets a specific variable in a repository.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `actions_variables:read` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/get-repo-variable": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        name: components["parameters"]["variable-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-variable"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a repository variable
-   * @description Deletes a repository variable using the variable name.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `actions_variables:write` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/delete-repo-variable": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        name: components["parameters"]["variable-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update a repository variable
-   * @description Updates a repository variable that you can reference in a GitHub Actions workflow.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `actions_variables:write` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/update-repo-variable": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        name: components["parameters"]["variable-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the variable. */
-          name?: string;
-          /** @description The value of the variable. */
-          value?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List repository workflows
-   * @description Lists the workflows in a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/list-repo-workflows": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            workflows: components["schemas"]["workflow"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get a workflow
-   * @description Gets a specific workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/get-workflow": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        workflow_id: components["parameters"]["workflow-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["workflow"];
-        };
-      };
-    };
-  };
-  /**
-   * Disable a workflow
-   * @description Disables a workflow and sets the `state` of the workflow to `disabled_manually`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-   */
-  "actions/disable-workflow": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        workflow_id: components["parameters"]["workflow-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Create a workflow dispatch event
-   * @description You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`.
-   *
-   * You must configure your GitHub Actions workflow to run when the [`workflow_dispatch` webhook](/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch) event occurs. The `inputs` are configured in the workflow file. For more information about how to configure the `workflow_dispatch` event in the workflow file, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch)."
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. For more information, see "[Creating a personal access token for the command line](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line)."
-   */
-  "actions/create-workflow-dispatch": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        workflow_id: components["parameters"]["workflow-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The git reference for the workflow. The reference can be a branch or tag name. */
-          ref: string;
-          /** @description Input keys and values configured in the workflow file. The maximum number of properties is 10. Any default properties configured in the workflow file will be used when `inputs` are omitted. */
-          inputs?: {
-            [key: string]: unknown;
-          };
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Enable a workflow
-   * @description Enables a workflow and sets the `state` of the workflow to `active`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-   */
-  "actions/enable-workflow": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        workflow_id: components["parameters"]["workflow-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List workflow runs for a workflow
-   * @description List all workflow runs for a workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).
-   *
-   * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope.
-   */
-  "actions/list-workflow-runs": {
-    parameters: {
-      query?: {
-        actor?: components["parameters"]["actor"];
-        branch?: components["parameters"]["workflow-run-branch"];
-        event?: components["parameters"]["event"];
-        status?: components["parameters"]["workflow-run-status"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        created?: components["parameters"]["created"];
-        exclude_pull_requests?: components["parameters"]["exclude-pull-requests"];
-        check_suite_id?: components["parameters"]["workflow-run-check-suite-id"];
-        head_sha?: components["parameters"]["workflow-run-head-sha"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        workflow_id: components["parameters"]["workflow-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            workflow_runs: components["schemas"]["workflow-run"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get workflow usage
-   * @description Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
-   *
-   * You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "actions/get-workflow-usage": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        workflow_id: components["parameters"]["workflow-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["workflow-usage"];
-        };
-      };
-    };
-  };
-  /**
-   * List repository activities
-   * @description Lists a detailed history of changes to a repository, such as pushes, merges, force pushes, and branch changes, and associates these changes with commits and users.
-   *
-   * For more information about viewing repository activity,
-   * see "[Viewing activity and data for your repository](https://docs.github.com/repositories/viewing-activity-and-data-for-your-repository)."
-   */
-  "repos/list-activities": {
-    parameters: {
-      query?: {
-        direction?: components["parameters"]["direction"];
-        per_page?: components["parameters"]["per-page"];
-        before?: components["parameters"]["pagination-before"];
-        after?: components["parameters"]["pagination-after"];
-        /**
-         * @description The Git reference for the activities you want to list.
-         *
-         * The `ref` for a branch can be formatted either as `refs/heads/BRANCH_NAME` or `BRANCH_NAME`, where `BRANCH_NAME` is the name of your branch.
-         */
-        ref?: string;
-        /** @description The GitHub username to use to filter by the actor who performed the activity. */
-        actor?: string;
-        /**
-         * @description The time period to filter by.
-         *
-         * For example, `day` will filter for activity that occurred in the past 24 hours, and `week` will filter for activity that occurred in the past 7 days (168 hours).
-         */
-        time_period?: "day" | "week" | "month" | "quarter" | "year";
-        /**
-         * @description The activity type to filter by.
-         *
-         * For example, you can choose to filter by "force_push", to see all force pushes to the repository.
-         */
-        activity_type?:
-          | "push"
-          | "force_push"
-          | "branch_creation"
-          | "branch_deletion"
-          | "pr_merge"
-          | "merge_queue_merge";
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["activity"][];
-        };
-      };
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * List assignees
-   * @description Lists the [available assignees](https://docs.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository.
-   */
-  "issues/list-assignees": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Check if a user can be assigned
-   * @description Checks if a user has permission to be assigned to an issue in this repository.
-   *
-   * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned.
-   *
-   * Otherwise a `404` status code is returned.
-   */
-  "issues/check-user-can-be-assigned": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        assignee: string;
-      };
-    };
-    responses: {
-      /** @description If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned. */
-      204: {
-        content: never;
-      };
-      /** @description Otherwise a `404` status code is returned. */
-      404: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-    };
-  };
-  /**
-   * List all autolinks of a repository
-   * @description This returns a list of autolinks configured for the given repository.
-   *
-   * Information about autolinks are only available to repository administrators.
-   */
-  "repos/list-autolinks": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["autolink"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create an autolink reference for a repository
-   * @description Users with admin access to the repository can create an autolink.
-   */
-  "repos/create-autolink": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description This prefix appended by certain characters will generate a link any time it is found in an issue, pull request, or commit. */
-          key_prefix: string;
-          /** @description The URL must contain `<num>` for the reference number. `<num>` matches different characters depending on the value of `is_alphanumeric`. */
-          url_template: string;
-          /**
-           * @description Whether this autolink reference matches alphanumeric characters. If true, the `<num>` parameter of the `url_template` matches alphanumeric characters `A-Z` (case insensitive), `0-9`, and `-`. If false, this autolink reference only matches numeric characters.
-           * @default true
-           */
-          is_alphanumeric?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/autolinks/1 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["autolink"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get an autolink reference of a repository
-   * @description This returns a single autolink reference by ID that was configured for the given repository.
-   *
-   * Information about autolinks are only available to repository administrators.
-   */
-  "repos/get-autolink": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        autolink_id: components["parameters"]["autolink-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["autolink"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete an autolink reference from a repository
-   * @description This deletes a single autolink reference by ID that was configured for the given repository.
-   *
-   * Information about autolinks are only available to repository administrators.
-   */
-  "repos/delete-autolink": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        autolink_id: components["parameters"]["autolink-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Check if automated security fixes are enabled for a repository
-   * @description Shows whether automated security fixes are enabled, disabled or paused for a repository. The authenticated user must have admin read access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/articles/configuring-automated-security-fixes)".
-   */
-  "repos/check-automated-security-fixes": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response if dependabot is enabled */
-      200: {
-        content: {
-          "application/json": components["schemas"]["check-automated-security-fixes"];
-        };
-      };
-      /** @description Not Found if dependabot is not enabled for the repository */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Enable automated security fixes
-   * @description Enables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/articles/configuring-automated-security-fixes)".
-   */
-  "repos/enable-automated-security-fixes": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Disable automated security fixes
-   * @description Disables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/articles/configuring-automated-security-fixes)".
-   */
-  "repos/disable-automated-security-fixes": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /** List branches */
-  "repos/list-branches": {
-    parameters: {
-      query?: {
-        /** @description Setting to `true` returns only protected branches. When set to `false`, only unprotected branches are returned. Omitting this parameter returns all branches. */
-        protected?: boolean;
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["short-branch"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Get a branch */
-  "repos/get-branch": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["branch-with-protection"];
-        };
-      };
-      301: components["responses"]["moved_permanently"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get branch protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   */
-  "repos/get-branch-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["branch-protection"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update branch protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Protecting a branch requires admin or owner permissions to the repository.
-   *
-   * **Note**: Passing new arrays of `users` and `teams` replaces their previous values.
-   *
-   * **Note**: The list of users, apps, and teams in total is limited to 100 items.
-   */
-  "repos/update-branch-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Require status checks to pass before merging. Set to `null` to disable. */
-          required_status_checks: {
-            /** @description Require branches to be up to date before merging. */
-            strict: boolean;
-            /**
-             * @deprecated
-             * @description **Deprecated**: The list of status checks to require in order to merge into this branch. If any of these checks have recently been set by a particular GitHub App, they will be required to come from that app in future for the branch to merge. Use `checks` instead of `contexts` for more fine-grained control.
-             */
-            contexts: string[];
-            /** @description The list of status checks to require in order to merge into this branch. */
-            checks?: {
-              /** @description The name of the required check */
-              context: string;
-              /** @description The ID of the GitHub App that must provide this check. Omit this field to automatically select the GitHub App that has recently provided this check, or any app if it was not set by a GitHub App. Pass -1 to explicitly allow any app to set the status. */
-              app_id?: number;
-            }[];
-          } | null;
-          /** @description Enforce all configured restrictions for administrators. Set to `true` to enforce required status checks for repository administrators. Set to `null` to disable. */
-          enforce_admins: boolean | null;
-          /** @description Require at least one approving review on a pull request, before merging. Set to `null` to disable. */
-          required_pull_request_reviews: {
-            /** @description Specify which users, teams, and apps can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories. */
-            dismissal_restrictions?: {
-              /** @description The list of user `login`s with dismissal access */
-              users?: string[];
-              /** @description The list of team `slug`s with dismissal access */
-              teams?: string[];
-              /** @description The list of app `slug`s with dismissal access */
-              apps?: string[];
-            };
-            /** @description Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit. */
-            dismiss_stale_reviews?: boolean;
-            /** @description Blocks merging pull requests until [code owners](https://docs.github.com/articles/about-code-owners/) review them. */
-            require_code_owner_reviews?: boolean;
-            /** @description Specify the number of reviewers required to approve pull requests. Use a number between 1 and 6 or 0 to not require reviewers. */
-            required_approving_review_count?: number;
-            /**
-             * @description Whether the most recent push must be approved by someone other than the person who pushed it. Default: `false`.
-             * @default false
-             */
-            require_last_push_approval?: boolean;
-            /** @description Allow specific users, teams, or apps to bypass pull request requirements. */
-            bypass_pull_request_allowances?: {
-              /** @description The list of user `login`s allowed to bypass pull request requirements. */
-              users?: string[];
-              /** @description The list of team `slug`s allowed to bypass pull request requirements. */
-              teams?: string[];
-              /** @description The list of app `slug`s allowed to bypass pull request requirements. */
-              apps?: string[];
-            };
-          } | null;
-          /** @description Restrict who can push to the protected branch. User, app, and team `restrictions` are only available for organization-owned repositories. Set to `null` to disable. */
-          restrictions: {
-            /** @description The list of user `login`s with push access */
-            users: string[];
-            /** @description The list of team `slug`s with push access */
-            teams: string[];
-            /** @description The list of app `slug`s with push access */
-            apps?: string[];
-          } | null;
-          /** @description Enforces a linear commit Git history, which prevents anyone from pushing merge commits to a branch. Set to `true` to enforce a linear commit history. Set to `false` to disable a linear commit Git history. Your repository must allow squash merging or rebase merging before you can enable a linear commit history. Default: `false`. For more information, see "[Requiring a linear commit history](https://docs.github.com/github/administering-a-repository/requiring-a-linear-commit-history)" in the GitHub Help documentation. */
-          required_linear_history?: boolean;
-          /** @description Permits force pushes to the protected branch by anyone with write access to the repository. Set to `true` to allow force pushes. Set to `false` or `null` to block force pushes. Default: `false`. For more information, see "[Enabling force pushes to a protected branch](https://docs.github.com/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch)" in the GitHub Help documentation." */
-          allow_force_pushes?: boolean | null;
-          /** @description Allows deletion of the protected branch by anyone with write access to the repository. Set to `false` to prevent deletion of the protected branch. Default: `false`. For more information, see "[Enabling force pushes to a protected branch](https://docs.github.com/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch)" in the GitHub Help documentation. */
-          allow_deletions?: boolean;
-          /** @description If set to `true`, the `restrictions` branch protection settings which limits who can push will also block pushes which create new branches, unless the push is initiated by a user, team, or app which has the ability to push. Set to `true` to restrict new branch creation. Default: `false`. */
-          block_creations?: boolean;
-          /** @description Requires all conversations on code to be resolved before a pull request can be merged into a branch that matches this rule. Set to `false` to disable. Default: `false`. */
-          required_conversation_resolution?: boolean;
-          /**
-           * @description Whether to set the branch as read-only. If this is true, users will not be able to push to the branch. Default: `false`.
-           * @default false
-           */
-          lock_branch?: boolean;
-          /**
-           * @description Whether users can pull changes from upstream when the branch is locked. Set to `true` to allow fork syncing. Set to `false` to prevent fork syncing. Default: `false`.
-           * @default false
-           */
-          allow_fork_syncing?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["protected-branch"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Delete branch protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   */
-  "repos/delete-branch-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Get admin branch protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   */
-  "repos/get-admin-branch-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["protected-branch-admin-enforced"];
-        };
-      };
-    };
-  };
-  /**
-   * Set admin branch protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
-   */
-  "repos/set-admin-branch-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["protected-branch-admin-enforced"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete admin branch protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
-   */
-  "repos/delete-admin-branch-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get pull request review protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   */
-  "repos/get-pull-request-review-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["protected-branch-pull-request-review"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete pull request review protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   */
-  "repos/delete-pull-request-review-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update pull request review protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
-   *
-   * **Note**: Passing new arrays of `users` and `teams` replaces their previous values.
-   */
-  "repos/update-pull-request-review-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description Specify which users, teams, and apps can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories. */
-          dismissal_restrictions?: {
-            /** @description The list of user `login`s with dismissal access */
-            users?: string[];
-            /** @description The list of team `slug`s with dismissal access */
-            teams?: string[];
-            /** @description The list of app `slug`s with dismissal access */
-            apps?: string[];
-          };
-          /** @description Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit. */
-          dismiss_stale_reviews?: boolean;
-          /** @description Blocks merging pull requests until [code owners](https://docs.github.com/articles/about-code-owners/) have reviewed. */
-          require_code_owner_reviews?: boolean;
-          /** @description Specifies the number of reviewers required to approve pull requests. Use a number between 1 and 6 or 0 to not require reviewers. */
-          required_approving_review_count?: number;
-          /**
-           * @description Whether the most recent push must be approved by someone other than the person who pushed it. Default: `false`
-           * @default false
-           */
-          require_last_push_approval?: boolean;
-          /** @description Allow specific users, teams, or apps to bypass pull request requirements. */
-          bypass_pull_request_allowances?: {
-            /** @description The list of user `login`s allowed to bypass pull request requirements. */
-            users?: string[];
-            /** @description The list of team `slug`s allowed to bypass pull request requirements. */
-            teams?: string[];
-            /** @description The list of app `slug`s allowed to bypass pull request requirements. */
-            apps?: string[];
-          };
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["protected-branch-pull-request-review"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get commit signature protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://docs.github.com/articles/signing-commits-with-gpg) in GitHub Help.
-   *
-   * **Note**: You must enable branch protection to require signed commits.
-   */
-  "repos/get-commit-signature-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["protected-branch-admin-enforced"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create commit signature protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits.
-   */
-  "repos/create-commit-signature-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["protected-branch-admin-enforced"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete commit signature protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits.
-   */
-  "repos/delete-commit-signature-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get status checks protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   */
-  "repos/get-status-checks-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["status-check-policy"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Remove status check protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   */
-  "repos/remove-status-check-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update status check protection
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled.
-   */
-  "repos/update-status-check-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description Require branches to be up to date before merging. */
-          strict?: boolean;
-          /**
-           * @deprecated
-           * @description **Deprecated**: The list of status checks to require in order to merge into this branch. If any of these checks have recently been set by a particular GitHub App, they will be required to come from that app in future for the branch to merge. Use `checks` instead of `contexts` for more fine-grained control.
-           */
-          contexts?: string[];
-          /** @description The list of status checks to require in order to merge into this branch. */
-          checks?: {
-            /** @description The name of the required check */
-            context: string;
-            /** @description The ID of the GitHub App that must provide this check. Omit this field to automatically select the GitHub App that has recently provided this check, or any app if it was not set by a GitHub App. Pass -1 to explicitly allow any app to set the status. */
-            app_id?: number;
-          }[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["status-check-policy"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get all status check contexts
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   */
-  "repos/get-all-status-check-contexts": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": string[];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Set status check contexts
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   */
-  "repos/set-status-check-contexts": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The name of the status checks */
-          contexts: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": string[];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Add status check contexts
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   */
-  "repos/add-status-check-contexts": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The name of the status checks */
-          contexts: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": string[];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove status check contexts
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   */
-  "repos/remove-status-check-contexts": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The name of the status checks */
-          contexts: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": string[];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get access restrictions
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Lists who has access to this protected branch.
-   *
-   * **Note**: Users, apps, and teams `restrictions` are only available for organization-owned repositories.
-   */
-  "repos/get-access-restrictions": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["branch-restriction-policy"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete access restrictions
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Disables the ability to restrict who can push to this branch.
-   */
-  "repos/delete-access-restrictions": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get apps with access to the protected branch
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Lists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
-   */
-  "repos/get-apps-with-access-to-protected-branch": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["integration"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Set app access restrictions
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
-   */
-  "repos/set-app-access-restrictions": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The GitHub Apps that have push access to this branch. Use the slugified version of the app name. **Note**: The list of users, apps, and teams in total is limited to 100 items. */
-          apps: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["integration"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Add app access restrictions
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Grants the specified apps push access for this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
-   */
-  "repos/add-app-access-restrictions": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The GitHub Apps that have push access to this branch. Use the slugified version of the app name. **Note**: The list of users, apps, and teams in total is limited to 100 items. */
-          apps: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["integration"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove app access restrictions
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Removes the ability of an app to push to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
-   */
-  "repos/remove-app-access-restrictions": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The GitHub Apps that have push access to this branch. Use the slugified version of the app name. **Note**: The list of users, apps, and teams in total is limited to 100 items. */
-          apps: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["integration"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get teams with access to the protected branch
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Lists the teams who have push access to this branch. The list includes child teams.
-   */
-  "repos/get-teams-with-access-to-protected-branch": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Set team access restrictions
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. Team restrictions include child teams.
-   */
-  "repos/set-team-access-restrictions": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The slug values for teams */
-          teams: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Add team access restrictions
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Grants the specified teams push access for this branch. You can also give push access to child teams.
-   */
-  "repos/add-team-access-restrictions": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The slug values for teams */
-          teams: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove team access restrictions
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Removes the ability of a team to push to this branch. You can also remove push access for child teams.
-   */
-  "repos/remove-team-access-restrictions": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The slug values for teams */
-          teams: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get users with access to the protected branch
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Lists the people who have push access to this branch.
-   */
-  "repos/get-users-with-access-to-protected-branch": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Set user access restrictions
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people.
-   *
-   * | Type    | Description                                                                                                                   |
-   * | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
-   * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
-   */
-  "repos/set-user-access-restrictions": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The username for users */
-          users: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Add user access restrictions
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Grants the specified people push access for this branch.
-   *
-   * | Type    | Description                                                                                                                   |
-   * | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
-   * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
-   */
-  "repos/add-user-access-restrictions": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The username for users */
-          users: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove user access restrictions
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Removes the ability of a user to push to this branch.
-   *
-   * | Type    | Description                                                                                                                                   |
-   * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
-   * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
-   */
-  "repos/remove-user-access-restrictions": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The username for users */
-          users: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Rename a branch
-   * @description Renames a branch in a repository.
-   *
-   * **Note:** Although the API responds immediately, the branch rename process might take some extra time to complete in the background. You won't be able to push to the old branch name while the rename process is in progress. For more information, see "[Renaming a branch](https://docs.github.com/github/administering-a-repository/renaming-a-branch)".
-   *
-   * The permissions required to use this endpoint depends on whether you are renaming the default branch.
-   *
-   * To rename a non-default branch:
-   *
-   * * Users must have push access.
-   * * GitHub Apps must have the `contents:write` repository permission.
-   *
-   * To rename the default branch:
-   *
-   * * Users must have admin or owner permissions.
-   * * GitHub Apps must have the `administration:write` repository permission.
-   */
-  "repos/rename-branch": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The new name of the branch. */
-          new_name: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["branch-with-protection"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Create a check run
-   * @description **Note:** The 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.
-   *
-   * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs.
-   *
-   * In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs.
-   */
-  "checks/create": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the check. For example, "code-coverage". */
-          name: string;
-          /** @description The SHA of the commit. */
-          head_sha: string;
-          /** @description The URL of the integrator's site that has the full details of the check. If the integrator does not provide this, then the homepage of the GitHub app is used. */
-          details_url?: string;
-          /** @description A reference for the run on the integrator's system. */
-          external_id?: string;
-          /**
-           * @description The current status.
-           * @default queued
-           * @enum {string}
-           */
-          status?: "queued" | "in_progress" | "completed";
-          /**
-           * Format: date-time
-           * @description The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
-           */
-          started_at?: string;
-          /**
-           * @description **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check.
-           * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`. You cannot change a check run conclusion to `stale`, only GitHub can set this.
-           * @enum {string}
-           */
-          conclusion?:
-            | "action_required"
-            | "cancelled"
-            | "failure"
-            | "neutral"
-            | "success"
-            | "skipped"
-            | "stale"
-            | "timed_out";
-          /**
-           * Format: date-time
-           * @description The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
-           */
-          completed_at?: string;
-          /** @description Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. */
-          output?: {
-            /** @description The title of the check run. */
-            title: string;
-            /** @description The summary of the check run. This parameter supports Markdown. **Maximum length**: 65535 characters. */
-            summary: string;
-            /** @description The details of the check run. This parameter supports Markdown. **Maximum length**: 65535 characters. */
-            text?: string;
-            /** @description Adds information from your analysis to specific lines of code. Annotations are visible on GitHub in the **Checks** and **Files changed** tab of the pull request. The Checks API limits the number of annotations to a maximum of 50 per API request. To create more than 50 annotations, you have to make multiple requests to the [Update a check run](https://docs.github.com/rest/reference/checks#update-a-check-run) endpoint. Each time you update the check run, annotations are appended to the list of annotations that already exist for the check run. GitHub Actions are limited to 10 warning annotations and 10 error annotations per step. For details about how you can view annotations on GitHub, see "[About status checks](https://docs.github.com/articles/about-status-checks#checks)". */
-            annotations?: {
-              /** @description The path of the file to add an annotation to. For example, `assets/css/main.css`. */
-              path: string;
-              /** @description The start line of the annotation. Line numbers start at 1. */
-              start_line: number;
-              /** @description The end line of the annotation. */
-              end_line: number;
-              /** @description The start column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. Column numbers start at 1. */
-              start_column?: number;
-              /** @description The end column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. */
-              end_column?: number;
-              /**
-               * @description The level of the annotation.
-               * @enum {string}
-               */
-              annotation_level: "notice" | "warning" | "failure";
-              /** @description A short description of the feedback for these lines of code. The maximum size is 64 KB. */
-              message: string;
-              /** @description The title that represents the annotation. The maximum size is 255 characters. */
-              title?: string;
-              /** @description Details about this annotation. The maximum size is 64 KB. */
-              raw_details?: string;
-            }[];
-            /** @description Adds images to the output displayed in the GitHub pull request UI. */
-            images?: {
-              /** @description The alternative text for the image. */
-              alt: string;
-              /** @description The full URL of the image. */
-              image_url: string;
-              /** @description A short image description. */
-              caption?: string;
-            }[];
-          };
-          /** @description Displays a button on GitHub that can be clicked to alert your app to do additional tasks. For example, a code linting app can display a button that automatically fixes detected errors. The button created in this object is displayed after the check run completes. When a user clicks the button, GitHub sends the [`check_run.requested_action` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) to your app. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://docs.github.com/rest/reference/checks#check-runs-and-requested-actions)." */
-          actions?: {
-            /** @description The text to be displayed on a button in the web UI. The maximum size is 20 characters. */
-            label: string;
-            /** @description A short explanation of what this action would do. The maximum size is 40 characters. */
-            description: string;
-            /** @description A reference for the action on the integrator's system. The maximum size is 20 characters. */
-            identifier: string;
-          }[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["check-run"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a check run
-   * @description **Note:** The 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.
-   *
-   * Gets a single check run using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth apps and authenticated users must have the `repo` scope to get check runs in a private repository.
-   */
-  "checks/get": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        check_run_id: components["parameters"]["check-run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["check-run"];
-        };
-      };
-    };
-  };
-  /**
-   * Update a check run
-   * @description Updates a check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to edit check runs.
-   *
-   * **Note:** The endpoints to manage checks only look 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.
-   */
-  "checks/update": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        check_run_id: components["parameters"]["check-run-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the check. For example, "code-coverage". */
-          name?: string;
-          /** @description The URL of the integrator's site that has the full details of the check. */
-          details_url?: string;
-          /** @description A reference for the run on the integrator's system. */
-          external_id?: string;
-          /**
-           * Format: date-time
-           * @description This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
-           */
-          started_at?: string;
-          /**
-           * @description The current status.
-           * @enum {string}
-           */
-          status?: "queued" | "in_progress" | "completed";
-          /**
-           * @description **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check.
-           * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`. You cannot change a check run conclusion to `stale`, only GitHub can set this.
-           * @enum {string}
-           */
-          conclusion?:
-            | "action_required"
-            | "cancelled"
-            | "failure"
-            | "neutral"
-            | "success"
-            | "skipped"
-            | "stale"
-            | "timed_out";
-          /**
-           * Format: date-time
-           * @description The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
-           */
-          completed_at?: string;
-          /** @description Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. */
-          output?: {
-            /** @description **Required**. */
-            title?: string;
-            /** @description Can contain Markdown. */
-            summary: string;
-            /** @description Can contain Markdown. */
-            text?: string;
-            /** @description Adds information from your analysis to specific lines of code. Annotations are visible in GitHub's pull request UI. Annotations are visible in GitHub's pull request UI. The Checks API limits the number of annotations to a maximum of 50 per API request. To create more than 50 annotations, you have to make multiple requests to the [Update a check run](https://docs.github.com/rest/checks/runs#update-a-check-run) endpoint. Each time you update the check run, annotations are appended to the list of annotations that already exist for the check run. GitHub Actions are limited to 10 warning annotations and 10 error annotations per step. For details about annotations in the UI, see "[About status checks](https://docs.github.com/articles/about-status-checks#checks)". */
-            annotations?: {
-              /** @description The path of the file to add an annotation to. For example, `assets/css/main.css`. */
-              path: string;
-              /** @description The start line of the annotation. Line numbers start at 1. */
-              start_line: number;
-              /** @description The end line of the annotation. */
-              end_line: number;
-              /** @description The start column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. Column numbers start at 1. */
-              start_column?: number;
-              /** @description The end column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. */
-              end_column?: number;
-              /**
-               * @description The level of the annotation.
-               * @enum {string}
-               */
-              annotation_level: "notice" | "warning" | "failure";
-              /** @description A short description of the feedback for these lines of code. The maximum size is 64 KB. */
-              message: string;
-              /** @description The title that represents the annotation. The maximum size is 255 characters. */
-              title?: string;
-              /** @description Details about this annotation. The maximum size is 64 KB. */
-              raw_details?: string;
-            }[];
-            /** @description Adds images to the output displayed in the GitHub pull request UI. */
-            images?: {
-              /** @description The alternative text for the image. */
-              alt: string;
-              /** @description The full URL of the image. */
-              image_url: string;
-              /** @description A short image description. */
-              caption?: string;
-            }[];
-          };
-          /** @description Possible further actions the integrator can perform, which a user may trigger. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://docs.github.com/rest/guides/using-the-rest-api-to-interact-with-checks#check-runs-and-requested-actions)." */
-          actions?: {
-            /** @description The text to be displayed on a button in the web UI. The maximum size is 20 characters. */
-            label: string;
-            /** @description A short explanation of what this action would do. The maximum size is 40 characters. */
-            description: string;
-            /** @description A reference for the action on the integrator's system. The maximum size is 20 characters. */
-            identifier: string;
-          }[];
-        } & (
-          | {
-              /** @enum {unknown} */
-              status?: "completed";
-              [key: string]: unknown;
-            }
-          | {
-              /** @enum {unknown} */
-              status?: "queued" | "in_progress";
-              [key: string]: unknown;
-            }
-        );
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["check-run"];
-        };
-      };
-    };
-  };
-  /**
-   * List check run annotations
-   * @description Lists annotations for a check run using the annotation `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get annotations for a check run. OAuth apps and authenticated users must have the `repo` scope to get annotations for a check run in a private repository.
-   */
-  "checks/list-annotations": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        check_run_id: components["parameters"]["check-run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["check-annotation"][];
-        };
-      };
-    };
-  };
-  /**
-   * Rerequest a check run
-   * @description Triggers GitHub to rerequest an existing check run, without pushing new code to a repository. This endpoint will trigger the [`check_run` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) event with the action `rerequested`. When a check run is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared.
-   *
-   * To rerequest a check run, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository.
-   *
-   * For more information about how to re-run GitHub Actions jobs, see "[Re-run a job from a workflow run](https://docs.github.com/rest/actions/workflow-runs#re-run-a-job-from-a-workflow-run)".
-   */
-  "checks/rerequest-run": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        check_run_id: components["parameters"]["check-run-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      /** @description Forbidden if the check run is not rerequestable or doesn't belong to the authenticated GitHub App */
-      403: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      /** @description Validation error if the check run is not rerequestable */
-      422: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-    };
-  };
-  /**
-   * Create a check suite
-   * @description **Note:** The 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`.
-   *
-   * By default, check suites are automatically created when you create a [check run](https://docs.github.com/rest/checks/runs). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Update repository preferences for check suites](https://docs.github.com/rest/checks/suites#update-repository-preferences-for-check-suites)". Your GitHub App must have the `checks:write` permission to create check suites.
-   */
-  "checks/create-suite": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The sha of the head commit. */
-          head_sha: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response when the suite already exists */
-      200: {
-        content: {
-          "application/json": components["schemas"]["check-suite"];
-        };
-      };
-      /** @description Response when the suite was created */
-      201: {
-        content: {
-          "application/json": components["schemas"]["check-suite"];
-        };
-      };
-    };
-  };
-  /**
-   * Update repository preferences for check suites
-   * @description Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://docs.github.com/rest/checks/suites#create-a-check-suite). You must have admin permissions in the repository to set preferences for check suites.
-   */
-  "checks/set-suites-preferences": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Enables or disables automatic creation of CheckSuite events upon pushes to the repository. Enabled by default. */
-          auto_trigger_checks?: {
-            /** @description The `id` of the GitHub App. */
-            app_id: number;
-            /**
-             * @description Set to `true` to enable automatic creation of CheckSuite events upon pushes to the repository, or `false` to disable them.
-             * @default true
-             */
-            setting: boolean;
-          }[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["check-suite-preference"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a check suite
-   * @description **Note:** The 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`.
-   *
-   * Gets a single check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check suites. OAuth apps and authenticated users must have the `repo` scope to get check suites in a private repository.
-   */
-  "checks/get-suite": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        check_suite_id: components["parameters"]["check-suite-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["check-suite"];
-        };
-      };
-    };
-  };
-  /**
-   * List check runs in a check suite
-   * @description Lists check runs for a check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth apps and authenticated users must have the `repo` scope to get check runs in a private repository.
-   *
-   * **Note:** The endpoints to manage checks only look 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.
-   */
-  "checks/list-for-suite": {
-    parameters: {
-      query?: {
-        check_name?: components["parameters"]["check-name"];
-        status?: components["parameters"]["status"];
-        /** @description Filters check runs by their `completed_at` timestamp. `latest` returns the most recent check runs. */
-        filter?: "latest" | "all";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        check_suite_id: components["parameters"]["check-suite-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            check_runs: components["schemas"]["check-run"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Rerequest a check suite
-   * @description Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://docs.github.com/webhooks/event-payloads/#check_suite) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared.
-   *
-   * To rerequest a check suite, your GitHub App must have the `checks:write` permission on a private repository or pull access to a public repository.
-   */
-  "checks/rerequest-suite": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        check_suite_id: components["parameters"]["check-suite-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-    };
-  };
-  /**
-   * List code scanning alerts for a repository
-   * @description Lists all open code scanning alerts for the default branch (usually `main`
-   * or `master`). You must use an access token with the `security_events` scope to use
-   * this endpoint with private repos, the `public_repo` scope also grants permission to read
-   * security events on public repos only. GitHub Apps must have the `security_events` read
-   * permission to use this endpoint.
-   *
-   * The response includes a `most_recent_instance` object.
-   * This provides details of the most recent instance of this alert
-   * for the default branch or for the specified Git reference
-   * (if you used `ref` in the request).
-   */
-  "code-scanning/list-alerts-for-repo": {
-    parameters: {
-      query?: {
-        tool_name?: components["parameters"]["tool-name"];
-        tool_guid?: components["parameters"]["tool-guid"];
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-        ref?: components["parameters"]["git-ref"];
-        direction?: components["parameters"]["direction"];
-        /** @description The property by which to sort the results. . `number` is deprecated - we recommend that you use `created` instead. */
-        sort?: "created" | "number" | "updated";
-        /** @description Set to `open`, `closed, `fixed`, or `dismissed` to list code scanning alerts in a specific state. */
-        state?: components["schemas"]["code-scanning-alert-state"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-alert-items"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["code_scanning_forbidden_read"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Get a code scanning alert
-   * @description Gets a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint with private repos, the `public_repo` scope also grants permission to read security events on public repos only. GitHub Apps must have the `security_events` read permission to use this endpoint.
-   */
-  "code-scanning/get-alert": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        alert_number: components["parameters"]["alert-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-alert"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["code_scanning_forbidden_read"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Update a code scanning alert
-   * @description Updates the status of a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint with private repositories. You can also use tokens with the `public_repo` scope for public repositories only. GitHub Apps must have the `security_events` write permission to use this endpoint.
-   */
-  "code-scanning/update-alert": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        alert_number: components["parameters"]["alert-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          state: components["schemas"]["code-scanning-alert-set-state"];
-          dismissed_reason?: components["schemas"]["code-scanning-alert-dismissed-reason"];
-          dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-alert"];
-        };
-      };
-      403: components["responses"]["code_scanning_forbidden_write"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List instances of a code scanning alert
-   * @description Lists all instances of the specified code scanning alert.
-   * You must use an access token with the `security_events` scope to use this endpoint with private repos,
-   * the `public_repo` scope also grants permission to read security events on public repos only.
-   * GitHub Apps must have the `security_events` read permission to use this endpoint.
-   */
-  "code-scanning/list-alert-instances": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-        ref?: components["parameters"]["git-ref"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        alert_number: components["parameters"]["alert-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-alert-instance"][];
-        };
-      };
-      403: components["responses"]["code_scanning_forbidden_read"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List code scanning analyses for a repository
-   * @description Lists the details of all code scanning analyses for a repository,
-   * starting with the most recent.
-   * The response is paginated and you can use the `page` and `per_page` parameters
-   * to list the analyses you're interested in.
-   * By default 30 analyses are listed per page.
-   *
-   * The `rules_count` field in the response give the number of rules
-   * that were run in the analysis.
-   * For very old analyses this data is not available,
-   * and `0` is returned in this field.
-   *
-   * You must use an access token with the `security_events` scope to use this endpoint with private repos,
-   * the `public_repo` scope also grants permission to read security events on public repos only.
-   * GitHub Apps must have the `security_events` read permission to use this endpoint.
-   *
-   * **Deprecation notice**:
-   * The `tool_name` field is deprecated and will, in future, not be included in the response for this endpoint. The example response reflects this change. The tool name can now be found inside the `tool` field.
-   */
-  "code-scanning/list-recent-analyses": {
-    parameters: {
-      query?: {
-        tool_name?: components["parameters"]["tool-name"];
-        tool_guid?: components["parameters"]["tool-guid"];
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-        /** @description The Git reference for the analyses you want to list. The `ref` for a branch can be formatted either as `refs/heads/<branch name>` or simply `<branch name>`. To reference a pull request use `refs/pull/<number>/merge`. */
-        ref?: components["schemas"]["code-scanning-ref"];
-        /** @description Filter analyses belonging to the same SARIF upload. */
-        sarif_id?: components["schemas"]["code-scanning-analysis-sarif-id"];
-        direction?: components["parameters"]["direction"];
-        /** @description The property by which to sort the results. */
-        sort?: "created";
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-analysis"][];
-        };
-      };
-      403: components["responses"]["code_scanning_forbidden_read"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Get a code scanning analysis for a repository
-   * @description Gets a specified code scanning analysis for a repository.
-   * You must use an access token with the `security_events` scope to use this endpoint with private repos,
-   * the `public_repo` scope also grants permission to read security events on public repos only.
-   * GitHub Apps must have the `security_events` read permission to use this endpoint.
-   *
-   * The default JSON response contains fields that describe the analysis.
-   * This includes the Git reference and commit SHA to which the analysis relates,
-   * the datetime of the analysis, the name of the code scanning tool,
-   * and the number of alerts.
-   *
-   * The `rules_count` field in the default response give the number of rules
-   * that were run in the analysis.
-   * For very old analyses this data is not available,
-   * and `0` is returned in this field.
-   *
-   * If you use the Accept header `application/sarif+json`,
-   * the response contains the analysis data that was uploaded.
-   * This is formatted as
-   * [SARIF version 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html).
-   */
-  "code-scanning/get-analysis": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description The ID of the analysis, as returned from the `GET /repos/{owner}/{repo}/code-scanning/analyses` operation. */
-        analysis_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-analysis"];
-          "application/json+sarif": {
-            [key: string]: unknown;
-          };
-        };
-      };
-      403: components["responses"]["code_scanning_forbidden_read"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Delete a code scanning analysis from a repository
-   * @description Deletes a specified code scanning analysis from a repository. For
-   * private repositories, you must use an access token with the `repo` scope. For public repositories,
-   * you must use an access token with `public_repo` scope.
-   * GitHub Apps must have the `security_events` write permission to use this endpoint.
-   *
-   * You can delete one analysis at a time.
-   * To delete a series of analyses, start with the most recent analysis and work backwards.
-   * Conceptually, the process is similar to the undo function in a text editor.
-   *
-   * When you list the analyses for a repository,
-   * one or more will be identified as deletable in the response:
-   *
-   * ```
-   * "deletable": true
-   * ```
-   *
-   * An analysis is deletable when it's the most recent in a set of analyses.
-   * Typically, a repository will have multiple sets of analyses
-   * for each enabled code scanning tool,
-   * where a set is determined by a unique combination of analysis values:
-   *
-   * * `ref`
-   * * `tool`
-   * * `category`
-   *
-   * If you attempt to delete an analysis that is not the most recent in a set,
-   * you'll get a 400 response with the message:
-   *
-   * ```
-   * Analysis specified is not deletable.
-   * ```
-   *
-   * The response from a successful `DELETE` operation provides you with
-   * two alternative URLs for deleting the next analysis in the set:
-   * `next_analysis_url` and `confirm_delete_url`.
-   * Use the `next_analysis_url` URL if you want to avoid accidentally deleting the final analysis
-   * in a set. This is a useful option if you want to preserve at least one analysis
-   * for the specified tool in your repository.
-   * Use the `confirm_delete_url` URL if you are content to remove all analyses for a tool.
-   * When you delete the last analysis in a set, the value of `next_analysis_url` and `confirm_delete_url`
-   * in the 200 response is `null`.
-   *
-   * As an example of the deletion process,
-   * let's imagine that you added a workflow that configured a particular code scanning tool
-   * to analyze the code in a repository. This tool has added 15 analyses:
-   * 10 on the default branch, and another 5 on a topic branch.
-   * You therefore have two separate sets of analyses for this tool.
-   * You've now decided that you want to remove all of the analyses for the tool.
-   * To do this you must make 15 separate deletion requests.
-   * To start, you must find an analysis that's identified as deletable.
-   * Each set of analyses always has one that's identified as deletable.
-   * Having found the deletable analysis for one of the two sets,
-   * delete this analysis and then continue deleting the next analysis in the set until they're all deleted.
-   * Then repeat the process for the second set.
-   * The procedure therefore consists of a nested loop:
-   *
-   * **Outer loop**:
-   * * List the analyses for the repository, filtered by tool.
-   * * Parse this list to find a deletable analysis. If found:
-   *
-   *   **Inner loop**:
-   *   * Delete the identified analysis.
-   *   * Parse the response for the value of `confirm_delete_url` and, if found, use this in the next iteration.
-   *
-   * The above process assumes that you want to remove all trace of the tool's analyses from the GitHub user interface, for the specified repository, and it therefore uses the `confirm_delete_url` value. Alternatively, you could use the `next_analysis_url` value, which would leave the last analysis in each set undeleted to avoid removing a tool's analysis entirely.
-   */
-  "code-scanning/delete-analysis": {
-    parameters: {
-      query?: {
-        /** @description Allow deletion if the specified analysis is the last in a set. If you attempt to delete the final analysis in a set without setting this parameter to `true`, you'll get a 400 response with the message: `Analysis is last of its type and deletion may result in the loss of historical alert data. Please specify confirm_delete.` */
-        confirm_delete?: string | null;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description The ID of the analysis, as returned from the `GET /repos/{owner}/{repo}/code-scanning/analyses` operation. */
-        analysis_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-analysis-deletion"];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      403: components["responses"]["code_scanning_forbidden_write"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List CodeQL databases for a repository
-   * @description Lists the CodeQL databases that are available in a repository.
-   *
-   * For private repositories, you must use an access token with the `security_events` scope.
-   * For public repositories, you can use tokens with the `security_events` or `public_repo` scope.
-   * GitHub Apps must have the `contents` read permission to use this endpoint.
-   */
-  "code-scanning/list-codeql-databases": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-codeql-database"][];
-        };
-      };
-      403: components["responses"]["code_scanning_forbidden_read"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Get a CodeQL database for a repository
-   * @description Gets a CodeQL database for a language in a repository.
-   *
-   * By default this endpoint returns JSON metadata about the CodeQL database. To
-   * download the CodeQL database binary content, set the `Accept` header of the request
-   * to [`application/zip`](https://docs.github.com/rest/overview/media-types), and make sure
-   * your HTTP client is configured to follow redirects or use the `Location` header
-   * to make a second request to get the redirect URL.
-   *
-   * For private repositories, you must use an access token with the `security_events` scope.
-   * For public repositories, you can use tokens with the `security_events` or `public_repo` scope.
-   * GitHub Apps must have the `contents` read permission to use this endpoint.
-   */
-  "code-scanning/get-codeql-database": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description The language of the CodeQL database. */
-        language: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-codeql-database"];
-        };
-      };
-      302: components["responses"]["found"];
-      403: components["responses"]["code_scanning_forbidden_read"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Get a code scanning default setup configuration
-   * @description Gets a code scanning default setup configuration.
-   * You must use an access token with the `repo` scope to use this endpoint with private repos or the `public_repo`
-   * scope for public repos. GitHub Apps must have the `repo` write permission to use this endpoint.
-   */
-  "code-scanning/get-default-setup": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-default-setup"];
-        };
-      };
-      403: components["responses"]["code_scanning_forbidden_read"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Update a code scanning default setup configuration
-   * @description Updates a code scanning default setup configuration.
-   * You must use an access token with the `repo` scope to use this endpoint with private repos or the `public_repo`
-   * scope for public repos. GitHub Apps must have the `repo` write permission to use this endpoint.
-   */
-  "code-scanning/update-default-setup": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["code-scanning-default-setup-update"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      /** @description Response */
-      202: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-default-setup-update-response"];
-        };
-      };
-      403: components["responses"]["code_scanning_forbidden_write"];
-      404: components["responses"]["not_found"];
-      409: components["responses"]["code_scanning_conflict"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Upload an analysis as SARIF data
-   * @description Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint for private repositories. You can also use tokens with the `public_repo` scope for public repositories only. GitHub Apps must have the `security_events` write permission to use this endpoint. For troubleshooting information, see "[Troubleshooting SARIF uploads](https://docs.github.com/code-security/code-scanning/troubleshooting-sarif)."
-   *
-   * There are two places where you can upload code scanning results.
-   *  - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see "[Triaging code scanning alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)."
-   *  - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see "[Managing code scanning alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)."
-   *
-   * You must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:
-   *
-   * ```
-   * gzip -c analysis-data.sarif | base64 -w0
-   * ```
-   * <br>
-   * SARIF upload supports a maximum number of entries per the following data objects, and an analysis will be rejected if any of these objects is above its maximum value. For some objects, there are additional values over which the entries will be ignored while keeping the most important entries whenever applicable.
-   * To get the most out of your analysis when it includes data above the supported limits, try to optimize the analysis configuration. For example, for the CodeQL tool, identify and remove the most noisy queries. For more information, see "[SARIF results exceed one or more limits](https://docs.github.com/code-security/code-scanning/troubleshooting-sarif/results-exceed-limit)."
-   *
-   *
-   * | **SARIF data**                   | **Maximum values** | **Additional limits**                                                            |
-   * |----------------------------------|:------------------:|----------------------------------------------------------------------------------|
-   * | Runs per file                    |         20         |                                                                                  |
-   * | Results per run                  |       25,000       | Only the top 5,000 results will be included, prioritized by severity.            |
-   * | Rules per run                    |       25,000       |                                                                                  |
-   * | Tool extensions per run          |        100         |                                                                                  |
-   * | Thread Flow Locations per result |       10,000       | Only the top 1,000 Thread Flow Locations will be included, using prioritization. |
-   * | Location per result	             |       1,000        | Only 100 locations will be included.                                             |
-   * | Tags per rule	                   |         20         | Only 10 tags will be included.                                                   |
-   *
-   *
-   * The `202 Accepted` response includes an `id` value.
-   * You can use this ID to check the status of the upload by using it in the `/sarifs/{sarif_id}` endpoint.
-   * For more information, see "[Get information about a SARIF upload](/rest/code-scanning/code-scanning#get-information-about-a-sarif-upload)."
-   */
-  "code-scanning/upload-sarif": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          commit_sha: components["schemas"]["code-scanning-analysis-commit-sha"];
-          ref: components["schemas"]["code-scanning-ref"];
-          sarif: components["schemas"]["code-scanning-analysis-sarif-file"];
-          /**
-           * Format: uri
-           * @description The base directory used in the analysis, as it appears in the SARIF file.
-           * This property is used to convert file paths from absolute to relative, so that alerts can be mapped to their correct location in the repository.
-           * @example file:///github/workspace/
-           */
-          checkout_uri?: string;
-          /**
-           * Format: date-time
-           * @description The time that the analysis run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
-           */
-          started_at?: string;
-          /** @description The name of the tool used to generate the code scanning analysis. If this parameter is not used, the tool name defaults to "API". If the uploaded SARIF contains a tool GUID, this will be available for filtering using the `tool_guid` parameter of operations such as `GET /repos/{owner}/{repo}/code-scanning/alerts`. */
-          tool_name?: string;
-          /**
-           * @description Whether the SARIF file will be validated according to the code scanning specifications.
-           * This parameter is intended to help integrators ensure that the uploaded SARIF files are correctly rendered by code scanning.
-           */
-          validate?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      202: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-sarifs-receipt"];
-        };
-      };
-      /** @description Bad Request if the sarif field is invalid */
-      400: {
-        content: never;
-      };
-      403: components["responses"]["code_scanning_forbidden_write"];
-      404: components["responses"]["not_found"];
-      /** @description Payload Too Large if the sarif field is too large */
-      413: {
-        content: never;
-      };
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Get information about a SARIF upload
-   * @description Gets information about a SARIF upload, including the status and the URL of the analysis that was uploaded so that you can retrieve details of the analysis. For more information, see "[Get a code scanning analysis for a repository](/rest/code-scanning/code-scanning#get-a-code-scanning-analysis-for-a-repository)." You must use an access token with the `security_events` scope to use this endpoint with private repos, the `public_repo` scope also grants permission to read security events on public repos only. GitHub Apps must have the `security_events` read permission to use this endpoint.
-   */
-  "code-scanning/get-sarif": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description The SARIF ID obtained after uploading. */
-        sarif_id: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-scanning-sarifs-status"];
-        };
-      };
-      403: components["responses"]["code_scanning_forbidden_read"];
-      /** @description Not Found if the sarif id does not match any upload */
-      404: {
-        content: never;
-      };
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List CODEOWNERS errors
-   * @description List any syntax errors that are detected in the CODEOWNERS
-   * file.
-   *
-   * For more information about the correct CODEOWNERS syntax,
-   * see "[About code owners](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)."
-   */
-  "repos/codeowners-errors": {
-    parameters: {
-      query?: {
-        /** @description A branch, tag or commit name used to determine which version of the CODEOWNERS file to use. Default: the repository's default branch (e.g. `main`) */
-        ref?: string;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["codeowners-errors"];
-        };
-      };
-      /** @description Resource not found */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List codespaces in a repository for the authenticated user
-   * @description Lists the codespaces associated to a specified repository and the authenticated user.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint.
-   */
-  "codespaces/list-in-repository-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            codespaces: components["schemas"]["codespace"][];
-          };
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Create a codespace in a repository
-   * @description Creates a codespace owned by the authenticated user in the specified repository.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-   */
-  "codespaces/create-with-repo-for-authenticated-user": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Git ref (typically a branch name) for this codespace */
-          ref?: string;
-          /** @description The requested location for a new codespace. Best efforts are made to respect this upon creation. Assigned by IP if not provided. */
-          location?: string;
-          /**
-           * @description The geographic area for this codespace. If not specified, the value is assigned by IP. This property replaces `location`, which is being deprecated.
-           * @enum {string}
-           */
-          geo?: "EuropeWest" | "SoutheastAsia" | "UsEast" | "UsWest";
-          /** @description IP for location auto-detection when proxying a request */
-          client_ip?: string;
-          /** @description Machine type to use for this codespace */
-          machine?: string;
-          /** @description Path to devcontainer.json config to use for this codespace */
-          devcontainer_path?: string;
-          /** @description Whether to authorize requested permissions from devcontainer.json */
-          multi_repo_permissions_opt_out?: boolean;
-          /** @description Working directory for this codespace */
-          working_directory?: string;
-          /** @description Time in minutes before codespace stops from inactivity */
-          idle_timeout_minutes?: number;
-          /** @description Display name for this codespace */
-          display_name?: string;
-          /** @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days). */
-          retention_period_minutes?: number;
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response when the codespace was successfully created */
-      201: {
-        content: {
-          "application/json": components["schemas"]["codespace"];
-        };
-      };
-      /** @description Response when the codespace creation partially failed but is being retried in the background */
-      202: {
-        content: {
-          "application/json": components["schemas"]["codespace"];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List devcontainer configurations in a repository for the authenticated user
-   * @description Lists the devcontainer.json files associated with a specified repository and the authenticated user. These files
-   * specify launchpoint configurations for codespaces created within the repository.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have read access to the `codespaces_metadata` repository permission to use this endpoint.
-   */
-  "codespaces/list-devcontainers-in-repository-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            devcontainers: {
-              path: string;
-              name?: string;
-              display_name?: string;
-            }[];
-          };
-        };
-      };
-      400: components["responses"]["bad_request"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List available machine types for a repository
-   * @description List the machine types available for a given repository based on its configuration.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces_metadata` repository permission to use this endpoint.
-   */
-  "codespaces/repo-machines-for-authenticated-user": {
-    parameters: {
-      query?: {
-        /** @description The location to check for available machines. Assigned by IP if not provided. */
-        location?: string;
-        /** @description IP for location auto-detection when proxying a request */
-        client_ip?: string;
-        /** @description The branch or commit to check for prebuild availability and devcontainer restrictions. */
-        ref?: string;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            machines: components["schemas"]["codespace-machine"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Get default attributes for a codespace
-   * @description Gets the default attributes for codespaces created by the user with the repository.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-   */
-  "codespaces/pre-flight-with-repo-for-authenticated-user": {
-    parameters: {
-      query?: {
-        /** @description The branch or commit to check for a default devcontainer path. If not specified, the default branch will be checked. */
-        ref?: string;
-        /** @description An alternative IP for default location auto-detection, such as when proxying a request. */
-        client_ip?: string;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response when a user is able to create codespaces from the repository. */
-      200: {
-        content: {
-          "application/json": {
-            billable_owner?: components["schemas"]["simple-user"];
-            defaults?: {
-              location: string;
-              devcontainer_path: string | null;
-            };
-          };
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Check if permissions defined by a devcontainer have been accepted by the authenticated user
-   * @description Checks whether the permissions defined by a given devcontainer configuration have been accepted by the authenticated user.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-   */
-  "codespaces/check-permissions-for-devcontainer": {
-    parameters: {
-      query: {
-        /** @description The git reference that points to the location of the devcontainer configuration to use for the permission check. The value of `ref` will typically be a branch name (`heads/BRANCH_NAME`). For more information, see "[Git References](https://git-scm.com/book/en/v2/Git-Internals-Git-References)" in the Git documentation. */
-        ref: string;
-        /** @description Path to the devcontainer.json configuration to use for the permission check. */
-        devcontainer_path: string;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response when the permission check is successful */
-      200: {
-        content: {
-          "application/json": components["schemas"]["codespaces-permissions-check-for-devcontainer"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List repository secrets
-   * @description Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have write access to the `codespaces_secrets` repository permission to use this endpoint.
-   */
-  "codespaces/list-repo-secrets": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            secrets: components["schemas"]["repo-codespaces-secret"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get a repository public key
-   * @description Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have write access to the `codespaces_secrets` repository permission to use this endpoint.
-   */
-  "codespaces/get-repo-public-key": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["codespaces-public-key"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a repository secret
-   * @description Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have write access to the `codespaces_secrets` repository permission to use this endpoint.
-   */
-  "codespaces/get-repo-secret": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repo-codespaces-secret"];
-        };
-      };
-    };
-  };
-  /**
-   * Create or update a repository secret
-   * @description Creates or updates a repository secret with an encrypted value. Encrypt your secret using
-   * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-   *
-   * You must authenticate using an access
-   * token with the `repo` scope to use this endpoint. GitHub Apps must have write access to the `codespaces_secrets`
-   * repository permission to use this endpoint.
-   */
-  "codespaces/create-or-update-repo-secret": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get a repository public key](https://docs.github.com/rest/codespaces/repository-secrets#get-a-repository-public-key) endpoint. */
-          encrypted_value?: string;
-          /** @description ID of the key you used to encrypt the secret. */
-          key_id?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response when creating a secret */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      /** @description Response when updating a secret */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Delete a repository secret
-   * @description Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have write access to the `codespaces_secrets` repository permission to use this endpoint.
-   */
-  "codespaces/delete-repo-secret": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List repository collaborators
-   * @description For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.
-   * Organization members with write, maintain, or admin privileges on the organization-owned repository can use this endpoint.
-   *
-   * Team members will include the members of child teams.
-   *
-   * You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this
-   * endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this
-   * endpoint.
-   */
-  "repos/list-collaborators": {
-    parameters: {
-      query?: {
-        /** @description Filter collaborators returned by their affiliation. `outside` means all outside collaborators of an organization-owned repository. `direct` means all collaborators with permissions to an organization-owned repository, regardless of organization membership status. `all` means all collaborators the authenticated user can see. */
-        affiliation?: "outside" | "direct" | "all";
-        /** @description Filter collaborators by the permissions they have on the repository. If not specified, all collaborators will be returned. */
-        permission?: "pull" | "triage" | "push" | "maintain" | "admin";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["collaborator"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Check if a user is a repository collaborator
-   * @description For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.
-   *
-   * Team members will include the members of child teams.
-   *
-   * You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this
-   * endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this
-   * endpoint.
-   */
-  "repos/check-collaborator": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response if user is a collaborator */
-      204: {
-        content: never;
-      };
-      /** @description Not Found if user is not a collaborator */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Add a repository collaborator
-   * @description This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   *
-   * Adding an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)."
-   *
-   * For more information on permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". There are restrictions on which permissions can be granted to organization members when an organization base role is in place. In this case, the permission being given must be equal to or higher than the org base permission. Otherwise, the request will fail with:
-   *
-   * ```
-   * Cannot assign {member} permission of {role name}
-   * ```
-   *
-   * 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 verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-   *
-   * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [API](https://docs.github.com/rest/collaborators/invitations).
-   *
-   * **Updating an existing collaborator's permission level**
-   *
-   * The endpoint can also be used to change the permissions of an existing collaborator without first removing and re-adding the collaborator. To change the permissions, use the same endpoint and pass a different `permission` parameter. The response will be a `204`, with no other indication that the permission level changed.
-   *
-   * **Rate limits**
-   *
-   * You are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository.
-   */
-  "repos/add-collaborator": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        username: components["parameters"]["username"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The permission to grant the collaborator. **Only valid on organization-owned repositories.** We accept the following permissions to be set: `pull`, `triage`, `push`, `maintain`, `admin` and you can also specify a custom repository role name, if the owning organization has defined any.
-           * @default push
-           */
-          permission?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response when a new invitation is created */
-      201: {
-        content: {
-          "application/json": components["schemas"]["repository-invitation"];
-        };
-      };
-      /**
-       * @description Response when:
-       * - an existing collaborator is added as a collaborator
-       * - an organization member is added as an individual collaborator
-       * - an existing team member (whose team is also a repository collaborator) is added as an individual collaborator
-       */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove a repository collaborator
-   * @description Removes a collaborator from a repository.
-   *
-   * To use this endpoint, the authenticated user must either be an administrator of the repository or target themselves for removal.
-   *
-   * This endpoint also:
-   * - Cancels any outstanding invitations
-   * - Unasigns the user from any issues
-   * - Removes access to organization projects if the user is not an organization member and is not a collaborator on any other organization repositories.
-   * - Unstars the repository
-   * - Updates access permissions to packages
-   *
-   * Removing a user as a collaborator has the following effects on forks:
-   *  - If the user had access to a fork through their membership to this repository, the user will also be removed from the fork.
-   *  - If the user had their own fork of the repository, the fork will be deleted.
-   *  - If the user still has read access to the repository, open pull requests by this user from a fork will be denied.
-   *
-   * **Note**: A user can still have access to the repository through organization permissions like base repository permissions.
-   *
-   * Although the API responds immediately, the additional permission updates might take some extra time to complete in the background.
-   *
-   * For more information on fork permissions, see "[About permissions and visibility of forks](https://docs.github.com/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks)".
-   */
-  "repos/remove-collaborator": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description No Content when collaborator was removed from the repository. */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get repository permissions for a user
-   * @description Checks the repository permission of a collaborator. The possible repository
-   * permissions are `admin`, `write`, `read`, and `none`.
-   *
-   * *Note*: The `permission` attribute provides the legacy base roles of `admin`, `write`, `read`, and `none`, where the
-   * `maintain` role is mapped to `write` and the `triage` role is mapped to `read`. To determine the role assigned to the
-   * collaborator, see the `role_name` attribute, which will provide the full role name, including custom roles. The
-   * `permissions` hash can also be used to determine which base level of access the collaborator has to the repository.
-   */
-  "repos/get-collaborator-permission-level": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description if user has admin permissions */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-collaborator-permission"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List commit comments for a repository
-   * @description Commit Comments use [these custom media types](https://docs.github.com/rest/overview/media-types). You can read more about the use of media types in the API [here](https://docs.github.com/rest/overview/media-types/).
-   *
-   * Comments are ordered by ascending ID.
-   */
-  "repos/list-commit-comments-for-repo": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["commit-comment"][];
-        };
-      };
-    };
-  };
-  /** Get a commit comment */
-  "repos/get-commit-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["commit-comment"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Delete a commit comment */
-  "repos/delete-commit-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Update a commit comment */
-  "repos/update-commit-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The contents of the comment */
-          body: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["commit-comment"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List reactions for a commit comment
-   * @description List the reactions to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment).
-   */
-  "reactions/list-for-commit-comment": {
-    parameters: {
-      query?: {
-        /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a commit comment. */
-        content?:
-          | "+1"
-          | "-1"
-          | "laugh"
-          | "confused"
-          | "heart"
-          | "hooray"
-          | "rocket"
-          | "eyes";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["reaction"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create reaction for a commit comment
-   * @description Create a reaction to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment). A response with an HTTP `200` status means that you already added the reaction type to this commit comment.
-   */
-  "reactions/create-for-commit-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the commit comment.
-           * @enum {string}
-           */
-          content:
-            | "+1"
-            | "-1"
-            | "laugh"
-            | "confused"
-            | "heart"
-            | "hooray"
-            | "rocket"
-            | "eyes";
-        };
-      };
-    };
-    responses: {
-      /** @description Reaction exists */
-      200: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-      /** @description Reaction created */
-      201: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Delete a commit comment reaction
-   * @description **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/comments/:comment_id/reactions/:reaction_id`.
-   *
-   * Delete a reaction to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment).
-   */
-  "reactions/delete-for-commit-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-        reaction_id: components["parameters"]["reaction-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List commits
-   * @description **Signature verification object**
-   *
-   * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-   *
-   * | Name | Type | Description |
-   * | ---- | ---- | ----------- |
-   * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-   * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-   * | `signature` | `string` | The signature that was extracted from the commit. |
-   * | `payload` | `string` | The value that was signed. |
-   *
-   * These are the possible values for `reason` in the `verification` object:
-   *
-   * | Value | Description |
-   * | ----- | ----------- |
-   * | `expired_key` | The key that made the signature is expired. |
-   * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-   * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-   * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-   * | `unsigned` | The object does not include a signature. |
-   * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-   * | `no_user` | No user was associated with the `committer` email address in the commit. |
-   * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-   * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-   * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-   * | `malformed_signature` | There was an error parsing the signature. |
-   * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-   * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-   */
-  "repos/list-commits": {
-    parameters: {
-      query?: {
-        /** @description SHA or branch to start listing commits from. Default: the repository’s default branch (usually `main`). */
-        sha?: string;
-        /** @description Only commits containing this file path will be returned. */
-        path?: string;
-        /** @description GitHub username or email address to use to filter by commit author. */
-        author?: string;
-        /** @description GitHub username or email address to use to filter by commit committer. */
-        committer?: string;
-        since?: components["parameters"]["since"];
-        /** @description Only commits before this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */
-        until?: string;
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["commit"][];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      404: components["responses"]["not_found"];
-      409: components["responses"]["conflict"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List branches for HEAD commit
-   * @description Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch.
-   */
-  "repos/list-branches-for-head-commit": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        commit_sha: components["parameters"]["commit-sha"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["branch-short"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List commit comments
-   * @description Use the `:commit_sha` to specify the commit that will have its comments listed.
-   */
-  "repos/list-comments-for-commit": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        commit_sha: components["parameters"]["commit-sha"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["commit-comment"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create a commit comment
-   * @description Create a comment for a commit using its `:commit_sha`.
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   */
-  "repos/create-commit-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        commit_sha: components["parameters"]["commit-sha"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The contents of the comment. */
-          body: string;
-          /** @description Relative path of the file to comment on. */
-          path?: string;
-          /** @description Line index in the diff to comment on. */
-          position?: number;
-          /** @description **Deprecated**. Use **position** parameter instead. Line number in the file to comment on. */
-          line?: number;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/comments/1 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["commit-comment"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List pull requests associated with a commit
-   * @description Lists the merged pull request that introduced the commit to the repository. If the commit is not present in the default branch, will only return open pull requests associated with the commit.
-   *
-   * To list the open or merged pull requests associated with a branch, you can set the `commit_sha` parameter to the branch name.
-   */
-  "repos/list-pull-requests-associated-with-commit": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        commit_sha: components["parameters"]["commit-sha"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["pull-request-simple"][];
-        };
-      };
-    };
-  };
-  /**
-   * Get a commit
-   * @description Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint.
-   *
-   * **Note:** If there are more than 300 files in the commit diff, the response will include pagination link headers for the remaining files, up to a limit of 3000 files. Each page contains the static commit information, and the only changes are to the file listing.
-   *
-   * You can pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to  fetch `diff` and `patch` formats. Diffs with binary data will have no `patch` property.
-   *
-   * To return only the SHA-1 hash of the commit reference, you can provide the `sha` custom [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) in the `Accept` header. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag.
-   *
-   * **Signature verification object**
-   *
-   * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-   *
-   * | Name | Type | Description |
-   * | ---- | ---- | ----------- |
-   * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-   * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-   * | `signature` | `string` | The signature that was extracted from the commit. |
-   * | `payload` | `string` | The value that was signed. |
-   *
-   * These are the possible values for `reason` in the `verification` object:
-   *
-   * | Value | Description |
-   * | ----- | ----------- |
-   * | `expired_key` | The key that made the signature is expired. |
-   * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-   * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-   * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-   * | `unsigned` | The object does not include a signature. |
-   * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-   * | `no_user` | No user was associated with the `committer` email address in the commit. |
-   * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-   * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-   * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-   * | `malformed_signature` | There was an error parsing the signature. |
-   * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-   * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-   */
-  "repos/get-commit": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ref: components["parameters"]["commit-ref"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["commit"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      500: components["responses"]["internal_error"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List check runs for a Git reference
-   * @description Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth apps and authenticated users must have the `repo` scope to get check runs in a private repository.
-   *
-   * **Note:** The endpoints to manage checks only look 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.
-   *
-   * If there are more than 1000 check suites on a single git reference, this endpoint will limit check runs to the 1000 most recent check suites. To iterate over all possible check runs, use the [List check suites for a Git reference](https://docs.github.com/rest/reference/checks#list-check-suites-for-a-git-reference) endpoint and provide the `check_suite_id` parameter to the [List check runs in a check suite](https://docs.github.com/rest/reference/checks#list-check-runs-in-a-check-suite) endpoint.
-   */
-  "checks/list-for-ref": {
-    parameters: {
-      query?: {
-        check_name?: components["parameters"]["check-name"];
-        status?: components["parameters"]["status"];
-        /** @description Filters check runs by their `completed_at` timestamp. `latest` returns the most recent check runs. */
-        filter?: "latest" | "all";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        app_id?: number;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ref: components["parameters"]["commit-ref"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            check_runs: components["schemas"]["check-run"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * List check suites for a Git reference
-   * @description Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to list check suites. OAuth apps and authenticated users must have the `repo` scope to get check suites in a private repository.
-   *
-   * **Note:** The endpoints to manage checks only look 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`.
-   */
-  "checks/list-suites-for-ref": {
-    parameters: {
-      query?: {
-        /**
-         * @description Filters check suites by GitHub App `id`.
-         * @example 1
-         */
-        app_id?: number;
-        check_name?: components["parameters"]["check-name"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ref: components["parameters"]["commit-ref"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            check_suites: components["schemas"]["check-suite"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get the combined status for a specific reference
-   * @description Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name.
-   *
-   *
-   * Additionally, a combined `state` is returned. The `state` is one of:
-   *
-   * *   **failure** if any of the contexts report as `error` or `failure`
-   * *   **pending** if there are no statuses or a context is `pending`
-   * *   **success** if the latest status for all contexts is `success`
-   */
-  "repos/get-combined-status-for-ref": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ref: components["parameters"]["commit-ref"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["combined-commit-status"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List commit statuses for a reference
-   * @description Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one.
-   *
-   * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`.
-   */
-  "repos/list-commit-statuses-for-ref": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ref: components["parameters"]["commit-ref"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["status"][];
-        };
-      };
-      301: components["responses"]["moved_permanently"];
-    };
-  };
-  /**
-   * Get community profile metrics
-   * @description Returns all community profile metrics for a repository. The repository cannot be a fork.
-   *
-   * The returned metrics include an overall health score, the repository description, the presence of documentation, the
-   * detected code of conduct, the detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE,
-   * README, and CONTRIBUTING files.
-   *
-   * The `health_percentage` score is defined as a percentage of how many of
-   * the recommended community health files are present. For more information, see
-   * "[About community profiles for public repositories](https://docs.github.com/communities/setting-up-your-project-for-healthy-contributions/about-community-profiles-for-public-repositories)."
-   *
-   * `content_reports_enabled` is only returned for organization-owned repositories.
-   */
-  "repos/get-community-profile-metrics": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["community-profile"];
-        };
-      };
-    };
-  };
-  /**
-   * Compare two commits
-   * @description Compares two commits against one another. You can compare branches in the same repository, or you can compare branches that exist in different repositories within the same repository network, including fork branches. For more information about how to view a repository's network, see "[Understanding connections between repositories](https://docs.github.com/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories)."
-   *
-   * This endpoint is equivalent to running the `git log BASE..HEAD` command, but it returns commits in a different order. The `git log BASE..HEAD` command returns commits in reverse chronological order, whereas the API returns commits in chronological order. You can pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
-   *
-   * The API response includes details about the files that were changed between the two commits. This includes the status of the change (if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file.
-   *
-   * When calling this endpoint without any paging parameter (`per_page` or `page`), the returned list is limited to 250 commits, and the last commit in the list is the most recent of the entire comparison.
-   *
-   * **Working with large comparisons**
-   *
-   * To process a response with a large number of commits, use a query parameter (`per_page` or `page`) to paginate the results. When using pagination:
-   *
-   * - The list of changed files is only shown on the first page of results, but it includes all changed files for the entire comparison.
-   * - The results are returned in chronological order, but the last commit in the returned list may not be the most recent one in the entire set if there are more pages of results.
-   *
-   * For more information on working with pagination, see "[Using pagination in the REST API](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api)."
-   *
-   * **Signature verification object**
-   *
-   * The response will include a `verification` object that describes the result of verifying the commit's signature. The `verification` object includes the following fields:
-   *
-   * | Name | Type | Description |
-   * | ---- | ---- | ----------- |
-   * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-   * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-   * | `signature` | `string` | The signature that was extracted from the commit. |
-   * | `payload` | `string` | The value that was signed. |
-   *
-   * These are the possible values for `reason` in the `verification` object:
-   *
-   * | Value | Description |
-   * | ----- | ----------- |
-   * | `expired_key` | The key that made the signature is expired. |
-   * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-   * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-   * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-   * | `unsigned` | The object does not include a signature. |
-   * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-   * | `no_user` | No user was associated with the `committer` email address in the commit. |
-   * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-   * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-   * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-   * | `malformed_signature` | There was an error parsing the signature. |
-   * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-   * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-   */
-  "repos/compare-commits-with-basehead": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description The base branch and head branch to compare. This parameter expects the format `BASE...HEAD`. Both must be branch names in `repo`. To compare with a branch that exists in a different repository in the same network as `repo`, the `basehead` parameter expects the format `USERNAME:BASE...USERNAME:HEAD`. */
-        basehead: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["commit-comparison"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Get repository content
-   * @description Gets the contents of a file or directory in a repository. Specify the file path or directory in `:path`. If you omit
-   * `:path`, you will receive the contents of the repository's root directory. See the description below regarding what the API response includes for directories.
-   *
-   * Files and symlinks support [a custom media type](https://docs.github.com/rest/overview/media-types) for
-   * retrieving the raw content or rendered HTML (when supported). All content types support [a custom media
-   * type](https://docs.github.com/rest/overview/media-types) to ensure the content is returned in a consistent
-   * object format.
-   *
-   * **Notes**:
-   * *   To get a repository's contents recursively, you can [recursively get the tree](https://docs.github.com/rest/git/trees#get-a-tree).
-   * *   This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees
-   * API](https://docs.github.com/rest/git/trees#get-a-tree).
-   *  *  Download URLs expire and are meant to be used just once. To ensure the download URL does not expire, please use the contents API to obtain a fresh download URL for each download.
-   *  Size limits:
-   * If the requested file's size is:
-   * * 1 MB or smaller: All features of this endpoint are supported.
-   * * Between 1-100 MB: Only the `raw` or `object` [custom media types](https://docs.github.com/rest/repos/contents#custom-media-types-for-repository-contents) are supported. Both will work as normal, except that when using the `object` media type, the `content` field will be an empty string and the `encoding` field will be `"none"`. To get the contents of these larger files, use the `raw` media type.
-   *  * Greater than 100 MB: This endpoint is not supported.
-   *
-   *  If the content is a directory:
-   * The response will be an array of objects, one object for each item in the directory.
-   * When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value
-   * _should_ be "submodule". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW).
-   * In the next major version of the API, the type will be returned as "submodule".
-   *
-   *  If the content is a symlink:
-   * If the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the
-   * API responds with the content of the file (in the format shown in the example. Otherwise, the API responds with an object
-   * describing the symlink itself.
-   *
-   *  If the content is a submodule:
-   * The `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific
-   * commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out
-   * the submodule at that specific commit.
-   *
-   * If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the
-   * github.com URLs (`html_url` and `_links["html"]`) will have null values.
-   */
-  "repos/get-content": {
-    parameters: {
-      query?: {
-        /** @description The name of the commit/branch/tag. Default: the repository’s default branch. */
-        ref?: string;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description path parameter */
-        path: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/vnd.github.object": components["schemas"]["content-tree"];
-          "application/json":
-            | components["schemas"]["content-directory"]
-            | components["schemas"]["content-file"]
-            | components["schemas"]["content-symlink"]
-            | components["schemas"]["content-submodule"];
-        };
-      };
-      302: components["responses"]["found"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create or update file contents
-   * @description Creates a new file or replaces an existing file in a repository. You must authenticate using an access token with the `repo` scope to use this endpoint. If you want to modify files in the `.github/workflows` directory, you must authenticate using an access token with the `workflow` scope.
-   *
-   * **Note:** If you use this endpoint and the "[Delete a file](https://docs.github.com/rest/repos/contents/#delete-a-file)" endpoint in parallel, the concurrent requests will conflict and you will receive errors. You must use these endpoints serially instead.
-   */
-  "repos/create-or-update-file-contents": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description path parameter */
-        path: string;
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The commit message. */
-          message: string;
-          /** @description The new file content, using Base64 encoding. */
-          content: string;
-          /** @description **Required if you are updating a file**. The blob SHA of the file being replaced. */
-          sha?: string;
-          /** @description The branch name. Default: the repository’s default branch. */
-          branch?: string;
-          /** @description The person that committed the file. Default: the authenticated user. */
-          committer?: {
-            /** @description The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted. */
-            name: string;
-            /** @description The email of the author or committer of the commit. You'll receive a `422` status code if `email` is omitted. */
-            email: string;
-            /** @example "2013-01-05T13:13:22+05:00" */
-            date?: string;
-          };
-          /** @description The author of the file. Default: The `committer` or the authenticated user if you omit `committer`. */
-          author?: {
-            /** @description The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted. */
-            name: string;
-            /** @description The email of the author or committer of the commit. You'll receive a `422` status code if `email` is omitted. */
-            email: string;
-            /** @example "2013-01-15T17:13:22+05:00" */
-            date?: string;
-          };
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["file-commit"];
-        };
-      };
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["file-commit"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      409: components["responses"]["conflict"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Delete a file
-   * @description Deletes a file in a repository.
-   *
-   * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author.
-   *
-   * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used.
-   *
-   * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code.
-   *
-   * **Note:** If you use this endpoint and the "[Create or update file contents](https://docs.github.com/rest/repos/contents/#create-or-update-file-contents)" endpoint in parallel, the concurrent requests will conflict and you will receive errors. You must use these endpoints serially instead.
-   */
-  "repos/delete-file": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description path parameter */
-        path: string;
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The commit message. */
-          message: string;
-          /** @description The blob SHA of the file being deleted. */
-          sha: string;
-          /** @description The branch name. Default: the repository’s default branch */
-          branch?: string;
-          /** @description object containing information about the committer. */
-          committer?: {
-            /** @description The name of the author (or committer) of the commit */
-            name?: string;
-            /** @description The email of the author (or committer) of the commit */
-            email?: string;
-          };
-          /** @description object containing information about the author. */
-          author?: {
-            /** @description The name of the author (or committer) of the commit */
-            name?: string;
-            /** @description The email of the author (or committer) of the commit */
-            email?: string;
-          };
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["file-commit"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      409: components["responses"]["conflict"];
-      422: components["responses"]["validation_failed"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List repository contributors
-   * @description Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API caches contributor data to improve performance.
-   *
-   * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information.
-   */
-  "repos/list-contributors": {
-    parameters: {
-      query?: {
-        /** @description Set to `1` or `true` to include anonymous contributors in results. */
-        anon?: string;
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description If repository contains content */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["contributor"][];
-        };
-      };
-      /** @description Response if repository is empty */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List Dependabot alerts for a repository
-   * @description You must use an access token with the `security_events` scope to use this endpoint with private repositories.
-   * You can also use tokens with the `public_repo` scope for public repositories only.
-   * GitHub Apps must have **Dependabot alerts** read permission to use this endpoint.
-   */
-  "dependabot/list-alerts-for-repo": {
-    parameters: {
-      query?: {
-        state?: components["parameters"]["dependabot-alert-comma-separated-states"];
-        severity?: components["parameters"]["dependabot-alert-comma-separated-severities"];
-        ecosystem?: components["parameters"]["dependabot-alert-comma-separated-ecosystems"];
-        package?: components["parameters"]["dependabot-alert-comma-separated-packages"];
-        manifest?: components["parameters"]["dependabot-alert-comma-separated-manifests"];
-        scope?: components["parameters"]["dependabot-alert-scope"];
-        sort?: components["parameters"]["dependabot-alert-sort"];
-        direction?: components["parameters"]["direction"];
-        /**
-         * @deprecated
-         * @description **Deprecated**. Page number of the results to fetch. Use cursor-based pagination with `before` or `after` instead.
-         */
-        page?: number;
-        /**
-         * @deprecated
-         * @description The number of results per page (max 100).
-         */
-        per_page?: number;
-        before?: components["parameters"]["pagination-before"];
-        after?: components["parameters"]["pagination-after"];
-        first?: components["parameters"]["pagination-first"];
-        last?: components["parameters"]["pagination-last"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["dependabot-alert"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      400: components["responses"]["bad_request"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Get a Dependabot alert
-   * @description You must use an access token with the `security_events` scope to use this endpoint with private repositories.
-   * You can also use tokens with the `public_repo` scope for public repositories only.
-   * GitHub Apps must have **Dependabot alerts** read permission to use this endpoint.
-   */
-  "dependabot/get-alert": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        alert_number: components["parameters"]["dependabot-alert-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["dependabot-alert"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update a Dependabot alert
-   * @description You must use an access token with the `security_events` scope to use this endpoint with private repositories.
-   * You can also use tokens with the `public_repo` scope for public repositories only.
-   * GitHub Apps must have **Dependabot alerts** write permission to use this endpoint.
-   *
-   * To use this endpoint, you must have access to security alerts for the repository. For more information, see "[Granting access to security alerts](https://docs.github.com/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)."
-   */
-  "dependabot/update-alert": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        alert_number: components["parameters"]["dependabot-alert-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The state of the Dependabot alert.
-           * A `dismissed_reason` must be provided when setting the state to `dismissed`.
-           * @enum {string}
-           */
-          state: "dismissed" | "open";
-          /**
-           * @description **Required when `state` is `dismissed`.** A reason for dismissing the alert.
-           * @enum {string}
-           */
-          dismissed_reason?:
-            | "fix_started"
-            | "inaccurate"
-            | "no_bandwidth"
-            | "not_used"
-            | "tolerable_risk";
-          /** @description An optional comment associated with dismissing the alert. */
-          dismissed_comment?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["dependabot-alert"];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      409: components["responses"]["conflict"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * List repository secrets
-   * @description Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint.
-   */
-  "dependabot/list-repo-secrets": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            secrets: components["schemas"]["dependabot-secret"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get a repository public key
-   * @description Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint.
-   */
-  "dependabot/get-repo-public-key": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["dependabot-public-key"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a repository secret
-   * @description Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint.
-   */
-  "dependabot/get-repo-secret": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["dependabot-secret"];
-        };
-      };
-    };
-  };
-  /**
-   * Create or update a repository secret
-   * @description Creates or updates a repository secret with an encrypted value. Encrypt your secret using
-   * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-   *
-   * You must authenticate using an access
-   * token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository
-   * permission to use this endpoint.
-   */
-  "dependabot/create-or-update-repo-secret": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get a repository public key](https://docs.github.com/rest/dependabot/secrets#get-a-repository-public-key) endpoint. */
-          encrypted_value?: string;
-          /** @description ID of the key you used to encrypt the secret. */
-          key_id?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response when creating a secret */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      /** @description Response when updating a secret */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Delete a repository secret
-   * @description Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint.
-   */
-  "dependabot/delete-repo-secret": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get a diff of the dependencies between commits
-   * @description Gets the diff of the dependency changes between two commits of a repository, based on the changes to the dependency manifests made in those commits.
-   */
-  "dependency-graph/diff-range": {
-    parameters: {
-      query?: {
-        name?: components["parameters"]["manifest-path"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description The base and head Git revisions to compare. The Git revisions will be resolved to commit SHAs. Named revisions will be resolved to their corresponding HEAD commits, and an appropriate merge base will be determined. This parameter expects the format `{base}...{head}`. */
-        basehead: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["dependency-graph-diff"];
-        };
-      };
-      403: components["responses"]["dependency_review_forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Export a software bill of materials (SBOM) for a repository.
-   * @description Exports the software bill of materials (SBOM) for a repository in SPDX JSON format.
-   */
-  "dependency-graph/export-sbom": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["dependency-graph-spdx-sbom"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a snapshot of dependencies for a repository
-   * @description Create a new snapshot of a repository's dependencies. You must authenticate using an access token with the `repo` scope to use this endpoint for a repository that the requesting user has access to.
-   */
-  "dependency-graph/create-repository-snapshot": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["snapshot"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": {
-            /** @description ID of the created snapshot. */
-            id: number;
-            /** @description The time at which the snapshot was created. */
-            created_at: string;
-            /** @description Either "SUCCESS", "ACCEPTED", or "INVALID". "SUCCESS" indicates that the snapshot was successfully created and the repository's dependencies were updated. "ACCEPTED" indicates that the snapshot was successfully created, but the repository's dependencies were not updated. "INVALID" indicates that the snapshot was malformed. */
-            result: string;
-            /** @description A message providing further details about the result, such as why the dependencies were not updated. */
-            message: string;
-          };
-        };
-      };
-    };
-  };
-  /**
-   * List deployments
-   * @description Simple filtering of deployments is available via query parameters:
-   */
-  "repos/list-deployments": {
-    parameters: {
-      query?: {
-        /** @description The SHA recorded at creation time. */
-        sha?: string;
-        /** @description The name of the ref. This can be a branch, tag, or SHA. */
-        ref?: string;
-        /** @description The name of the task for the deployment (e.g., `deploy` or `deploy:migrations`). */
-        task?: string;
-        /** @description The name of the environment that was deployed to (e.g., `staging` or `production`). */
-        environment?: string | null;
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["deployment"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create a deployment
-   * @description Deployments offer a few configurable parameters with certain defaults.
-   *
-   * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them
-   * before we merge a pull request.
-   *
-   * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have
-   * multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter
-   * makes it easier to track which environments have requested deployments. The default environment is `production`.
-   *
-   * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If
-   * the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds,
-   * the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will
-   * return a failure response.
-   *
-   * By default, [commit statuses](https://docs.github.com/rest/commits/statuses) for every submitted context must be in a `success`
-   * state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to
-   * specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do
-   * not require any contexts or create any commit statuses, the deployment will always succeed.
-   *
-   * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text
-   * field that will be passed on when a deployment event is dispatched.
-   *
-   * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might
-   * be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an
-   * application with debugging enabled.
-   *
-   * Users with `repo` or `repo_deployment` scopes can create a deployment for a given ref.
-   *
-   * Merged branch response:
-   *
-   * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating
-   * a deployment. This auto-merge happens when:
-   * *   Auto-merge option is enabled in the repository
-   * *   Topic branch does not include the latest changes on the base branch, which is `master` in the response example
-   * *   There are no merge conflicts
-   *
-   * If there are no new commits in the base branch, a new request to create a deployment should give a successful
-   * response.
-   *
-   * Merge conflict response:
-   *
-   * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't
-   * be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts.
-   *
-   * Failed commit status checks:
-   *
-   * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success`
-   * status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`.
-   */
-  "repos/create-deployment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The ref to deploy. This can be a branch, tag, or SHA. */
-          ref: string;
-          /**
-           * @description Specifies a task to execute (e.g., `deploy` or `deploy:migrations`).
-           * @default deploy
-           */
-          task?: string;
-          /**
-           * @description Attempts to automatically merge the default branch into the requested ref, if it's behind the default branch.
-           * @default true
-           */
-          auto_merge?: boolean;
-          /** @description The [status](https://docs.github.com/rest/commits/statuses) contexts to verify against commit status checks. If you omit this parameter, GitHub verifies all unique contexts before creating a deployment. To bypass checking entirely, pass an empty array. Defaults to all unique contexts. */
-          required_contexts?: string[];
-          payload?: OneOf<
-            [
-              {
-                [key: string]: unknown;
-              },
-              string,
-            ]
-          >;
-          /**
-           * @description Name for the target deployment environment (e.g., `production`, `staging`, `qa`).
-           * @default production
-           */
-          environment?: string;
-          /**
-           * @description Short description of the deployment.
-           * @default
-           */
-          description?: string | null;
-          /**
-           * @description Specifies if the given environment is specific to the deployment and will no longer exist at some point in the future. Default: `false`
-           * @default false
-           */
-          transient_environment?: boolean;
-          /** @description Specifies if the given environment is one that end-users directly interact with. Default: `true` when `environment` is `production` and `false` otherwise. */
-          production_environment?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["deployment"];
-        };
-      };
-      /** @description Merged branch response */
-      202: {
-        content: {
-          "application/json": {
-            message?: string;
-          };
-        };
-      };
-      /** @description Conflict when there is a merge conflict or the commit's status checks failed */
-      409: {
-        content: never;
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /** Get a deployment */
-  "repos/get-deployment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        deployment_id: components["parameters"]["deployment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["deployment"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a deployment
-   * @description If the repository only has one deployment, you can delete the deployment regardless of its status. If the repository has more than one deployment, you can only delete inactive deployments. This ensures that repositories with multiple deployments will always have an active deployment. Anyone with `repo` or `repo_deployment` scopes can delete a deployment.
-   *
-   * To set a deployment as inactive, you must:
-   *
-   * *   Create a new deployment that is active so that the system has a record of the current state, then delete the previously active deployment.
-   * *   Mark the active deployment as inactive by adding any non-successful deployment status.
-   *
-   * For more information, see "[Create a deployment](https://docs.github.com/rest/deployments/deployments/#create-a-deployment)" and "[Create a deployment status](https://docs.github.com/rest/deployments/statuses#create-a-deployment-status)."
-   */
-  "repos/delete-deployment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        deployment_id: components["parameters"]["deployment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * List deployment statuses
-   * @description Users with pull access can view deployment statuses for a deployment:
-   */
-  "repos/list-deployment-statuses": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        deployment_id: components["parameters"]["deployment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["deployment-status"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a deployment status
-   * @description Users with `push` access can create deployment statuses for a given deployment.
-   *
-   * GitHub Apps require `read & write` access to "Deployments" and `read-only` access to "Repo contents" (for private repos). OAuth apps require the `repo_deployment` scope.
-   */
-  "repos/create-deployment-status": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        deployment_id: components["parameters"]["deployment-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The state of the status. When you set a transient deployment to `inactive`, the deployment will be shown as `destroyed` in GitHub.
-           * @enum {string}
-           */
-          state:
-            | "error"
-            | "failure"
-            | "inactive"
-            | "in_progress"
-            | "queued"
-            | "pending"
-            | "success";
-          /**
-           * @description The target URL to associate with this status. This URL should contain output to keep the user updated while the task is running or serve as historical information for what happened in the deployment. **Note:** It's recommended to use the `log_url` parameter, which replaces `target_url`.
-           * @default
-           */
-          target_url?: string;
-          /**
-           * @description The full URL of the deployment's output. This parameter replaces `target_url`. We will continue to accept `target_url` to support legacy uses, but we recommend replacing `target_url` with `log_url`. Setting `log_url` will automatically set `target_url` to the same value. Default: `""`
-           * @default
-           */
-          log_url?: string;
-          /**
-           * @description A short description of the status. The maximum description length is 140 characters.
-           * @default
-           */
-          description?: string;
-          /** @description Name for the target deployment environment, which can be changed when setting a deploy status. For example, `production`, `staging`, or `qa`. If not defined, the environment of the previous status on the deployment will be used, if it exists. Otherwise, the environment of the deployment will be used. */
-          environment?: string;
-          /**
-           * @description Sets the URL for accessing your environment. Default: `""`
-           * @default
-           */
-          environment_url?: string;
-          /** @description Adds a new `inactive` status to all prior non-transient, non-production environment deployments with the same repository and `environment` name as the created status's deployment. An `inactive` status is only added to deployments that had a `success` state. Default: `true` */
-          auto_inactive?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/example/deployments/42/statuses/1 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["deployment-status"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a deployment status
-   * @description Users with pull access can view a deployment status for a deployment:
-   */
-  "repos/get-deployment-status": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        deployment_id: components["parameters"]["deployment-id"];
-        status_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["deployment-status"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a repository dispatch event
-   * @description You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://docs.github.com/webhooks/event-payloads/#repository_dispatch)."
-   *
-   * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow.
-   *
-   * This endpoint requires write access to the repository by providing either:
-   *
-   *   - Personal access tokens with `repo` scope. For more information, see "[Creating a personal access token for the command line](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line)" in the GitHub Help documentation.
-   *   - GitHub Apps with both `metadata:read` and `contents:read&write` permissions.
-   *
-   * This input example shows how you can use the `client_payload` as a test to debug your workflow.
-   */
-  "repos/create-dispatch-event": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description A custom webhook event name. Must be 100 characters or fewer. */
-          event_type: string;
-          /** @description JSON payload with extra information about the webhook event that your action or workflow may use. The maximum number of top-level properties is 10. */
-          client_payload?: {
-            [key: string]: unknown;
-          };
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List environments
-   * @description Lists the environments for a repository.
-   *
-   * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "repos/get-all-environments": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            /**
-             * @description The number of environments in this repository
-             * @example 5
-             */
-            total_count?: number;
-            environments?: components["schemas"]["environment"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get an environment
-   * @description **Note:** To get information about name patterns that branches must match in order to deploy to this environment, see "[Get a deployment branch policy](/rest/deployments/branch-policies#get-a-deployment-branch-policy)."
-   *
-   * Anyone with read access to the repository can use this endpoint. If the
-   * repository is private, you must use an access token with the `repo` scope. GitHub
-   * Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "repos/get-environment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        environment_name: components["parameters"]["environment-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["environment"];
-        };
-      };
-    };
-  };
-  /**
-   * Create or update an environment
-   * @description Create or update an environment with protection rules, such as required reviewers. For more information about environment protection rules, see "[Environments](/actions/reference/environments#environment-protection-rules)."
-   *
-   * **Note:** To create or update name patterns that branches must match in order to deploy to this environment, see "[Deployment branch policies](/rest/deployments/branch-policies)."
-   *
-   * **Note:** To create or update secrets for an environment, see "[GitHub Actions secrets](/rest/actions/secrets)."
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration:write` permission for the repository to use this endpoint.
-   */
-  "repos/create-or-update-environment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        environment_name: components["parameters"]["environment-name"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          wait_timer?: components["schemas"]["wait-timer"];
-          prevent_self_review?: components["schemas"]["prevent-self-review"];
-          /** @description The people or teams that may review jobs that reference the environment. You can list up to six users or teams as reviewers. The reviewers must have at least read access to the repository. Only one of the required reviewers needs to approve the job for it to proceed. */
-          reviewers?:
-            | {
-                type?: components["schemas"]["deployment-reviewer-type"];
-                /**
-                 * @description The id of the user or team who can review the deployment
-                 * @example 4532992
-                 */
-                id?: number;
-              }[]
-            | null;
-          deployment_branch_policy?: components["schemas"]["deployment-branch-policy-settings"];
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["environment"];
-        };
-      };
-      /** @description Validation error when the environment name is invalid or when `protected_branches` and `custom_branch_policies` in `deployment_branch_policy` are set to the same value */
-      422: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete an environment
-   * @description You must authenticate using an access token with the repo scope to use this endpoint.
-   */
-  "repos/delete-an-environment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        environment_name: components["parameters"]["environment-name"];
-      };
-    };
-    responses: {
-      /** @description Default response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List deployment branch policies
-   * @description Lists the deployment branch policies for an environment.
-   *
-   * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "repos/list-deployment-branch-policies": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        environment_name: components["parameters"]["environment-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            /**
-             * @description The number of deployment branch policies for the environment.
-             * @example 2
-             */
-            total_count: number;
-            branch_policies: components["schemas"]["deployment-branch-policy"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Create a deployment branch policy
-   * @description Creates a deployment branch or tag policy for an environment.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration:write` permission for the repository to use this endpoint.
-   */
-  "repos/create-deployment-branch-policy": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        environment_name: components["parameters"]["environment-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["deployment-branch-policy-name-pattern-with-type"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["deployment-branch-policy"];
-        };
-      };
-      /** @description Response if the same branch name pattern already exists */
-      303: {
-        content: never;
-      };
-      /** @description Not Found or `deployment_branch_policy.custom_branch_policies` property for the environment is set to false */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get a deployment branch policy
-   * @description Gets a deployment branch or tag policy for an environment.
-   *
-   * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-   */
-  "repos/get-deployment-branch-policy": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        environment_name: components["parameters"]["environment-name"];
-        branch_policy_id: components["parameters"]["branch-policy-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["deployment-branch-policy"];
-        };
-      };
-    };
-  };
-  /**
-   * Update a deployment branch policy
-   * @description Updates a deployment branch or tag policy for an environment.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration:write` permission for the repository to use this endpoint.
-   */
-  "repos/update-deployment-branch-policy": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        environment_name: components["parameters"]["environment-name"];
-        branch_policy_id: components["parameters"]["branch-policy-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["deployment-branch-policy-name-pattern"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["deployment-branch-policy"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a deployment branch policy
-   * @description Deletes a deployment branch or tag policy for an environment.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration:write` permission for the repository to use this endpoint.
-   */
-  "repos/delete-deployment-branch-policy": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        environment_name: components["parameters"]["environment-name"];
-        branch_policy_id: components["parameters"]["branch-policy-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get all deployment protection rules for an environment
-   * @description Gets all custom deployment protection rules that are enabled for an environment. Anyone with read access to the repository can use this endpoint. If the repository is private and you want to use a personal access token (classic), you must use an access token with the `repo` scope. GitHub Apps and fine-grained personal access tokens must have the `actions:read` permission to use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
-   *
-   * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app).
-   */
-  "repos/get-all-deployment-protection-rules": {
-    parameters: {
-      path: {
-        environment_name: components["parameters"]["environment-name"];
-        repo: components["parameters"]["repo"];
-        owner: components["parameters"]["owner"];
-      };
-    };
-    responses: {
-      /** @description List of deployment protection rules */
-      200: {
-        content: {
-          "application/json": {
-            /**
-             * @description The number of enabled custom deployment protection rules for this environment
-             * @example 10
-             */
-            total_count?: number;
-            custom_deployment_protection_rules?: components["schemas"]["deployment-protection-rule"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Create a custom deployment protection rule on an environment
-   * @description Enable a custom deployment protection rule for an environment.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. Enabling a custom protection rule requires admin or owner permissions to the repository. GitHub Apps must have the `actions:write` permission to use this endpoint.
-   *
-   * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app).
-   */
-  "repos/create-deployment-protection-rule": {
-    parameters: {
-      path: {
-        environment_name: components["parameters"]["environment-name"];
-        repo: components["parameters"]["repo"];
-        owner: components["parameters"]["owner"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The ID of the custom app that will be enabled on the environment. */
-          integration_id?: number;
-        };
-      };
-    };
-    responses: {
-      /** @description The enabled custom deployment protection rule */
-      201: {
-        content: {
-          "application/json": components["schemas"]["deployment-protection-rule"];
-        };
-      };
-    };
-  };
-  /**
-   * List custom deployment rule integrations available for an environment
-   * @description Gets all custom deployment protection rule integrations that are available for an environment. Anyone with read access to the repository can use this endpoint. If the repository is private and you want to use a personal access token (classic), you must use an access token with the `repo` scope. GitHub Apps and fine-grained personal access tokens must have the `actions:read` permission to use this endpoint.
-   *
-   * For more information about environments, see "[Using environments for deployment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
-   *
-   * For more information about the app that is providing this custom deployment rule, see "[GET an app](https://docs.github.com/rest/apps/apps#get-an-app)".
-   */
-  "repos/list-custom-deployment-rule-integrations": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        environment_name: components["parameters"]["environment-name"];
-        repo: components["parameters"]["repo"];
-        owner: components["parameters"]["owner"];
-      };
-    };
-    responses: {
-      /** @description A list of custom deployment rule integrations available for this environment. */
-      200: {
-        content: {
-          "application/json": {
-            /**
-             * @description The total number of custom deployment protection rule integrations available for this environment.
-             * @example 35
-             */
-            total_count?: number;
-            available_custom_deployment_protection_rule_integrations?: components["schemas"]["custom-deployment-rule-app"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get a custom deployment protection rule
-   * @description Gets an enabled custom deployment protection rule for an environment. Anyone with read access to the repository can use this endpoint. If the repository is private and you want to use a personal access token (classic), you must use an access token with the `repo` scope. GitHub Apps and fine-grained personal access tokens must have the `actions:read` permission to use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
-   *
-   * For more information about the app that is providing this custom deployment rule, see [`GET /apps/{app_slug}`](https://docs.github.com/rest/apps/apps#get-an-app).
-   */
-  "repos/get-custom-deployment-protection-rule": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        environment_name: components["parameters"]["environment-name"];
-        protection_rule_id: components["parameters"]["protection-rule-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["deployment-protection-rule"];
-        };
-      };
-    };
-  };
-  /**
-   * Disable a custom protection rule for an environment
-   * @description Disables a custom deployment protection rule for an environment.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint. Removing a custom protection rule requires admin or owner permissions to the repository. GitHub Apps must have the `actions:write` permission to use this endpoint. For more information, see "[Get an app](https://docs.github.com/rest/apps/apps#get-an-app)".
-   */
-  "repos/disable-deployment-protection-rule": {
-    parameters: {
-      path: {
-        environment_name: components["parameters"]["environment-name"];
-        repo: components["parameters"]["repo"];
-        owner: components["parameters"]["owner"];
-        protection_rule_id: components["parameters"]["protection-rule-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List repository events
-   * @description **Note**: This 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.
-   */
-  "activity/list-repo-events": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["event"][];
-        };
-      };
-    };
-  };
-  /** List forks */
-  "repos/list-forks": {
-    parameters: {
-      query?: {
-        /** @description The sort order. `stargazers` will sort by star count. */
-        sort?: "newest" | "oldest" | "stargazers" | "watchers";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["minimal-repository"][];
-        };
-      };
-      400: components["responses"]["bad_request"];
-    };
-  };
-  /**
-   * Create a fork
-   * @description Create a fork for the authenticated user.
-   *
-   * **Note**: Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api).
-   *
-   * **Note**: Although this endpoint works with GitHub Apps, the GitHub App must be installed on the destination account with access to all repositories and on the source account with access to the source repository.
-   */
-  "repos/create-fork": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description Optional parameter to specify the organization name if forking into an organization. */
-          organization?: string;
-          /** @description When forking from an existing repository, a new name for the fork. */
-          name?: string;
-          /** @description When forking from an existing repository, fork with only the default branch. */
-          default_branch_only?: boolean;
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      202: {
-        content: {
-          "application/json": components["schemas"]["full-repository"];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /** Create a blob */
-  "git/create-blob": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The new blob's content. */
-          content: string;
-          /**
-           * @description The encoding used for `content`. Currently, `"utf-8"` and `"base64"` are supported.
-           * @default utf-8
-           */
-          encoding?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/example/git/blobs/3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["short-blob"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      409: components["responses"]["conflict"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a blob
-   * @description The `content` in the response will always be Base64 encoded.
-   *
-   * _Note_: This API supports blobs up to 100 megabytes in size.
-   */
-  "git/get-blob": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        file_sha: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["blob"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Create a commit
-   * @description Creates a new Git [commit object](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects).
-   *
-   * **Signature verification object**
-   *
-   * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-   *
-   * | Name | Type | Description |
-   * | ---- | ---- | ----------- |
-   * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-   * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. |
-   * | `signature` | `string` | The signature that was extracted from the commit. |
-   * | `payload` | `string` | The value that was signed. |
-   *
-   * These are the possible values for `reason` in the `verification` object:
-   *
-   * | Value | Description |
-   * | ----- | ----------- |
-   * | `expired_key` | The key that made the signature is expired. |
-   * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-   * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-   * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-   * | `unsigned` | The object does not include a signature. |
-   * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-   * | `no_user` | No user was associated with the `committer` email address in the commit. |
-   * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-   * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-   * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-   * | `malformed_signature` | There was an error parsing the signature. |
-   * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-   * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-   */
-  "git/create-commit": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The commit message */
-          message: string;
-          /** @description The SHA of the tree object this commit points to */
-          tree: string;
-          /** @description The SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided. */
-          parents?: string[];
-          /** @description Information about the author of the commit. By default, the `author` will be the authenticated user and the current date. See the `author` and `committer` object below for details. */
-          author?: {
-            /** @description The name of the author (or committer) of the commit */
-            name: string;
-            /** @description The email of the author (or committer) of the commit */
-            email: string;
-            /**
-             * Format: date-time
-             * @description Indicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
-             */
-            date?: string;
-          };
-          /** @description Information about the person who is making the commit. By default, `committer` will use the information set in `author`. See the `author` and `committer` object below for details. */
-          committer?: {
-            /** @description The name of the author (or committer) of the commit */
-            name?: string;
-            /** @description The email of the author (or committer) of the commit */
-            email?: string;
-            /**
-             * Format: date-time
-             * @description Indicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
-             */
-            date?: string;
-          };
-          /** @description The [PGP signature](https://en.wikipedia.org/wiki/Pretty_Good_Privacy) of the commit. GitHub adds the signature to the `gpgsig` header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database. To pass a `signature` parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to [use the command line](https://git-scm.com/book/id/v2/Git-Tools-Signing-Your-Work) to create signed commits. */
-          signature?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["git-commit"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a commit object
-   * @description Gets a Git [commit object](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects).
-   *
-   * To get the contents of a commit, see "[Get a commit](/rest/commits/commits#get-a-commit)."
-   *
-   * **Signature verification object**
-   *
-   * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-   *
-   * | Name | Type | Description |
-   * | ---- | ---- | ----------- |
-   * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-   * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. |
-   * | `signature` | `string` | The signature that was extracted from the commit. |
-   * | `payload` | `string` | The value that was signed. |
-   *
-   * These are the possible values for `reason` in the `verification` object:
-   *
-   * | Value | Description |
-   * | ----- | ----------- |
-   * | `expired_key` | The key that made the signature is expired. |
-   * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-   * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-   * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-   * | `unsigned` | The object does not include a signature. |
-   * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-   * | `no_user` | No user was associated with the `committer` email address in the commit. |
-   * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-   * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-   * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-   * | `malformed_signature` | There was an error parsing the signature. |
-   * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-   * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-   */
-  "git/get-commit": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        commit_sha: components["parameters"]["commit-sha"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["git-commit"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List matching references
-   * @description Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/<branch name>` for branches and `tags/<tag name>` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array.
-   *
-   * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`.
-   *
-   * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)".
-   *
-   * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`.
-   */
-  "git/list-matching-refs": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ref: components["parameters"]["commit-ref"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["git-ref"][];
-        };
-      };
-    };
-  };
-  /**
-   * Get a reference
-   * @description Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/<branch name>` for branches and `tags/<tag name>` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned.
-   *
-   * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)".
-   */
-  "git/get-ref": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ref: components["parameters"]["commit-ref"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["git-ref"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a reference
-   * @description Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches.
-   */
-  "git/create-ref": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the fully qualified reference (ie: `refs/heads/master`). If it doesn't start with 'refs' and have at least two slashes, it will be rejected. */
-          ref: string;
-          /** @description The SHA1 value for this reference. */
-          sha: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/git/refs/heads/featureA */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["git-ref"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /** Delete a reference */
-  "git/delete-ref": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ref: components["parameters"]["commit-ref"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /** Update a reference */
-  "git/update-ref": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /**
-         * @description The name of the reference to update (for example, `heads/featureA`). Can be a branch name (`heads/BRANCH_NAME`) or tag name (`tags/TAG_NAME`). For more information, see "[Git References](https://git-scm.com/book/en/v2/Git-Internals-Git-References)" in the Git documentation.
-         * @example heads/featureA
-         */
-        ref: string;
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The SHA1 value to set this reference to */
-          sha: string;
-          /**
-           * @description Indicates whether to force the update or to make sure the update is a fast-forward update. Leaving this out or setting it to `false` will make sure you're not overwriting work.
-           * @default false
-           */
-          force?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["git-ref"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Create a tag object
-   * @description Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://docs.github.com/rest/git/refs#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://docs.github.com/rest/git/refs#create-a-reference) the tag reference - this call would be unnecessary.
-   *
-   * **Signature verification object**
-   *
-   * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-   *
-   * | Name | Type | Description |
-   * | ---- | ---- | ----------- |
-   * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-   * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-   * | `signature` | `string` | The signature that was extracted from the commit. |
-   * | `payload` | `string` | The value that was signed. |
-   *
-   * These are the possible values for `reason` in the `verification` object:
-   *
-   * | Value | Description |
-   * | ----- | ----------- |
-   * | `expired_key` | The key that made the signature is expired. |
-   * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-   * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-   * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-   * | `unsigned` | The object does not include a signature. |
-   * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-   * | `no_user` | No user was associated with the `committer` email address in the commit. |
-   * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-   * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-   * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-   * | `malformed_signature` | There was an error parsing the signature. |
-   * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-   * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-   */
-  "git/create-tag": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The tag's name. This is typically a version (e.g., "v0.0.1"). */
-          tag: string;
-          /** @description The tag message. */
-          message: string;
-          /** @description The SHA of the git object this is tagging. */
-          object: string;
-          /**
-           * @description The type of the object we're tagging. Normally this is a `commit` but it can also be a `tree` or a `blob`.
-           * @enum {string}
-           */
-          type: "commit" | "tree" | "blob";
-          /** @description An object with information about the individual creating the tag. */
-          tagger?: {
-            /** @description The name of the author of the tag */
-            name: string;
-            /** @description The email of the author of the tag */
-            email: string;
-            /**
-             * Format: date-time
-             * @description When this object was tagged. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
-             */
-            date?: string;
-          };
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["git-tag"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a tag
-   * @description **Signature verification object**
-   *
-   * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-   *
-   * | Name | Type | Description |
-   * | ---- | ---- | ----------- |
-   * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-   * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-   * | `signature` | `string` | The signature that was extracted from the commit. |
-   * | `payload` | `string` | The value that was signed. |
-   *
-   * These are the possible values for `reason` in the `verification` object:
-   *
-   * | Value | Description |
-   * | ----- | ----------- |
-   * | `expired_key` | The key that made the signature is expired. |
-   * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-   * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-   * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-   * | `unsigned` | The object does not include a signature. |
-   * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-   * | `no_user` | No user was associated with the `committer` email address in the commit. |
-   * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-   * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-   * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-   * | `malformed_signature` | There was an error parsing the signature. |
-   * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-   * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-   */
-  "git/get-tag": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        tag_sha: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["git-tag"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a tree
-   * @description The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure.
-   *
-   * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://docs.github.com/rest/git/commits#create-a-commit)" and "[Update a reference](https://docs.github.com/rest/git/refs#update-a-reference)."
-   *
-   * Returns an error if you try to delete a file that does not exist.
-   */
-  "git/create-tree": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Objects (of `path`, `mode`, `type`, and `sha`) specifying a tree structure. */
-          tree: {
-            /** @description The file referenced in the tree. */
-            path?: string;
-            /**
-             * @description The file mode; one of `100644` for file (blob), `100755` for executable (blob), `040000` for subdirectory (tree), `160000` for submodule (commit), or `120000` for a blob that specifies the path of a symlink.
-             * @enum {string}
-             */
-            mode?: "100644" | "100755" | "040000" | "160000" | "120000";
-            /**
-             * @description Either `blob`, `tree`, or `commit`.
-             * @enum {string}
-             */
-            type?: "blob" | "tree" | "commit";
-            /**
-             * @description The SHA1 checksum ID of the object in the tree. Also called `tree.sha`. If the value is `null` then the file will be deleted.
-             *
-             * **Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error.
-             */
-            sha?: string | null;
-            /**
-             * @description The content you want this file to have. GitHub will write this blob out and use that SHA for this entry. Use either this, or `tree.sha`.
-             *
-             * **Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error.
-             */
-            content?: string;
-          }[];
-          /**
-           * @description The SHA1 of an existing Git tree object which will be used as the base for the new tree. If provided, a new Git tree object will be created from entries in the Git tree object pointed to by `base_tree` and entries defined in the `tree` parameter. Entries defined in the `tree` parameter will overwrite items from `base_tree` with the same `path`. If you're creating new changes on a branch, then normally you'd set `base_tree` to the SHA1 of the Git tree object of the current latest commit on the branch you're working on.
-           * If not provided, GitHub will create a new Git tree object from only the entries defined in the `tree` parameter. If you create a new commit pointing to such a tree, then all files which were a part of the parent commit's tree and were not defined in the `tree` parameter will be listed as deleted by the new commit.
-           */
-          base_tree?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/trees/cd8274d15fa3ae2ab983129fb037999f264ba9a7 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["git-tree"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a tree
-   * @description Returns a single tree using the SHA1 value or ref name for that tree.
-   *
-   * If `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time.
-   *
-   *
-   * **Note**: The limit for the `tree` array is 100,000 entries with a maximum size of 7 MB when using the `recursive` parameter.
-   */
-  "git/get-tree": {
-    parameters: {
-      query?: {
-        /** @description Setting this parameter to any value returns the objects or subtrees referenced by the tree specified in `:tree_sha`. For example, setting `recursive` to any of the following will enable returning objects or subtrees: `0`, `1`, `"true"`, and `"false"`. Omit this parameter to prevent recursively returning objects or subtrees. */
-        recursive?: string;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description The SHA1 value or ref (branch or tag) name of the tree. */
-        tree_sha: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["git-tree"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List repository webhooks
-   * @description Lists webhooks for a repository. `last response` may return null if there have not been any deliveries within 30 days.
-   */
-  "repos/list-webhooks": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["hook"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a repository webhook
-   * @description Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can
-   * share the same `config` as long as those webhooks do not have any `events` that overlap.
-   */
-  "repos/create-webhook": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description Use `web` to create a webhook. Default: `web`. This parameter only accepts the value `web`. */
-          name?: string;
-          /** @description Key/value pairs to provide settings for this webhook. */
-          config?: {
-            url?: components["schemas"]["webhook-config-url"];
-            content_type?: components["schemas"]["webhook-config-content-type"];
-            secret?: components["schemas"]["webhook-config-secret"];
-            insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"];
-            /** @example "abc" */
-            token?: string;
-            /** @example "sha256" */
-            digest?: string;
-          };
-          /**
-           * @description Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for.
-           * @default [
-           *   "push"
-           * ]
-           */
-          events?: string[];
-          /**
-           * @description Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
-           * @default true
-           */
-          active?: boolean;
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/hooks/12345678 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["hook"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a repository webhook
-   * @description Returns a webhook configured in a repository. To get only the webhook `config` properties, see "[Get a webhook configuration for a repository](/rest/webhooks/repo-config#get-a-webhook-configuration-for-a-repository)."
-   */
-  "repos/get-webhook": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["hook"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Delete a repository webhook */
-  "repos/delete-webhook": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update a repository webhook
-   * @description Updates a webhook configured in a repository. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for a repository](/rest/webhooks/repo-config#update-a-webhook-configuration-for-a-repository)."
-   */
-  "repos/update-webhook": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Key/value pairs to provide settings for this webhook. */
-          config?: {
-            url: components["schemas"]["webhook-config-url"];
-            content_type?: components["schemas"]["webhook-config-content-type"];
-            secret?: components["schemas"]["webhook-config-secret"];
-            insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"];
-            /** @example "bar@example.com" */
-            address?: string;
-            /** @example "The Serious Room" */
-            room?: string;
-          };
-          /**
-           * @description Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. This replaces the entire array of events.
-           * @default [
-           *   "push"
-           * ]
-           */
-          events?: string[];
-          /** @description Determines a list of events to be added to the list of events that the Hook triggers for. */
-          add_events?: string[];
-          /** @description Determines a list of events to be removed from the list of events that the Hook triggers for. */
-          remove_events?: string[];
-          /**
-           * @description Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
-           * @default true
-           */
-          active?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["hook"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a webhook configuration for a repository
-   * @description Returns the webhook configuration for a repository. To get more information about the webhook, including the `active` state and `events`, use "[Get a repository webhook](/rest/webhooks/repos#get-a-repository-webhook)."
-   *
-   * Access tokens must have the `read:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:read` permission.
-   */
-  "repos/get-webhook-config-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["webhook-config"];
-        };
-      };
-    };
-  };
-  /**
-   * Update a webhook configuration for a repository
-   * @description 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](/rest/webhooks/repos#update-a-repository-webhook)."
-   *
-   * Access tokens must have the `write:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:write` permission.
-   */
-  "repos/update-webhook-config-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          url?: components["schemas"]["webhook-config-url"];
-          content_type?: components["schemas"]["webhook-config-content-type"];
-          secret?: components["schemas"]["webhook-config-secret"];
-          insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["webhook-config"];
-        };
-      };
-    };
-  };
-  /**
-   * List deliveries for a repository webhook
-   * @description Returns a list of webhook deliveries for a webhook configured in a repository.
-   */
-  "repos/list-webhook-deliveries": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        cursor?: components["parameters"]["cursor"];
-        redelivery?: boolean;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["hook-delivery-item"][];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a delivery for a repository webhook
-   * @description Returns a delivery for a webhook configured in a repository.
-   */
-  "repos/get-webhook-delivery": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        hook_id: components["parameters"]["hook-id"];
-        delivery_id: components["parameters"]["delivery-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["hook-delivery"];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Redeliver a delivery for a repository webhook
-   * @description Redeliver a webhook delivery for a webhook configured in a repository.
-   */
-  "repos/redeliver-webhook-delivery": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        hook_id: components["parameters"]["hook-id"];
-        delivery_id: components["parameters"]["delivery-id"];
-      };
-    };
-    responses: {
-      202: components["responses"]["accepted"];
-      400: components["responses"]["bad_request"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Ping a repository webhook
-   * @description This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook.
-   */
-  "repos/ping-webhook": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Test the push repository webhook
-   * @description This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated.
-   *
-   * **Note**: Previously `/repos/:owner/:repo/hooks/:hook_id/test`
-   */
-  "repos/test-push-webhook": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        hook_id: components["parameters"]["hook-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get an import status
-   * @deprecated
-   * @description View the progress of an import.
-   *
-   * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-   *
-   * **Import status**
-   *
-   * This section includes details about the possible values of the `status` field of the Import Progress response.
-   *
-   * An import that does not have errors will progress through these steps:
-   *
-   * *   `detecting` - the "detection" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL.
-   * *   `importing` - the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import).
-   * *   `mapping` - the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information.
-   * *   `pushing` - the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is "Writing objects".
-   * *   `complete` - the import is complete, and the repository is ready on GitHub.
-   *
-   * If there are problems, you will see one of these in the `status` field:
-   *
-   * *   `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section.
-   * *   `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api) for more information.
-   * *   `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section.
-   * *   `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://docs.github.com/rest/migrations/source-imports#cancel-an-import) and [retry](https://docs.github.com/rest/migrations/source-imports#start-an-import) with the correct URL.
-   * *   `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section.
-   *
-   * **The project_choices field**
-   *
-   * When multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type.
-   *
-   * **Git LFS related fields**
-   *
-   * This section includes details about Git LFS related fields that may be present in the Import Progress response.
-   *
-   * *   `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken.
-   * *   `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step.
-   * *   `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository.
-   * *   `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request.
-   */
-  "migrations/get-import-status": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["import"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      503: components["responses"]["porter_maintenance"];
-    };
-  };
-  /**
-   * Start an import
-   * @deprecated
-   * @description Start a source import to a GitHub repository using GitHub Importer.
-   * Importing into a GitHub repository with GitHub Actions enabled is not supported and will
-   * return a status `422 Unprocessable Entity` response.
-   *
-   * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-   */
-  "migrations/start-import": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The URL of the originating repository. */
-          vcs_url: string;
-          /**
-           * @description The originating VCS type. Without this parameter, the import job will take additional time to detect the VCS type before beginning the import. This detection step will be reflected in the response.
-           * @enum {string}
-           */
-          vcs?: "subversion" | "git" | "mercurial" | "tfvc";
-          /** @description If authentication is required, the username to provide to `vcs_url`. */
-          vcs_username?: string;
-          /** @description If authentication is required, the password to provide to `vcs_url`. */
-          vcs_password?: string;
-          /** @description For a tfvc import, the name of the project that is being imported. */
-          tfvc_project?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/spraints/socm/import */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["import"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      503: components["responses"]["porter_maintenance"];
-    };
-  };
-  /**
-   * Cancel an import
-   * @deprecated
-   * @description Stop an import for a repository.
-   *
-   * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-   */
-  "migrations/cancel-import": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      503: components["responses"]["porter_maintenance"];
-    };
-  };
-  /**
-   * Update an import
-   * @deprecated
-   * @description An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API
-   * request. If no parameters are provided, the import will be restarted.
-   *
-   * Some servers (e.g. TFS servers) can have several projects at a single URL. In those cases the import progress will
-   * have the status `detection_found_multiple` and the Import Progress response will include a `project_choices` array.
-   * You can select the project to import by providing one of the objects in the `project_choices` array in the update request.
-   *
-   * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-   */
-  "migrations/update-import": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The username to provide to the originating repository. */
-          vcs_username?: string;
-          /** @description The password to provide to the originating repository. */
-          vcs_password?: string;
-          /**
-           * @description The type of version control system you are migrating from.
-           * @example "git"
-           * @enum {string}
-           */
-          vcs?: "subversion" | "tfvc" | "git" | "mercurial";
-          /**
-           * @description For a tfvc import, the name of the project that is being imported.
-           * @example "project1"
-           */
-          tfvc_project?: string;
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["import"];
-        };
-      };
-      503: components["responses"]["porter_maintenance"];
-    };
-  };
-  /**
-   * Get commit authors
-   * @deprecated
-   * @description Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot <hubot@12341234-abab-fefe-8787-fedcba987654>`.
-   *
-   * This endpoint and the [Map a commit author](https://docs.github.com/rest/migrations/source-imports#map-a-commit-author) endpoint allow you to provide correct Git author information.
-   *
-   * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-   */
-  "migrations/get-commit-authors": {
-    parameters: {
-      query?: {
-        since?: components["parameters"]["since-user"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["porter-author"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-      503: components["responses"]["porter_maintenance"];
-    };
-  };
-  /**
-   * Map a commit author
-   * @deprecated
-   * @description Update an author's identity for the import. Your application can continue updating authors any time before you push
-   * new commits to the repository.
-   *
-   * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-   */
-  "migrations/map-commit-author": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        author_id: number;
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The new Git author email. */
-          email?: string;
-          /** @description The new Git author name. */
-          name?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["porter-author"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      503: components["responses"]["porter_maintenance"];
-    };
-  };
-  /**
-   * Get large files
-   * @deprecated
-   * @description List files larger than 100MB found during the import
-   *
-   * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-   */
-  "migrations/get-large-files": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["porter-large-file"][];
-        };
-      };
-      503: components["responses"]["porter_maintenance"];
-    };
-  };
-  /**
-   * Update Git LFS preference
-   * @deprecated
-   * @description You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability
-   * is powered by [Git LFS](https://git-lfs.com).
-   *
-   * You can learn more about our LFS feature and working with large files [on our help
-   * site](https://docs.github.com/repositories/working-with-files/managing-large-files).
-   *
-   * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-   */
-  "migrations/set-lfs-preference": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Whether to store large files during the import. `opt_in` means large files will be stored using Git LFS. `opt_out` means large files will be removed during the import.
-           * @enum {string}
-           */
-          use_lfs: "opt_in" | "opt_out";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["import"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-      503: components["responses"]["porter_maintenance"];
-    };
-  };
-  /**
-   * Get a repository installation for the authenticated app
-   * @description Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to.
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/get-repo-installation": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["installation"];
-        };
-      };
-      301: components["responses"]["moved_permanently"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get interaction restrictions for a repository
-   * @description Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response.
-   */
-  "interactions/get-restrictions-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json":
-            | components["schemas"]["interaction-limit-response"]
-            | Record<string, never>;
-        };
-      };
-    };
-  };
-  /**
-   * Set interaction restrictions for a repository
-   * @description Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository.
-   */
-  "interactions/set-restrictions-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["interaction-limit"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["interaction-limit-response"];
-        };
-      };
-      /** @description Response */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Remove interaction restrictions for a repository
-   * @description Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository.
-   */
-  "interactions/remove-restrictions-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      /** @description Response */
-      409: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List repository invitations
-   * @description When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations.
-   */
-  "repos/list-invitations": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["repository-invitation"][];
-        };
-      };
-    };
-  };
-  /** Delete a repository invitation */
-  "repos/delete-invitation": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        invitation_id: components["parameters"]["invitation-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /** Update a repository invitation */
-  "repos/update-invitation": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        invitation_id: components["parameters"]["invitation-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The permissions that the associated user will have on the repository. Valid values are `read`, `write`, `maintain`, `triage`, and `admin`.
-           * @enum {string}
-           */
-          permissions?: "read" | "write" | "maintain" | "triage" | "admin";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-invitation"];
-        };
-      };
-    };
-  };
-  /**
-   * List repository issues
-   * @description List issues in a repository. Only open issues will be listed.
-   *
-   * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-   * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-   * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-   * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-   */
-  "issues/list-for-repo": {
-    parameters: {
-      query?: {
-        /** @description If an `integer` is passed, it should refer to a milestone by its `number` field. If the string `*` is passed, issues with any milestone are accepted. If the string `none` is passed, issues without milestones are returned. */
-        milestone?: string;
-        /** @description Indicates the state of the issues to return. */
-        state?: "open" | "closed" | "all";
-        /** @description Can be the name of a user. Pass in `none` for issues with no assigned user, and `*` for issues assigned to any user. */
-        assignee?: string;
-        /** @description The user that created the issue. */
-        creator?: string;
-        /** @description A user that's mentioned in the issue. */
-        mentioned?: string;
-        labels?: components["parameters"]["labels"];
-        /** @description What to sort results by. */
-        sort?: "created" | "updated" | "comments";
-        direction?: components["parameters"]["direction"];
-        since?: components["parameters"]["since"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["issue"][];
-        };
-      };
-      301: components["responses"]["moved_permanently"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Create an issue
-   * @description Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://docs.github.com/articles/disabling-issues/), the API returns a `410 Gone` status.
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   */
-  "issues/create": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The title of the issue. */
-          title: string | number;
-          /** @description The contents of the issue. */
-          body?: string;
-          /** @description Login for the user that this issue should be assigned to. _NOTE: Only users with push access can set the assignee for new issues. The assignee is silently dropped otherwise. **This field is deprecated.**_ */
-          assignee?: string | null;
-          milestone?: string | number | null;
-          /** @description Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._ */
-          labels?: OneOf<
-            [
-              string,
-              {
-                id?: number;
-                name?: string;
-                description?: string | null;
-                color?: string | null;
-              },
-            ]
-          >[];
-          /** @description Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._ */
-          assignees?: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/issues/1347 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["issue"];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-      422: components["responses"]["validation_failed"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List issue comments for a repository
-   * @description You can use the REST API to list comments on issues and pull requests for a repository. Every pull request is an issue, but not every issue is a pull request.
-   *
-   * By default, issue comments are ordered by ascending ID.
-   */
-  "issues/list-comments-for-repo": {
-    parameters: {
-      query?: {
-        sort?: components["parameters"]["sort"];
-        /** @description Either `asc` or `desc`. Ignored without the `sort` parameter. */
-        direction?: "asc" | "desc";
-        since?: components["parameters"]["since"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["issue-comment"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get an issue comment
-   * @description You can use the REST API to get comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.
-   */
-  "issues/get-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["issue-comment"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete an issue comment
-   * @description 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.
-   */
-  "issues/delete-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update an issue comment
-   * @description You can use the REST API to update comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.
-   */
-  "issues/update-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The contents of the comment. */
-          body: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["issue-comment"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List reactions for an issue comment
-   * @description List the reactions to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment).
-   */
-  "reactions/list-for-issue-comment": {
-    parameters: {
-      query?: {
-        /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to an issue comment. */
-        content?:
-          | "+1"
-          | "-1"
-          | "laugh"
-          | "confused"
-          | "heart"
-          | "hooray"
-          | "rocket"
-          | "eyes";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["reaction"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create reaction for an issue comment
-   * @description Create a reaction to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment). A response with an HTTP `200` status means that you already added the reaction type to this issue comment.
-   */
-  "reactions/create-for-issue-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the issue comment.
-           * @enum {string}
-           */
-          content:
-            | "+1"
-            | "-1"
-            | "laugh"
-            | "confused"
-            | "heart"
-            | "hooray"
-            | "rocket"
-            | "eyes";
-        };
-      };
-    };
-    responses: {
-      /** @description Reaction exists */
-      200: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-      /** @description Reaction created */
-      201: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Delete an issue comment reaction
-   * @description **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id`.
-   *
-   * Delete a reaction to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment).
-   */
-  "reactions/delete-for-issue-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-        reaction_id: components["parameters"]["reaction-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List issue events for a repository
-   * @description Lists events for a repository.
-   */
-  "issues/list-events-for-repo": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["issue-event"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get an issue event
-   * @description Gets a single event by the event id.
-   */
-  "issues/get-event": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        event_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["issue-event"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-    };
-  };
-  /**
-   * Get an issue
-   * @description The API returns a [`301 Moved Permanently` status](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-redirects-redirects) if the issue was
-   * [transferred](https://docs.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If
-   * the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API
-   * returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read
-   * access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe
-   * to the [`issues`](https://docs.github.com/webhooks/event-payloads/#issues) webhook.
-   *
-   * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-   * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-   * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-   * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-   */
-  "issues/get": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["issue"];
-        };
-      };
-      301: components["responses"]["moved_permanently"];
-      304: components["responses"]["not_modified"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-    };
-  };
-  /**
-   * Update an issue
-   * @description Issue owners and users with push access can edit an issue.
-   */
-  "issues/update": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The title of the issue. */
-          title?: string | number | null;
-          /** @description The contents of the issue. */
-          body?: string | null;
-          /** @description Username to assign to this issue. **This field is deprecated.** */
-          assignee?: string | null;
-          /**
-           * @description The open or closed state of the issue.
-           * @enum {string}
-           */
-          state?: "open" | "closed";
-          /**
-           * @description The reason for the state change. Ignored unless `state` is changed.
-           * @example not_planned
-           * @enum {string|null}
-           */
-          state_reason?: "completed" | "not_planned" | "reopened" | null;
-          milestone?: string | number | null;
-          /** @description Labels to associate with this issue. Pass one or more labels to _replace_ the set of labels on this issue. Send an empty array (`[]`) to clear all labels from the issue. Only users with push access can set labels for issues. Without push access to the repository, label changes are silently dropped. */
-          labels?: OneOf<
-            [
-              string,
-              {
-                id?: number;
-                name?: string;
-                description?: string | null;
-                color?: string | null;
-              },
-            ]
-          >[];
-          /** @description Usernames to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this issue. Send an empty array (`[]`) to clear all assignees from the issue. Only users with push access can set assignees for new issues. Without push access to the repository, assignee changes are silently dropped. */
-          assignees?: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["issue"];
-        };
-      };
-      301: components["responses"]["moved_permanently"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-      422: components["responses"]["validation_failed"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Add assignees to an issue
-   * @description Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced.
-   */
-  "issues/add-assignees": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description Usernames of people to assign this issue to. _NOTE: Only users with push access can add assignees to an issue. Assignees are silently ignored otherwise._ */
-          assignees?: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["issue"];
-        };
-      };
-    };
-  };
-  /**
-   * Remove assignees from an issue
-   * @description Removes one or more assignees from an issue.
-   */
-  "issues/remove-assignees": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Usernames of assignees to remove from an issue. _NOTE: Only users with push access can remove assignees from an issue. Assignees are silently ignored otherwise._ */
-          assignees: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["issue"];
-        };
-      };
-    };
-  };
-  /**
-   * Check if a user can be assigned to a issue
-   * @description Checks if a user has permission to be assigned to a specific issue.
-   *
-   * If the `assignee` can be assigned to this issue, a `204` status code with no content is returned.
-   *
-   * Otherwise a `404` status code is returned.
-   */
-  "issues/check-user-can-be-assigned-to-issue": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-        assignee: string;
-      };
-    };
-    responses: {
-      /** @description Response if `assignee` can be assigned to `issue_number` */
-      204: {
-        content: never;
-      };
-      /** @description Response if `assignee` can not be assigned to `issue_number` */
-      404: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-    };
-  };
-  /**
-   * List issue comments
-   * @description You can use the REST API to list comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.
-   *
-   * Issue comments are ordered by ascending ID.
-   */
-  "issues/list-comments": {
-    parameters: {
-      query?: {
-        since?: components["parameters"]["since"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["issue-comment"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-    };
-  };
-  /**
-   * Create an issue comment
-   * @description
-   * You can use the REST API to create comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications).
-   * Creating content too quickly using this endpoint may result in secondary rate limiting.
-   * See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)"
-   * and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)"
-   * for details.
-   */
-  "issues/create-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The contents of the comment. */
-          body: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/issues/comments/1 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["issue-comment"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List issue events
-   * @description Lists all events for an issue.
-   */
-  "issues/list-events": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["issue-event-for-issue"][];
-        };
-      };
-      410: components["responses"]["gone"];
-    };
-  };
-  /**
-   * List labels for an issue
-   * @description Lists all labels for an issue.
-   */
-  "issues/list-labels-on-issue": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["label"][];
-        };
-      };
-      301: components["responses"]["moved_permanently"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-    };
-  };
-  /**
-   * Set labels for an issue
-   * @description Removes any previous labels and sets the new labels for an issue.
-   */
-  "issues/set-labels": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": OneOf<
-          [
-            {
-              /** @description The names of the labels to set for the issue. The labels you set replace any existing labels. You can pass an empty array to remove all labels. Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key. You can also add labels to the existing labels for an issue. For more information, see "[Add labels to an issue](https://docs.github.com/rest/issues/labels#add-labels-to-an-issue)." */
-              labels?: string[];
-            },
-            {
-              labels?: {
-                name: string;
-              }[];
-            },
-          ]
-        >;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["label"][];
-        };
-      };
-      301: components["responses"]["moved_permanently"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Add labels to an issue
-   * @description Adds labels to an issue. If you provide an empty array of labels, all labels are removed from the issue.
-   */
-  "issues/add-labels": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": OneOf<
-          [
-            {
-              /** @description The names of the labels to add to the issue's existing labels. You can pass an empty array to remove all labels. Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key. You can also replace all of the labels for an issue. For more information, see "[Set labels for an issue](https://docs.github.com/rest/issues/labels#set-labels-for-an-issue)." */
-              labels?: string[];
-            },
-            {
-              labels?: {
-                name: string;
-              }[];
-            },
-          ]
-        >;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["label"][];
-        };
-      };
-      301: components["responses"]["moved_permanently"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove all labels from an issue
-   * @description Removes all labels from an issue.
-   */
-  "issues/remove-all-labels": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      301: components["responses"]["moved_permanently"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-    };
-  };
-  /**
-   * Remove a label from an issue
-   * @description Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist.
-   */
-  "issues/remove-label": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-        name: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["label"][];
-        };
-      };
-      301: components["responses"]["moved_permanently"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-    };
-  };
-  /**
-   * Lock an issue
-   * @description Users with push access can lock an issue or pull request's conversation.
-   *
-   * 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 verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-   */
-  "issues/lock": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The reason for locking the issue or pull request conversation. Lock will fail if you don't use one of these reasons:
-           *  * `off-topic`
-           *  * `too heated`
-           *  * `resolved`
-           *  * `spam`
-           * @enum {string}
-           */
-          lock_reason?: "off-topic" | "too heated" | "resolved" | "spam";
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Unlock an issue
-   * @description Users with push access can unlock an issue's conversation.
-   */
-  "issues/unlock": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List reactions for an issue
-   * @description List the reactions to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue).
-   */
-  "reactions/list-for-issue": {
-    parameters: {
-      query?: {
-        /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to an issue. */
-        content?:
-          | "+1"
-          | "-1"
-          | "laugh"
-          | "confused"
-          | "heart"
-          | "hooray"
-          | "rocket"
-          | "eyes";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["reaction"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-    };
-  };
-  /**
-   * Create reaction for an issue
-   * @description Create a reaction to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue). A response with an HTTP `200` status means that you already added the reaction type to this issue.
-   */
-  "reactions/create-for-issue": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the issue.
-           * @enum {string}
-           */
-          content:
-            | "+1"
-            | "-1"
-            | "laugh"
-            | "confused"
-            | "heart"
-            | "hooray"
-            | "rocket"
-            | "eyes";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Delete an issue reaction
-   * @description **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/issues/:issue_number/reactions/:reaction_id`.
-   *
-   * Delete a reaction to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue).
-   */
-  "reactions/delete-for-issue": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-        reaction_id: components["parameters"]["reaction-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List timeline events for an issue
-   * @description List all timeline events for an issue.
-   */
-  "issues/list-events-for-timeline": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        issue_number: components["parameters"]["issue-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["timeline-issue-events"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-    };
-  };
-  /** List deploy keys */
-  "repos/list-deploy-keys": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["deploy-key"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create a deploy key
-   * @description You can create a read-only deploy key.
-   */
-  "repos/create-deploy-key": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description A name for the key. */
-          title?: string;
-          /** @description The contents of the key. */
-          key: string;
-          /**
-           * @description If `true`, the key will only be able to read repository contents. Otherwise, the key will be able to read and write.
-           *
-           * Deploy keys with write access can perform the same actions as an organization member with admin access, or a collaborator on a personal repository. For more information, see "[Repository permission levels for an organization](https://docs.github.com/articles/repository-permission-levels-for-an-organization/)" and "[Permission levels for a user account repository](https://docs.github.com/articles/permission-levels-for-a-user-account-repository/)."
-           */
-          read_only?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/keys/1 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["deploy-key"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /** Get a deploy key */
-  "repos/get-deploy-key": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        key_id: components["parameters"]["key-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["deploy-key"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a deploy key
-   * @description Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead.
-   */
-  "repos/delete-deploy-key": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        key_id: components["parameters"]["key-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List labels for a repository
-   * @description Lists all labels for a repository.
-   */
-  "issues/list-labels-for-repo": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["label"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a label
-   * @description Creates a label for the specified repository with the given name and color. The name and color parameters are required. The color must be a valid [hexadecimal color code](http://www.color-hex.com/).
-   */
-  "issues/create-label": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see "[Emoji cheat sheet](https://github.com/ikatyang/emoji-cheat-sheet)." */
-          name: string;
-          /** @description The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`. */
-          color?: string;
-          /** @description A short description of the label. Must be 100 characters or fewer. */
-          description?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/labels/bug */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["label"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a label
-   * @description Gets a label using the given name.
-   */
-  "issues/get-label": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        name: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["label"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a label
-   * @description Deletes a label using the given label name.
-   */
-  "issues/delete-label": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        name: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update a label
-   * @description Updates a label using the given label name.
-   */
-  "issues/update-label": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        name: string;
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The new name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see "[Emoji cheat sheet](https://github.com/ikatyang/emoji-cheat-sheet)." */
-          new_name?: string;
-          /** @description The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`. */
-          color?: string;
-          /** @description A short description of the label. Must be 100 characters or fewer. */
-          description?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["label"];
-        };
-      };
-    };
-  };
-  /**
-   * List repository languages
-   * @description Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language.
-   */
-  "repos/list-languages": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["language"];
-        };
-      };
-    };
-  };
-  /**
-   * Get the license for a repository
-   * @description This method returns the contents of the repository's license file, if one is detected.
-   *
-   * Similar to [Get repository content](https://docs.github.com/rest/repos/contents#get-repository-content), this method also supports [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw license content or rendered license HTML.
-   */
-  "licenses/get-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["license-content"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Sync a fork branch with the upstream repository
-   * @description Sync a branch of a forked repository to keep it up-to-date with the upstream repository.
-   */
-  "repos/merge-upstream": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the branch which should be updated to match upstream. */
-          branch: string;
-        };
-      };
-    };
-    responses: {
-      /** @description The branch has been successfully synced with the upstream repository */
-      200: {
-        content: {
-          "application/json": components["schemas"]["merged-upstream"];
-        };
-      };
-      /** @description The branch could not be synced because of a merge conflict */
-      409: {
-        content: never;
-      };
-      /** @description The branch could not be synced for some other reason */
-      422: {
-        content: never;
-      };
-    };
-  };
-  /** Merge a branch */
-  "repos/merge": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the base branch that the head will be merged into. */
-          base: string;
-          /** @description The head to merge. This can be a branch name or a commit SHA1. */
-          head: string;
-          /** @description Commit message to use for the merge commit. If omitted, a default message will be used. */
-          commit_message?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Successful Response (The resulting merge commit) */
-      201: {
-        content: {
-          "application/json": components["schemas"]["commit"];
-        };
-      };
-      /** @description Response when already merged */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-      /** @description Not Found when the base or head does not exist */
-      404: {
-        content: never;
-      };
-      /** @description Conflict when there is a merge conflict */
-      409: {
-        content: never;
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List milestones
-   * @description Lists milestones for a repository.
-   */
-  "issues/list-milestones": {
-    parameters: {
-      query?: {
-        /** @description The state of the milestone. Either `open`, `closed`, or `all`. */
-        state?: "open" | "closed" | "all";
-        /** @description What to sort results by. Either `due_on` or `completeness`. */
-        sort?: "due_on" | "completeness";
-        /** @description The direction of the sort. Either `asc` or `desc`. */
-        direction?: "asc" | "desc";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["milestone"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a milestone
-   * @description Creates a milestone.
-   */
-  "issues/create-milestone": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The title of the milestone. */
-          title: string;
-          /**
-           * @description The state of the milestone. Either `open` or `closed`.
-           * @default open
-           * @enum {string}
-           */
-          state?: "open" | "closed";
-          /** @description A description of the milestone. */
-          description?: string;
-          /**
-           * Format: date-time
-           * @description The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
-           */
-          due_on?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/milestones/1 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["milestone"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a milestone
-   * @description Gets a milestone using the given milestone number.
-   */
-  "issues/get-milestone": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        milestone_number: components["parameters"]["milestone-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["milestone"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a milestone
-   * @description Deletes a milestone using the given milestone number.
-   */
-  "issues/delete-milestone": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        milestone_number: components["parameters"]["milestone-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Update a milestone */
-  "issues/update-milestone": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        milestone_number: components["parameters"]["milestone-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The title of the milestone. */
-          title?: string;
-          /**
-           * @description The state of the milestone. Either `open` or `closed`.
-           * @default open
-           * @enum {string}
-           */
-          state?: "open" | "closed";
-          /** @description A description of the milestone. */
-          description?: string;
-          /**
-           * Format: date-time
-           * @description The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
-           */
-          due_on?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["milestone"];
-        };
-      };
-    };
-  };
-  /**
-   * List labels for issues in a milestone
-   * @description Lists labels for issues in a milestone.
-   */
-  "issues/list-labels-for-milestone": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        milestone_number: components["parameters"]["milestone-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["label"][];
-        };
-      };
-    };
-  };
-  /**
-   * List repository notifications for the authenticated user
-   * @description Lists all notifications for the current user in the specified repository.
-   */
-  "activity/list-repo-notifications-for-authenticated-user": {
-    parameters: {
-      query?: {
-        all?: components["parameters"]["all"];
-        participating?: components["parameters"]["participating"];
-        since?: components["parameters"]["since"];
-        before?: components["parameters"]["before"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["thread"][];
-        };
-      };
-    };
-  };
-  /**
-   * Mark repository notifications as read
-   * @description Marks all notifications in a repository as "read" for the current user. If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List repository notifications for the authenticated user](https://docs.github.com/rest/activity/notifications#list-repository-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`.
-   */
-  "activity/mark-repo-notifications-as-read": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * Format: date-time
-           * @description Describes the last point that notifications were checked. Anything updated since this time will not be marked as read. If you omit this parameter, all notifications are marked as read. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp.
-           */
-          last_read_at?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      202: {
-        content: {
-          "application/json": {
-            message?: string;
-            url?: string;
-          };
-        };
-      };
-      /** @description Reset Content */
-      205: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get a GitHub Pages site
-   * @description Gets information about a GitHub Pages site.
-   *
-   * A token with the `repo` scope is required. GitHub Apps must have the `pages:read` permission.
-   */
-  "repos/get-pages": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["page"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update information about a GitHub Pages site
-   * @description Updates information for a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages).
-   *
-   * To use this endpoint, you must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. A token with the `repo` scope or Pages write permission is required. GitHub Apps must have the `administration:write` and `pages:write` permissions.
-   */
-  "repos/update-information-about-pages-site": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Specify a custom domain for the repository. Sending a `null` value will remove the custom domain. For more about custom domains, see "[Using a custom domain with GitHub Pages](https://docs.github.com/articles/using-a-custom-domain-with-github-pages/)." */
-          cname?: string | null;
-          /** @description Specify whether HTTPS should be enforced for the repository. */
-          https_enforced?: boolean;
-          /**
-           * @description The process by which the GitHub Pages site will be built. `workflow` means that the site is built by a custom GitHub Actions workflow. `legacy` means that the site is built by GitHub when changes are pushed to a specific branch.
-           * @enum {string}
-           */
-          build_type?: "legacy" | "workflow";
-          source?:
-            | ("gh-pages" | "master" | "master /docs")
-            | {
-                /** @description The repository branch used to publish your site's source files. */
-                branch: string;
-                /**
-                 * @description The repository directory that includes the source files for the Pages site. Allowed paths are `/` or `/docs`.
-                 * @enum {string}
-                 */
-                path: "/" | "/docs";
-              };
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      400: components["responses"]["bad_request"];
-      409: components["responses"]["conflict"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Create a GitHub Pages site
-   * @description Configures a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages)."
-   *
-   * To use this endpoint, you must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. A token with the `repo` scope or Pages write permission is required. GitHub Apps must have the `administration:write` and `pages:write` permissions.
-   */
-  "repos/create-pages-site": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The process in which the Page will be built. Possible values are `"legacy"` and `"workflow"`.
-           * @enum {string}
-           */
-          build_type?: "legacy" | "workflow";
-          /** @description The source branch and directory used to publish your Pages site. */
-          source?: {
-            /** @description The repository branch used to publish your site's source files. */
-            branch: string;
-            /**
-             * @description The repository directory that includes the source files for the Pages site. Allowed paths are `/` or `/docs`. Default: `/`
-             * @default /
-             * @enum {string}
-             */
-            path?: "/" | "/docs";
-          };
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["page"];
-        };
-      };
-      409: components["responses"]["conflict"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Delete a GitHub Pages site
-   * @description Deletes a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages).
-   *
-   * To use this endpoint, you must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. A token with the `repo` scope or Pages write permission is required. GitHub Apps must have the `administration:write` and `pages:write` permissions.
-   */
-  "repos/delete-pages-site": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      409: components["responses"]["conflict"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List GitHub Pages builds
-   * @description Lists builts of a GitHub Pages site.
-   *
-   * A token with the `repo` scope is required. GitHub Apps must have the `pages:read` permission.
-   */
-  "repos/list-pages-builds": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["page-build"][];
-        };
-      };
-    };
-  };
-  /**
-   * Request a GitHub Pages build
-   * @description You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures.
-   *
-   * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes.
-   */
-  "repos/request-pages-build": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["page-build-status"];
-        };
-      };
-    };
-  };
-  /**
-   * Get latest Pages build
-   * @description Gets information about the single most recent build of a GitHub Pages site.
-   *
-   * A token with the `repo` scope is required. GitHub Apps must have the `pages:read` permission.
-   */
-  "repos/get-latest-pages-build": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["page-build"];
-        };
-      };
-    };
-  };
-  /**
-   * Get GitHub Pages build
-   * @description Gets information about a GitHub Pages build.
-   *
-   * A token with the `repo` scope is required. GitHub Apps must have the `pages:read` permission.
-   */
-  "repos/get-pages-build": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        build_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["page-build"];
-        };
-      };
-    };
-  };
-  /**
-   * Create a GitHub Pages deployment
-   * @description Create a GitHub Pages deployment for a repository.
-   *
-   * Users must have write permissions. GitHub Apps must have the `pages:write` permission to use this endpoint.
-   */
-  "repos/create-pages-deployment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The URL of an artifact that contains the .zip or .tar of static assets to deploy. The artifact belongs to the repository. */
-          artifact_url: string;
-          /**
-           * @description The target environment for this GitHub Pages deployment.
-           * @default github-pages
-           */
-          environment?: string;
-          /**
-           * @description A unique string that represents the version of the build for this deployment.
-           * @default GITHUB_SHA
-           */
-          pages_build_version: string;
-          /** @description The OIDC token issued by GitHub Actions certifying the origin of the deployment. */
-          oidc_token: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["page-deployment"];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a DNS health check for GitHub Pages
-   * @description Gets a health check of the DNS settings for the `CNAME` record configured for a repository's GitHub Pages.
-   *
-   * The first request to this endpoint returns a `202 Accepted` status and starts an asynchronous background task to get the results for the domain. After the background task completes, subsequent requests to this endpoint return a `200 OK` status with the health check results in the response.
-   *
-   * To use this endpoint, you must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. A token with the `repo` scope or Pages write permission is required. GitHub Apps must have the `administrative:write` and `pages:write` permissions.
-   */
-  "repos/get-pages-health-check": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pages-health-check"];
-        };
-      };
-      /** @description Empty response */
-      202: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      /** @description Custom domains are not available for GitHub Pages */
-      400: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      /** @description There isn't a CNAME for this page */
-      422: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Enable private vulnerability reporting for a repository
-   * @description Enables private vulnerability reporting for a repository. The authenticated user must have admin access to the repository. For more information, see "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)."
-   */
-  "repos/enable-private-vulnerability-reporting": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      204: components["responses"]["no_content"];
-      422: components["responses"]["bad_request"];
-    };
-  };
-  /**
-   * Disable private vulnerability reporting for a repository
-   * @description Disables private vulnerability reporting for a repository. The authenticated user must have admin access to the repository. For more information, see "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)".
-   */
-  "repos/disable-private-vulnerability-reporting": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      204: components["responses"]["no_content"];
-      422: components["responses"]["bad_request"];
-    };
-  };
-  /**
-   * List repository projects
-   * @description Lists the projects in a repository. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-   */
-  "projects/list-for-repo": {
-    parameters: {
-      query?: {
-        /** @description Indicates the state of the projects to return. */
-        state?: "open" | "closed" | "all";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["project"][];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Create a repository project
-   * @description Creates a repository project board. Returns a `410 Gone` status if projects are disabled in the repository or if the repository does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-   */
-  "projects/create-for-repo": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the project. */
-          name: string;
-          /** @description The description of the project. */
-          body?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["project"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      410: components["responses"]["gone"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Get all custom property values for a repository
-   * @description Gets all custom property values that are set for a repository.
-   * Users with read access to the repository can use this endpoint.
-   */
-  "repos/get-custom-properties-values": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["custom-property-value"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List pull requests
-   * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   */
-  "pulls/list": {
-    parameters: {
-      query?: {
-        /** @description Either `open`, `closed`, or `all` to filter by state. */
-        state?: "open" | "closed" | "all";
-        /** @description Filter pulls by head user or head organization and branch name in the format of `user:ref-name` or `organization:ref-name`. For example: `github:new-script-format` or `octocat:test-branch`. */
-        head?: string;
-        /** @description Filter pulls by base branch name. Example: `gh-pages`. */
-        base?: string;
-        /** @description What to sort results by. `popularity` will sort by the number of comments. `long-running` will sort by date created and will limit the results to pull requests that have been open for more than a month and have had activity within the past month. */
-        sort?: "created" | "updated" | "popularity" | "long-running";
-        /** @description The direction of the sort. Default: `desc` when sort is `created` or sort is not specified, otherwise `asc`. */
-        direction?: "asc" | "desc";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["pull-request-simple"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Create a pull request
-   * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request.
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details.
-   */
-  "pulls/create": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The title of the new pull request. Required unless `issue` is specified. */
-          title?: string;
-          /** @description The name of the branch where your changes are implemented. For cross-repository pull requests in the same network, namespace `head` with a user like this: `username:branch`. */
-          head: string;
-          /**
-           * Format: repo.nwo
-           * @description The name of the repository where the changes in the pull request were made. This field is required for cross-repository pull requests if both repositories are owned by the same organization.
-           * @example octo-org/octo-repo
-           */
-          head_repo?: string;
-          /** @description The name of the branch you want the changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repository that requests a merge to a base of another repository. */
-          base: string;
-          /** @description The contents of the pull request. */
-          body?: string;
-          /** @description Indicates whether [maintainers can modify](https://docs.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request. */
-          maintainer_can_modify?: boolean;
-          /** @description Indicates whether the pull request is a draft. See "[Draft Pull Requests](https://docs.github.com/articles/about-pull-requests#draft-pull-requests)" in the GitHub Help documentation to learn more. */
-          draft?: boolean;
-          /**
-           * Format: int64
-           * @description An issue in the repository to convert to a pull request. The issue title, body, and comments will become the title, body, and comments on the new pull request. Required unless `title` is specified.
-           * @example 1
-           */
-          issue?: number;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/pulls/1347 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["pull-request"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List review comments in a repository
-   * @description Lists review comments for all pull requests in a repository. By default, review comments are in ascending order by ID.
-   */
-  "pulls/list-review-comments-for-repo": {
-    parameters: {
-      query?: {
-        sort?: "created" | "updated" | "created_at";
-        /** @description The direction to sort results. Ignored without `sort` parameter. */
-        direction?: "asc" | "desc";
-        since?: components["parameters"]["since"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["pull-request-review-comment"][];
-        };
-      };
-    };
-  };
-  /**
-   * Get a review comment for a pull request
-   * @description Provides details for a review comment.
-   */
-  "pulls/get-review-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pull-request-review-comment"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a review comment for a pull request
-   * @description Deletes a review comment.
-   */
-  "pulls/delete-review-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update a review comment for a pull request
-   * @description Enables you to edit a review comment.
-   */
-  "pulls/update-review-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The text of the reply to the review comment. */
-          body: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pull-request-review-comment"];
-        };
-      };
-    };
-  };
-  /**
-   * List reactions for a pull request review comment
-   * @description List the reactions to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request).
-   */
-  "reactions/list-for-pull-request-review-comment": {
-    parameters: {
-      query?: {
-        /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a pull request review comment. */
-        content?:
-          | "+1"
-          | "-1"
-          | "laugh"
-          | "confused"
-          | "heart"
-          | "hooray"
-          | "rocket"
-          | "eyes";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["reaction"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create reaction for a pull request review comment
-   * @description Create a reaction to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request). A response with an HTTP `200` status means that you already added the reaction type to this pull request review comment.
-   */
-  "reactions/create-for-pull-request-review-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the pull request review comment.
-           * @enum {string}
-           */
-          content:
-            | "+1"
-            | "-1"
-            | "laugh"
-            | "confused"
-            | "heart"
-            | "hooray"
-            | "rocket"
-            | "eyes";
-        };
-      };
-    };
-    responses: {
-      /** @description Reaction exists */
-      200: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-      /** @description Reaction created */
-      201: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Delete a pull request comment reaction
-   * @description **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/pulls/comments/:comment_id/reactions/:reaction_id.`
-   *
-   * Delete a reaction to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request).
-   */
-  "reactions/delete-for-pull-request-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        comment_id: components["parameters"]["comment-id"];
-        reaction_id: components["parameters"]["reaction-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get a pull request
-   * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * Lists details of a pull request by providing its number.
-   *
-   * When you get, [create](https://docs.github.com/rest/pulls/pulls/#create-a-pull-request), or [edit](https://docs.github.com/rest/pulls/pulls#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)".
-   *
-   * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit.
-   *
-   * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request:
-   *
-   * *   If merged as a [merge commit](https://docs.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit.
-   * *   If merged via a [squash](https://docs.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch.
-   * *   If [rebased](https://docs.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to.
-   *
-   * Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
-   */
-  "pulls/get": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    responses: {
-      /** @description Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pull-request"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Update a pull request
-   * @description Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request.
-   */
-  "pulls/update": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The title of the pull request. */
-          title?: string;
-          /** @description The contents of the pull request. */
-          body?: string;
-          /**
-           * @description State of this Pull Request. Either `open` or `closed`.
-           * @enum {string}
-           */
-          state?: "open" | "closed";
-          /** @description The name of the branch you want your changes pulled into. This should be an existing branch on the current repository. You cannot update the base branch on a pull request to point to another repository. */
-          base?: string;
-          /** @description Indicates whether [maintainers can modify](https://docs.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request. */
-          maintainer_can_modify?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pull-request"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Create a codespace from a pull request
-   * @description Creates a codespace owned by the authenticated user for the specified pull request.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-   */
-  "codespaces/create-with-pr-for-authenticated-user": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The requested location for a new codespace. Best efforts are made to respect this upon creation. Assigned by IP if not provided. */
-          location?: string;
-          /**
-           * @description The geographic area for this codespace. If not specified, the value is assigned by IP. This property replaces `location`, which is being deprecated.
-           * @enum {string}
-           */
-          geo?: "EuropeWest" | "SoutheastAsia" | "UsEast" | "UsWest";
-          /** @description IP for location auto-detection when proxying a request */
-          client_ip?: string;
-          /** @description Machine type to use for this codespace */
-          machine?: string;
-          /** @description Path to devcontainer.json config to use for this codespace */
-          devcontainer_path?: string;
-          /** @description Whether to authorize requested permissions from devcontainer.json */
-          multi_repo_permissions_opt_out?: boolean;
-          /** @description Working directory for this codespace */
-          working_directory?: string;
-          /** @description Time in minutes before codespace stops from inactivity */
-          idle_timeout_minutes?: number;
-          /** @description Display name for this codespace */
-          display_name?: string;
-          /** @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days). */
-          retention_period_minutes?: number;
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response when the codespace was successfully created */
-      201: {
-        content: {
-          "application/json": components["schemas"]["codespace"];
-        };
-      };
-      /** @description Response when the codespace creation partially failed but is being retried in the background */
-      202: {
-        content: {
-          "application/json": components["schemas"]["codespace"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List review comments on a pull request
-   * @description Lists all review comments for a pull request. By default, review comments are in ascending order by ID.
-   */
-  "pulls/list-review-comments": {
-    parameters: {
-      query?: {
-        sort?: components["parameters"]["sort"];
-        /** @description The direction to sort results. Ignored without `sort` parameter. */
-        direction?: "asc" | "desc";
-        since?: components["parameters"]["since"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["pull-request-review-comment"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create a review comment for a pull request
-   * @description
-   * Creates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see "[Create an issue comment](https://docs.github.com/rest/issues/comments#create-an-issue-comment)." We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff.
-   *
-   * The `position` parameter is deprecated. If you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required.
-   *
-   * **Note:** The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   */
-  "pulls/create-review-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The text of the review comment. */
-          body: string;
-          /** @description The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`. */
-          commit_id: string;
-          /** @description The relative path to the file that necessitates a comment. */
-          path: string;
-          /**
-           * @deprecated
-           * @description **This parameter is deprecated. Use `line` instead**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
-           */
-          position?: number;
-          /**
-           * @description In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://docs.github.com/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
-           * @enum {string}
-           */
-          side?: "LEFT" | "RIGHT";
-          /** @description **Required unless using `subject_type:file`**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to. */
-          line?: number;
-          /** @description **Required when using multi-line comments unless using `in_reply_to`**. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://docs.github.com/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. */
-          start_line?: number;
-          /**
-           * @description **Required when using multi-line comments unless using `in_reply_to`**. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://docs.github.com/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
-           * @enum {string}
-           */
-          start_side?: "LEFT" | "RIGHT" | "side";
-          /**
-           * @description The ID of the review comment to reply to. To find the ID of a review comment with ["List review comments on a pull request"](#list-review-comments-on-a-pull-request). When specified, all parameters other than `body` in the request body are ignored.
-           * @example 2
-           */
-          in_reply_to?: number;
-          /**
-           * @description The level at which the comment is targeted.
-           * @enum {string}
-           */
-          subject_type?: "line" | "file";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["pull-request-review-comment"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Create a reply for a review comment
-   * @description Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported.
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   */
-  "pulls/create-reply-for-review-comment": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-        comment_id: components["parameters"]["comment-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The text of the review comment. */
-          body: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["pull-request-review-comment"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List commits on a pull request
-   * @description Lists a maximum of 250 commits for a pull request. To receive a complete commit list for pull requests with more than 250 commits, use the [List commits](https://docs.github.com/rest/commits/commits#list-commits) endpoint.
-   */
-  "pulls/list-commits": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["commit"][];
-        };
-      };
-    };
-  };
-  /**
-   * List pull requests files
-   * @description **Note:** Responses include a maximum of 3000 files. The paginated response returns 30 files per page by default.
-   */
-  "pulls/list-files": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["diff-entry"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-      500: components["responses"]["internal_error"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Check if a pull request has been merged
-   * @description Checks if a pull request has been merged into the base branch. The HTTP status of the response indicates whether or not the pull request has been merged; the response body is empty.
-   */
-  "pulls/check-if-merged": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    responses: {
-      /** @description Response if pull request has been merged */
-      204: {
-        content: never;
-      };
-      /** @description Not Found if pull request has not been merged */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Merge a pull request
-   * @description Merges a pull request into the base branch.
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   */
-  "pulls/merge": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description Title for the automatic commit message. */
-          commit_title?: string;
-          /** @description Extra detail to append to automatic commit message. */
-          commit_message?: string;
-          /** @description SHA that pull request head must match to allow merge. */
-          sha?: string;
-          /**
-           * @description The merge method to use.
-           * @enum {string}
-           */
-          merge_method?: "merge" | "squash" | "rebase";
-        } | null;
-      };
-    };
-    responses: {
-      /** @description if merge was successful */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pull-request-merge-result"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      /** @description Method Not Allowed if merge cannot be performed */
-      405: {
-        content: {
-          "application/json": {
-            message?: string;
-            documentation_url?: string;
-          };
-        };
-      };
-      /** @description Conflict if sha was provided and pull request head did not match */
-      409: {
-        content: {
-          "application/json": {
-            message?: string;
-            documentation_url?: string;
-          };
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get all requested reviewers for a pull request
-   * @description 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](https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request) operation.
-   */
-  "pulls/list-requested-reviewers": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["pull-request-review-request"];
-        };
-      };
-    };
-  };
-  /**
-   * Request reviewers for a pull request
-   * @description This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   */
-  "pulls/request-reviewers": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description An array of user `login`s that will be requested. */
-          reviewers?: string[];
-          /** @description An array of team `slug`s that will be requested. */
-          team_reviewers?: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["pull-request-simple"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      /** @description Unprocessable Entity if user is not a collaborator */
-      422: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Remove requested reviewers from a pull request
-   * @description Removes review requests from a pull request for a given set of users and/or teams.
-   */
-  "pulls/remove-requested-reviewers": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description An array of user `login`s that will be removed. */
-          reviewers: string[];
-          /** @description An array of team `slug`s that will be removed. */
-          team_reviewers?: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pull-request-simple"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List reviews for a pull request
-   * @description The list of reviews returns in chronological order.
-   */
-  "pulls/list-reviews": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    responses: {
-      /** @description The list of reviews returns in chronological order. */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["pull-request-review"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create a review for a pull request
-   * @description This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   *
-   * Pull request reviews created in the `PENDING` state are not submitted and therefore do not include the `submitted_at` property in the response. To create a pending review for a pull request, leave the `event` parameter blank. For more information about submitting a `PENDING` review, see "[Submit a review for a pull request](https://docs.github.com/rest/pulls/reviews#submit-a-review-for-a-pull-request)."
-   *
-   * **Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API offers the `application/vnd.github.v3.diff` [media type](https://docs.github.com/rest/overview/media-types#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) endpoint.
-   *
-   * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
-   */
-  "pulls/create-review": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value. */
-          commit_id?: string;
-          /** @description **Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review. */
-          body?: string;
-          /**
-           * @description The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](https://docs.github.com/rest/pulls/reviews#submit-a-review-for-a-pull-request) when you are ready.
-           * @enum {string}
-           */
-          event?: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
-          /** @description Use the following table to specify the location, destination, and contents of the draft review comment. */
-          comments?: {
-            /** @description The relative path to the file that necessitates a review comment. */
-            path: string;
-            /** @description The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note below. */
-            position?: number;
-            /** @description Text of the review comment. */
-            body: string;
-            /** @example 28 */
-            line?: number;
-            /** @example RIGHT */
-            side?: string;
-            /** @example 26 */
-            start_line?: number;
-            /** @example LEFT */
-            start_side?: string;
-          }[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pull-request-review"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Get a review for a pull request
-   * @description Retrieves a pull request review by its ID.
-   */
-  "pulls/get-review": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-        review_id: components["parameters"]["review-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pull-request-review"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update a review for a pull request
-   * @description Update the review summary comment with new text.
-   */
-  "pulls/update-review": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-        review_id: components["parameters"]["review-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The body text of the pull request review. */
-          body: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pull-request-review"];
-        };
-      };
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Delete a pending review for a pull request
-   * @description Deletes a pull request review that has not been submitted. Submitted reviews cannot be deleted.
-   */
-  "pulls/delete-pending-review": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-        review_id: components["parameters"]["review-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pull-request-review"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * List comments for a pull request review
-   * @description List comments for a specific pull request review.
-   */
-  "pulls/list-comments-for-review": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-        review_id: components["parameters"]["review-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["review-comment"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Dismiss a review for a pull request
-   * @description **Note:** To dismiss a pull request review on a [protected branch](https://docs.github.com/rest/branches/branch-protection), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews.
-   */
-  "pulls/dismiss-review": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-        review_id: components["parameters"]["review-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The message for the pull request review dismissal */
-          message: string;
-          /**
-           * @example "DISMISS"
-           * @enum {string}
-           */
-          event?: "DISMISS";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pull-request-review"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Submit a review for a pull request
-   * @description Submits a pending review for a pull request. For more information about creating a pending review for a pull request, see "[Create a review for a pull request](https://docs.github.com/rest/pulls/reviews#create-a-review-for-a-pull-request)."
-   */
-  "pulls/submit-review": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-        review_id: components["parameters"]["review-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The body text of the pull request review */
-          body?: string;
-          /**
-           * @description The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. When you leave this blank, the API returns _HTTP 422 (Unrecognizable entity)_ and sets the review action state to `PENDING`, which means you will need to re-submit the pull request review using a review action.
-           * @enum {string}
-           */
-          event: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["pull-request-review"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Update a pull request branch
-   * @description Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch.
-   */
-  "pulls/update-branch": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        pull_number: components["parameters"]["pull-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The expected SHA of the pull request's HEAD ref. This is the most recent commit on the pull request's branch. If the expected SHA does not match the pull request's HEAD, you will receive a `422 Unprocessable Entity` status. You can use the "[List commits](https://docs.github.com/rest/commits/commits#list-commits)" endpoint to find the most recent commit SHA. Default: SHA of the pull request's current HEAD ref. */
-          expected_head_sha?: string;
-        } | null;
-      };
-    };
-    responses: {
-      /** @description Response */
-      202: {
-        content: {
-          "application/json": {
-            message?: string;
-            url?: string;
-          };
-        };
-      };
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a repository README
-   * @description Gets the preferred README for a repository.
-   *
-   * READMEs support [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw content or rendered HTML.
-   */
-  "repos/get-readme": {
-    parameters: {
-      query?: {
-        /** @description The name of the commit/branch/tag. Default: the repository’s default branch. */
-        ref?: string;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["content-file"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a repository README for a directory
-   * @description Gets the README from a repository directory.
-   *
-   * READMEs support [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw content or rendered HTML.
-   */
-  "repos/get-readme-in-directory": {
-    parameters: {
-      query?: {
-        /** @description The name of the commit/branch/tag. Default: the repository’s default branch. */
-        ref?: string;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description The alternate path to look for a README file */
-        dir: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["content-file"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List releases
-   * @description This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://docs.github.com/rest/repos/repos#list-repository-tags).
-   *
-   * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases.
-   */
-  "repos/list-releases": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["release"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a release
-   * @description Users with push access to the repository can create a release.
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   */
-  "repos/create-release": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the tag. */
-          tag_name: string;
-          /** @description Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch. */
-          target_commitish?: string;
-          /** @description The name of the release. */
-          name?: string;
-          /** @description Text describing the contents of the tag. */
-          body?: string;
-          /**
-           * @description `true` to create a draft (unpublished) release, `false` to create a published one.
-           * @default false
-           */
-          draft?: boolean;
-          /**
-           * @description `true` to identify the release as a prerelease. `false` to identify the release as a full release.
-           * @default false
-           */
-          prerelease?: boolean;
-          /** @description If specified, a discussion of the specified category is created and linked to the release. The value must be a category that already exists in the repository. For more information, see "[Managing categories for discussions in your repository](https://docs.github.com/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository)." */
-          discussion_category_name?: string;
-          /**
-           * @description Whether to automatically generate the name and body for this release. If `name` is specified, the specified name will be used; otherwise, a name will be automatically generated. If `body` is specified, the body will be pre-pended to the automatically generated notes.
-           * @default false
-           */
-          generate_release_notes?: boolean;
-          /**
-           * @description Specifies whether this release should be set as the latest release for the repository. Drafts and prereleases cannot be set as latest. Defaults to `true` for newly published releases. `legacy` specifies that the latest release should be determined based on the release creation date and higher semantic version.
-           * @default true
-           * @enum {string}
-           */
-          make_latest?: "true" | "false" | "legacy";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/releases/1 */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["release"];
-        };
-      };
-      /** @description Not Found if the discussion category name is invalid */
-      404: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a release asset
-   * @description To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://docs.github.com/rest/overview/media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response.
-   */
-  "repos/get-release-asset": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        asset_id: components["parameters"]["asset-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["release-asset"];
-        };
-      };
-      302: components["responses"]["found"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Delete a release asset */
-  "repos/delete-release-asset": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        asset_id: components["parameters"]["asset-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update a release asset
-   * @description Users with push access to the repository can edit a release asset.
-   */
-  "repos/update-release-asset": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        asset_id: components["parameters"]["asset-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The file name of the asset. */
-          name?: string;
-          /** @description An alternate short description of the asset. Used in place of the filename. */
-          label?: string;
-          /** @example "uploaded" */
-          state?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["release-asset"];
-        };
-      };
-    };
-  };
-  /**
-   * Generate release notes content for a release
-   * @description Generate a name and body describing a [release](https://docs.github.com/rest/releases/releases#get-a-release). The body content will be markdown formatted and contain information like the changes since last release and users who contributed. The generated release notes are not saved anywhere. They are intended to be generated and used when creating a new release.
-   */
-  "repos/generate-release-notes": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The tag name for the release. This can be an existing tag or a new one. */
-          tag_name: string;
-          /** @description Specifies the commitish value that will be the target for the release's tag. Required if the supplied tag_name does not reference an existing tag. Ignored if the tag_name already exists. */
-          target_commitish?: string;
-          /** @description The name of the previous tag to use as the starting point for the release notes. Use to manually specify the range for the set of changes considered as part this release. */
-          previous_tag_name?: string;
-          /** @description Specifies a path to a file in the repository containing configuration settings used for generating the release notes. If unspecified, the configuration file located in the repository at '.github/release.yml' or '.github/release.yaml' will be used. If that is not present, the default configuration will be used. */
-          configuration_file_path?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Name and body of generated release notes */
-      200: {
-        content: {
-          "application/json": components["schemas"]["release-notes-content"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get the latest release
-   * @description View the latest published full release for the repository.
-   *
-   * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published.
-   */
-  "repos/get-latest-release": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["release"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a release by tag name
-   * @description Get a published release with the specified tag.
-   */
-  "repos/get-release-by-tag": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description tag parameter */
-        tag: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["release"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get a release
-   * @description **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia).
-   */
-  "repos/get-release": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        release_id: components["parameters"]["release-id"];
-      };
-    };
-    responses: {
-      /** @description **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia). */
-      200: {
-        content: {
-          "application/json": components["schemas"]["release"];
-        };
-      };
-      /** @description Unauthorized */
-      401: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Delete a release
-   * @description Users with push access to the repository can delete a release.
-   */
-  "repos/delete-release": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        release_id: components["parameters"]["release-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update a release
-   * @description Users with push access to the repository can edit a release.
-   */
-  "repos/update-release": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        release_id: components["parameters"]["release-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The name of the tag. */
-          tag_name?: string;
-          /** @description Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch. */
-          target_commitish?: string;
-          /** @description The name of the release. */
-          name?: string;
-          /** @description Text describing the contents of the tag. */
-          body?: string;
-          /** @description `true` makes the release a draft, and `false` publishes the release. */
-          draft?: boolean;
-          /** @description `true` to identify the release as a prerelease, `false` to identify the release as a full release. */
-          prerelease?: boolean;
-          /**
-           * @description Specifies whether this release should be set as the latest release for the repository. Drafts and prereleases cannot be set as latest. Defaults to `true` for newly published releases. `legacy` specifies that the latest release should be determined based on the release creation date and higher semantic version.
-           * @default true
-           * @enum {string}
-           */
-          make_latest?: "true" | "false" | "legacy";
-          /** @description If specified, a discussion of the specified category is created and linked to the release. The value must be a category that already exists in the repository. If there is already a discussion linked to the release, this parameter is ignored. For more information, see "[Managing categories for discussions in your repository](https://docs.github.com/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository)." */
-          discussion_category_name?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["release"];
-        };
-      };
-      /** @description Not Found if the discussion category name is invalid */
-      404: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-    };
-  };
-  /** List release assets */
-  "repos/list-release-assets": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        release_id: components["parameters"]["release-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["release-asset"][];
-        };
-      };
-    };
-  };
-  /**
-   * Upload a release asset
-   * @description This endpoint makes use of [a Hypermedia relation](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in
-   * the response of the [Create a release endpoint](https://docs.github.com/rest/releases/releases#create-a-release) to upload a release asset.
-   *
-   * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint.
-   *
-   * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example:
-   *
-   * `application/zip`
-   *
-   * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example,
-   * you'll still need to pass your authentication to be able to upload an asset.
-   *
-   * When an upstream failure occurs, you will receive a `502 Bad Gateway` status. This may leave an empty asset with a state of `starter`. It can be safely deleted.
-   *
-   * **Notes:**
-   * *   GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The "[List release assets](https://docs.github.com/rest/releases/assets#list-release-assets)"
-   * endpoint lists the renamed filenames. For more information and help, contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api).
-   * *   To find the `release_id` query the [`GET /repos/{owner}/{repo}/releases/latest` endpoint](https://docs.github.com/rest/releases/releases#get-the-latest-release).
-   * *   If you upload an asset with the same filename as another uploaded asset, you'll receive an error and must delete the old file before you can re-upload the new asset.
-   */
-  "repos/upload-release-asset": {
-    parameters: {
-      query: {
-        name: string;
-        label?: string;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        release_id: components["parameters"]["release-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/octet-stream": string;
-      };
-    };
-    responses: {
-      /** @description Response for successful upload */
-      201: {
-        content: {
-          "application/json": components["schemas"]["release-asset"];
-        };
-      };
-      /** @description Response if you upload an asset with the same filename as another uploaded asset */
-      422: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List reactions for a release
-   * @description List the reactions to a [release](https://docs.github.com/rest/releases/releases#get-a-release).
-   */
-  "reactions/list-for-release": {
-    parameters: {
-      query?: {
-        /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a release. */
-        content?: "+1" | "laugh" | "heart" | "hooray" | "rocket" | "eyes";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        release_id: components["parameters"]["release-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["reaction"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create reaction for a release
-   * @description Create a reaction to a [release](https://docs.github.com/rest/releases/releases#get-a-release). A response with a `Status: 200 OK` means that you already added the reaction type to this release.
-   */
-  "reactions/create-for-release": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        release_id: components["parameters"]["release-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the release.
-           * @enum {string}
-           */
-          content: "+1" | "laugh" | "heart" | "hooray" | "rocket" | "eyes";
-        };
-      };
-    };
-    responses: {
-      /** @description Reaction exists */
-      200: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-      /** @description Reaction created */
-      201: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Delete a release reaction
-   * @description **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/releases/:release_id/reactions/:reaction_id`.
-   *
-   * Delete a reaction to a [release](https://docs.github.com/rest/releases/releases#get-a-release).
-   */
-  "reactions/delete-for-release": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        release_id: components["parameters"]["release-id"];
-        reaction_id: components["parameters"]["reaction-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get rules for a branch
-   * @description Returns all active rules that apply to the specified branch. The branch does not need to exist; rules that would apply
-   * to a branch with that name will be returned. All active rules that apply will be returned, regardless of the level
-   * at which they are configured (e.g. repository or organization). Rules in rulesets with "evaluate" or "disabled"
-   * enforcement statuses are not returned.
-   */
-  "repos/get-branch-rules": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        branch: components["parameters"]["branch"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-rule-detailed"][];
-        };
-      };
-    };
-  };
-  /**
-   * Get all repository rulesets
-   * @description Get all the rulesets for a repository.
-   */
-  "repos/get-repo-rulesets": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        /** @description Include rulesets configured at higher levels that apply to this repository */
-        includes_parents?: boolean;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-ruleset"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Create a repository ruleset
-   * @description Create a ruleset for a repository.
-   */
-  "repos/create-repo-ruleset": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    /** @description Request body */
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the ruleset. */
-          name: string;
-          /**
-           * @description The target of the ruleset.
-           * @enum {string}
-           */
-          target?: "branch" | "tag";
-          enforcement: components["schemas"]["repository-rule-enforcement"];
-          /** @description The actors that can bypass the rules in this ruleset */
-          bypass_actors?: components["schemas"]["repository-ruleset-bypass-actor"][];
-          conditions?: components["schemas"]["repository-ruleset-conditions"];
-          /** @description An array of rules within the ruleset. */
-          rules?: components["schemas"]["repository-rule"][];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["repository-ruleset"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List repository rule suites
-   * @description Lists suites of rule evaluations at the repository level.
-   * For more information, see "[Managing rulesets for a repository](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#viewing-insights-for-rulesets)."
-   */
-  "repos/get-repo-rule-suites": {
-    parameters: {
-      query?: {
-        ref?: components["parameters"]["ref-in-query"];
-        time_period?: components["parameters"]["time-period"];
-        actor_name?: components["parameters"]["actor-name-in-query"];
-        rule_suite_result?: components["parameters"]["rule-suite-result"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["rule-suites"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Get a repository rule suite
-   * @description Gets information about a suite of rule evaluations from within a repository.
-   * For more information, see "[Managing rulesets for a repository](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#viewing-insights-for-rulesets)."
-   */
-  "repos/get-repo-rule-suite": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        rule_suite_id: components["parameters"]["rule-suite-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["rule-suite"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Get a repository ruleset
-   * @description Get a ruleset for a repository.
-   */
-  "repos/get-repo-ruleset": {
-    parameters: {
-      query?: {
-        /** @description Include rulesets configured at higher levels that apply to this repository */
-        includes_parents?: boolean;
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description The ID of the ruleset. */
-        ruleset_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-ruleset"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Update a repository ruleset
-   * @description Update a ruleset for a repository.
-   */
-  "repos/update-repo-ruleset": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description The ID of the ruleset. */
-        ruleset_id: number;
-      };
-    };
-    /** @description Request body */
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The name of the ruleset. */
-          name?: string;
-          /**
-           * @description The target of the ruleset.
-           * @enum {string}
-           */
-          target?: "branch" | "tag";
-          enforcement?: components["schemas"]["repository-rule-enforcement"];
-          /** @description The actors that can bypass the rules in this ruleset */
-          bypass_actors?: components["schemas"]["repository-ruleset-bypass-actor"][];
-          conditions?: components["schemas"]["repository-ruleset-conditions"];
-          /** @description An array of rules within the ruleset. */
-          rules?: components["schemas"]["repository-rule"][];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-ruleset"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Delete a repository ruleset
-   * @description Delete a ruleset for a repository.
-   */
-  "repos/delete-repo-ruleset": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        /** @description The ID of the ruleset. */
-        ruleset_id: number;
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * List secret scanning alerts for a repository
-   * @description Lists secret scanning alerts for an eligible repository, from newest to oldest.
-   * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope.
-   * For public repositories, you may instead use the `public_repo` scope.
-   *
-   * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.
-   */
-  "secret-scanning/list-alerts-for-repo": {
-    parameters: {
-      query?: {
-        state?: components["parameters"]["secret-scanning-alert-state"];
-        secret_type?: components["parameters"]["secret-scanning-alert-secret-type"];
-        resolution?: components["parameters"]["secret-scanning-alert-resolution"];
-        sort?: components["parameters"]["secret-scanning-alert-sort"];
-        direction?: components["parameters"]["direction"];
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-        before?: components["parameters"]["secret-scanning-pagination-before-org-repo"];
-        after?: components["parameters"]["secret-scanning-pagination-after-org-repo"];
-        validity?: components["parameters"]["secret-scanning-alert-validity"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["secret-scanning-alert"][];
-        };
-      };
-      /** @description Repository is public or secret scanning is disabled for the repository */
-      404: {
-        content: never;
-      };
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Get a secret scanning alert
-   * @description Gets a single secret scanning alert detected in an eligible repository.
-   * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope.
-   * For public repositories, you may instead use the `public_repo` scope.
-   *
-   * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.
-   */
-  "secret-scanning/get-alert": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        alert_number: components["parameters"]["alert-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["secret-scanning-alert"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      /** @description Repository is public, or secret scanning is disabled for the repository, or the resource is not found */
-      404: {
-        content: never;
-      };
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Update a secret scanning alert
-   * @description Updates the status of a secret scanning alert in an eligible repository.
-   * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope.
-   * For public repositories, you may instead use the `public_repo` scope.
-   *
-   * GitHub Apps must have the `secret_scanning_alerts` write permission to use this endpoint.
-   */
-  "secret-scanning/update-alert": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        alert_number: components["parameters"]["alert-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          state: components["schemas"]["secret-scanning-alert-state"];
-          resolution?: components["schemas"]["secret-scanning-alert-resolution"];
-          resolution_comment?: components["schemas"]["secret-scanning-alert-resolution-comment"];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["secret-scanning-alert"];
-        };
-      };
-      /** @description Bad request, resolution comment is invalid or the resolution was not changed. */
-      400: {
-        content: never;
-      };
-      /** @description Repository is public, or secret scanning is disabled for the repository, or the resource is not found */
-      404: {
-        content: never;
-      };
-      /** @description State does not match the resolution or resolution comment */
-      422: {
-        content: never;
-      };
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List locations for a secret scanning alert
-   * @description Lists all locations for a given secret scanning alert for an eligible repository.
-   * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope.
-   * For public repositories, you may instead use the `public_repo` scope.
-   *
-   * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.
-   */
-  "secret-scanning/list-locations-for-alert": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        alert_number: components["parameters"]["alert-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["secret-scanning-location"][];
-        };
-      };
-      /** @description Repository is public, or secret scanning is disabled for the repository, or the resource is not found */
-      404: {
-        content: never;
-      };
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List repository security advisories
-   * @description Lists security advisories in a repository.
-   * You must authenticate using an access token with the `repo` scope or `repository_advisories:read` permission
-   * in order to get published security advisories in a private repository, or any unpublished security advisories that you have access to.
-   *
-   * You can access unpublished security advisories from a repository if you are a security manager or administrator of that repository, or if you are a collaborator on any security advisory.
-   */
-  "security-advisories/list-repository-advisories": {
-    parameters: {
-      query?: {
-        direction?: components["parameters"]["direction"];
-        /** @description The property to sort the results by. */
-        sort?: "created" | "updated" | "published";
-        before?: components["parameters"]["pagination-before"];
-        after?: components["parameters"]["pagination-after"];
-        /** @description Number of advisories to return per page. */
-        per_page?: number;
-        /** @description Filter by state of the repository advisories. Only advisories of this state will be returned. */
-        state?: "triage" | "draft" | "published" | "closed";
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-advisory"][];
-        };
-      };
-      400: components["responses"]["bad_request"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a repository security advisory
-   * @description Creates a new repository security advisory.
-   * You must authenticate using an access token with the `repo` scope or `repository_advisories:write` permission to use this endpoint.
-   *
-   * In order to create a draft repository security advisory, you must be a security manager or administrator of that repository.
-   */
-  "security-advisories/create-repository-advisory": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["repository-advisory-create"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["repository-advisory"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Privately report a security vulnerability
-   * @description Report a security vulnerability to the maintainers of the repository.
-   * See "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)" for more information about private vulnerability reporting.
-   */
-  "security-advisories/create-private-vulnerability-report": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["private-vulnerability-report-create"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["repository-advisory"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a repository security advisory
-   * @description Get a repository security advisory using its GitHub Security Advisory (GHSA) identifier.
-   * You can access any published security advisory on a public repository.
-   * You must authenticate using an access token with the `repo` scope or `repository_advisories:read` permission
-   * in order to get a published security advisory in a private repository, or any unpublished security advisory that you have access to.
-   *
-   * You can access an unpublished security advisory from a repository if you are a security manager or administrator of that repository, or if you are a
-   * collaborator on the security advisory.
-   */
-  "security-advisories/get-repository-advisory": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ghsa_id: components["parameters"]["ghsa_id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-advisory"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update a repository security advisory
-   * @description Update a repository security advisory using its GitHub Security Advisory (GHSA) identifier.
-   * You must authenticate using an access token with the `repo` scope or `repository_advisories:write` permission to use this endpoint.
-   *
-   * In order to update any security advisory, you must be a security manager or administrator of that repository,
-   * or a collaborator on the repository security advisory.
-   */
-  "security-advisories/update-repository-advisory": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ghsa_id: components["parameters"]["ghsa_id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["repository-advisory-update"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-advisory"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      /** @description Validation failed, or the endpoint has been spammed. */
-      422: {
-        content: {
-          "application/json": components["schemas"]["validation-error"];
-        };
-      };
-    };
-  };
-  /**
-   * Request a CVE for a repository security advisory
-   * @description If you want a CVE identification number for the security vulnerability in your project, and don't already have one, you can request a CVE identification number from GitHub. For more information see "[Requesting a CVE identification number](https://docs.github.com/code-security/security-advisories/repository-security-advisories/publishing-a-repository-security-advisory#requesting-a-cve-identification-number-optional)."
-   *
-   * You may request a CVE for public repositories, but cannot do so for private repositories.
-   *
-   * You must authenticate using an access token with the `repo` scope or `repository_advisories:write` permission to use this endpoint.
-   *
-   * In order to request a CVE for a repository security advisory, you must be a security manager or administrator of that repository.
-   */
-  "security-advisories/create-repository-advisory-cve-request": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ghsa_id: components["parameters"]["ghsa_id"];
-      };
-    };
-    responses: {
-      202: components["responses"]["accepted"];
-      400: components["responses"]["bad_request"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List stargazers
-   * @description Lists the people that have starred the repository.
-   *
-   * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: `application/vnd.github.star+json`.
-   */
-  "activity/list-stargazers-for-repo": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json":
-            | components["schemas"]["simple-user"][]
-            | components["schemas"]["stargazer"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get the weekly commit activity
-   * @description Returns a weekly aggregate of the number of additions and deletions pushed to a repository.
-   */
-  "repos/get-code-frequency-stats": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Returns a weekly aggregate of the number of additions and deletions pushed to a repository. */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-frequency-stat"][];
-        };
-      };
-      202: components["responses"]["accepted"];
-      204: components["responses"]["no_content"];
-    };
-  };
-  /**
-   * Get the last year of commit activity
-   * @description Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`.
-   */
-  "repos/get-commit-activity-stats": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["commit-activity"][];
-        };
-      };
-      202: components["responses"]["accepted"];
-      204: components["responses"]["no_content"];
-    };
-  };
-  /**
-   * Get all contributor commit activity
-   * @description
-   * Returns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information:
-   *
-   * *   `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time).
-   * *   `a` - Number of additions
-   * *   `d` - Number of deletions
-   * *   `c` - Number of commits
-   */
-  "repos/get-contributors-stats": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["contributor-activity"][];
-        };
-      };
-      202: components["responses"]["accepted"];
-      204: components["responses"]["no_content"];
-    };
-  };
-  /**
-   * Get the weekly commit count
-   * @description Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`.
-   *
-   * The array order is oldest week (index 0) to most recent week.
-   *
-   * The most recent week is seven days ago at UTC midnight to today at UTC midnight.
-   */
-  "repos/get-participation-stats": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description The array order is oldest week (index 0) to most recent week. */
-      200: {
-        content: {
-          "application/json": components["schemas"]["participation-stats"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get the hourly commit count for each day
-   * @description Each array contains the day number, hour number, and number of commits:
-   *
-   * *   `0-6`: Sunday - Saturday
-   * *   `0-23`: Hour of day
-   * *   Number of commits
-   *
-   * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits.
-   */
-  "repos/get-punch-card-stats": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits. */
-      200: {
-        content: {
-          "application/json": components["schemas"]["code-frequency-stat"][];
-        };
-      };
-      204: components["responses"]["no_content"];
-    };
-  };
-  /**
-   * Create a commit status
-   * @description Users with push access in a repository can create commit statuses for a given SHA.
-   *
-   * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error.
-   */
-  "repos/create-commit-status": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        sha: string;
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The state of the status.
-           * @enum {string}
-           */
-          state: "error" | "failure" | "pending" | "success";
-          /**
-           * @description The target URL to associate with this status. This URL will be linked from the GitHub UI to allow users to easily see the source of the status.
-           * For example, if your continuous integration system is posting build status, you would want to provide the deep link for the build output for this specific SHA:
-           * `http://ci.example.com/user/repo/build/sha`
-           */
-          target_url?: string | null;
-          /** @description A short description of the status. */
-          description?: string | null;
-          /**
-           * @description A string label to differentiate this status from the status of other systems. This field is case-insensitive.
-           * @default default
-           */
-          context?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["status"];
-        };
-      };
-    };
-  };
-  /**
-   * List watchers
-   * @description Lists the people watching the specified repository.
-   */
-  "activity/list-watchers-for-repo": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-    };
-  };
-  /**
-   * Get a repository subscription
-   * @description Gets information about whether the authenticated user is subscribed to the repository.
-   */
-  "activity/get-repo-subscription": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description if you subscribe to the repository */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-subscription"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      /** @description Not Found if you don't subscribe to the repository */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Set a repository subscription
-   * @description If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://docs.github.com/rest/activity/watching#delete-a-repository-subscription) completely.
-   */
-  "activity/set-repo-subscription": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description Determines if notifications should be received from this repository. */
-          subscribed?: boolean;
-          /** @description Determines if all notifications should be blocked from this repository. */
-          ignored?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository-subscription"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a repository subscription
-   * @description This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://docs.github.com/rest/activity/watching#set-a-repository-subscription).
-   */
-  "activity/delete-repo-subscription": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /** List repository tags */
-  "repos/list-tags": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["tag"][];
-        };
-      };
-    };
-  };
-  /**
-   * List tag protection states for a repository
-   * @description This returns the tag protection states of a repository.
-   *
-   * This information is only available to repository administrators.
-   */
-  "repos/list-tag-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["tag-protection"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a tag protection state for a repository
-   * @description This creates a tag protection state for a repository.
-   * This endpoint is only available to repository administrators.
-   */
-  "repos/create-tag-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description An optional glob pattern to match against when enforcing tag protection. */
-          pattern: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["tag-protection"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a tag protection state for a repository
-   * @description This deletes a tag protection state for a repository.
-   * This endpoint is only available to repository administrators.
-   */
-  "repos/delete-tag-protection": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        tag_protection_id: components["parameters"]["tag-protection-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Download a repository archive (tar)
-   * @description Gets a redirect URL to download a tar archive for a repository. If you omit `:ref`, the repository’s default branch (usually
-   * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use
-   * the `Location` header to make a second `GET` request.
-   * **Note**: For private repositories, these links are temporary and expire after five minutes.
-   */
-  "repos/download-tarball-archive": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ref: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      302: {
-        headers: {
-          /** @example https://codeload.github.com/me/myprivate/legacy.zip/master?login=me&token=thistokenexpires */
-          Location?: string;
-        };
-        content: never;
-      };
-    };
-  };
-  /**
-   * List repository teams
-   * @description Lists the teams that have access to the specified repository and that are also visible to the authenticated user.
-   *
-   * For a public repository, a team is listed only if that team added the public repository explicitly.
-   *
-   * Personal access tokens require the following scopes:
-   * * `public_repo` to call this endpoint on a public repository
-   * * `repo` to call this endpoint on a private repository (this scope also includes public repositories)
-   *
-   * This endpoint is not compatible with fine-grained personal access tokens.
-   */
-  "repos/list-teams": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["team"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Get all repository topics */
-  "repos/get-all-topics": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["topic"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Replace all repository topics */
-  "repos/replace-all-topics": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description An array of topics to add to the repository. Pass one or more topics to _replace_ the set of existing topics. Send an empty array (`[]`) to clear all topics from the repository. **Note:** Topic `names` cannot contain uppercase letters. */
-          names: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["topic"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * Get repository clones
-   * @description Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.
-   */
-  "repos/get-clones": {
-    parameters: {
-      query?: {
-        per?: components["parameters"]["per"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["clone-traffic"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Get top referral paths
-   * @description Get the top 10 popular contents over the last 14 days.
-   */
-  "repos/get-top-paths": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["content-traffic"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Get top referral sources
-   * @description Get the top 10 referrers over the last 14 days.
-   */
-  "repos/get-top-referrers": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["referrer-traffic"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Get page views
-   * @description Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.
-   */
-  "repos/get-views": {
-    parameters: {
-      query?: {
-        per?: components["parameters"]["per"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["view-traffic"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Transfer a repository
-   * @description A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://docs.github.com/articles/about-repository-transfers/).
-   * You must use a personal access token (classic) or an OAuth token for this endpoint. An installation access token or a fine-grained personal access token cannot be used because they are only granted access to a single account.
-   */
-  "repos/transfer": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The username or organization name the repository will be transferred to. */
-          new_owner: string;
-          /** @description The new name to be given to the repository. */
-          new_name?: string;
-          /** @description ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories. */
-          team_ids?: number[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      202: {
-        content: {
-          "application/json": components["schemas"]["minimal-repository"];
-        };
-      };
-    };
-  };
-  /**
-   * Check if vulnerability alerts are enabled for a repository
-   * @description Shows whether dependency alerts are enabled or disabled for a repository. The authenticated user must have admin read access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)".
-   */
-  "repos/check-vulnerability-alerts": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response if repository is enabled with vulnerability alerts */
-      204: {
-        content: never;
-      };
-      /** @description Not Found if repository is not enabled with vulnerability alerts */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Enable vulnerability alerts
-   * @description Enables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)".
-   */
-  "repos/enable-vulnerability-alerts": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Disable vulnerability alerts
-   * @description Disables dependency alerts and the dependency graph for a repository.
-   * The authenticated user must have admin access to the repository. For more information,
-   * see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)".
-   */
-  "repos/disable-vulnerability-alerts": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Download a repository archive (zip)
-   * @description Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually
-   * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use
-   * the `Location` header to make a second `GET` request.
-   *
-   * **Note**: For private repositories, these links are temporary and expire after five minutes. If the repository is empty, you will receive a 404 when you follow the redirect.
-   */
-  "repos/download-zipball-archive": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        ref: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      302: {
-        headers: {
-          /** @example https://codeload.github.com/me/myprivate/legacy.zip/master?login=me&token=thistokenexpires */
-          Location?: string;
-        };
-        content: never;
-      };
-    };
-  };
-  /**
-   * Create a repository using a template
-   * @description Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. If the repository is not public, the authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/repos/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.
-   *
-   * **OAuth scope requirements**
-   *
-   * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
-   *
-   * *   `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.
-   * *   `repo` scope to create a private repository
-   */
-  "repos/create-using-template": {
-    parameters: {
-      path: {
-        /** @description The account owner of the template repository. The name is not case sensitive. */
-        template_owner: string;
-        /** @description The name of the template repository without the `.git` extension. The name is not case sensitive. */
-        template_repo: string;
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The organization or person who will own the new repository. To create a new repository in an organization, the authenticated user must be a member of the specified organization. */
-          owner?: string;
-          /** @description The name of the new repository. */
-          name: string;
-          /** @description A short description of the new repository. */
-          description?: string;
-          /**
-           * @description Set to `true` to include the directory structure and files from all branches in the template repository, and not just the default branch. Default: `false`.
-           * @default false
-           */
-          include_all_branches?: boolean;
-          /**
-           * @description Either `true` to create a new private repository or `false` to create a new public one.
-           * @default false
-           */
-          private?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["repository"];
-        };
-      };
-    };
-  };
-  /**
-   * List public repositories
-   * @description Lists all public repositories in the order that they were created.
-   *
-   * Note:
-   * - For GitHub Enterprise Server, this endpoint will only list repositories available to all users on the enterprise.
-   * - Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of repositories.
-   */
-  "repos/list-public": {
-    parameters: {
-      query?: {
-        since?: components["parameters"]["since-repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          /** @example <https://api.github.com/repositories?since=364>; rel="next" */
-          Link?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["minimal-repository"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List environment secrets
-   * @description Lists all secrets available in an environment without revealing their
-   * encrypted values.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/list-environment-secrets": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        repository_id: components["parameters"]["repository-id"];
-        environment_name: components["parameters"]["environment-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            secrets: components["schemas"]["actions-secret"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get an environment public key
-   * @description Get the public key for an environment, which you need to encrypt environment
-   * secrets. You need to encrypt a secret before you can create or update secrets.
-   *
-   * Anyone with read access to the repository can use this endpoint.
-   * If the repository is private you must use an access token with the `repo` scope.
-   * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/get-environment-public-key": {
-    parameters: {
-      path: {
-        repository_id: components["parameters"]["repository-id"];
-        environment_name: components["parameters"]["environment-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-public-key"];
-        };
-      };
-    };
-  };
-  /**
-   * Get an environment secret
-   * @description Gets a single environment secret without revealing its encrypted value.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/get-environment-secret": {
-    parameters: {
-      path: {
-        repository_id: components["parameters"]["repository-id"];
-        environment_name: components["parameters"]["environment-name"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-secret"];
-        };
-      };
-    };
-  };
-  /**
-   * Create or update an environment secret
-   * @description Creates or updates an environment secret with an encrypted value. Encrypt your secret using
-   * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/create-or-update-environment-secret": {
-    parameters: {
-      path: {
-        repository_id: components["parameters"]["repository-id"];
-        environment_name: components["parameters"]["environment-name"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an environment public key](https://docs.github.com/rest/actions/secrets#get-an-environment-public-key) endpoint. */
-          encrypted_value: string;
-          /** @description ID of the key you used to encrypt the secret. */
-          key_id: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response when creating a secret */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      /** @description Response when updating a secret */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Delete an environment secret
-   * @description Deletes a secret in an environment using the secret name.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-   */
-  "actions/delete-environment-secret": {
-    parameters: {
-      path: {
-        repository_id: components["parameters"]["repository-id"];
-        environment_name: components["parameters"]["environment-name"];
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Default response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List environment variables
-   * @description Lists all environment variables.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `environments:read` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/list-environment-variables": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["variables-per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        repository_id: components["parameters"]["repository-id"];
-        environment_name: components["parameters"]["environment-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            variables: components["schemas"]["actions-variable"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Create an environment variable
-   * @description Create an environment variable that you can reference in a GitHub Actions workflow.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `environment:write` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/create-environment-variable": {
-    parameters: {
-      path: {
-        repository_id: components["parameters"]["repository-id"];
-        environment_name: components["parameters"]["environment-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the variable. */
-          name: string;
-          /** @description The value of the variable. */
-          value: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-    };
-  };
-  /**
-   * Get an environment variable
-   * @description Gets a specific variable in an environment.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `environments:read` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/get-environment-variable": {
-    parameters: {
-      path: {
-        repository_id: components["parameters"]["repository-id"];
-        environment_name: components["parameters"]["environment-name"];
-        name: components["parameters"]["variable-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-variable"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete an environment variable
-   * @description Deletes an environment variable using the variable name.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `environment:write` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/delete-environment-variable": {
-    parameters: {
-      path: {
-        repository_id: components["parameters"]["repository-id"];
-        name: components["parameters"]["variable-name"];
-        environment_name: components["parameters"]["environment-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update an environment variable
-   * @description Updates an environment variable that you can reference in a GitHub Actions workflow.
-   *
-   * You must authenticate using an access token with the `repo` scope to use this endpoint.
-   * GitHub Apps must have the `environment:write` repository permission to use this endpoint.
-   * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-   */
-  "actions/update-environment-variable": {
-    parameters: {
-      path: {
-        repository_id: components["parameters"]["repository-id"];
-        name: components["parameters"]["variable-name"];
-        environment_name: components["parameters"]["environment-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the variable. */
-          name?: string;
-          /** @description The value of the variable. */
-          value?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Search code
-   * @description Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-   *
-   * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-   *
-   * For example, if you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery) repository, your query would look something like this:
-   *
-   * `q=addClass+in:file+language:js+repo:jquery/jquery`
-   *
-   * This query searches for the keyword `addClass` within a file's contents. The query limits the search to files where the language is JavaScript in the `jquery/jquery` repository.
-   *
-   * Considerations for code search:
-   *
-   * Due to the complexity of searching code, there are a few restrictions on how searches are performed:
-   *
-   * *   Only the _default branch_ is considered. In most cases, this will be the `master` branch.
-   * *   Only files smaller than 384 KB are searchable.
-   * *   You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing
-   * language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is.
-   *
-   * This endpoint requires you to authenticate and limits you to 10 requests per minute.
-   */
-  "search/code": {
-    parameters: {
-      query: {
-        /** @description The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching code](https://docs.github.com/search-github/searching-on-github/searching-code)" for a detailed list of qualifiers. */
-        q: string;
-        /**
-         * @deprecated
-         * @description **This field is deprecated.** Sorts the results of your query. Can only be `indexed`, which indicates how recently a file has been indexed by the GitHub search infrastructure. Default: [best match](https://docs.github.com/rest/search/search#ranking-search-results)
-         */
-        sort?: "indexed";
-        /**
-         * @deprecated
-         * @description **This field is deprecated.** Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
-         */
-        order?: "desc" | "asc";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            incomplete_results: boolean;
-            items: components["schemas"]["code-search-result-item"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Search commits
-   * @description Find commits via various criteria on the default branch (usually `main`). This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-   *
-   * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match
-   * metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-   *
-   * For example, if you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this:
-   *
-   * `q=repo:octocat/Spoon-Knife+css`
-   */
-  "search/commits": {
-    parameters: {
-      query: {
-        /** @description The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching commits](https://docs.github.com/search-github/searching-on-github/searching-commits)" for a detailed list of qualifiers. */
-        q: string;
-        /** @description Sorts the results of your query by `author-date` or `committer-date`. Default: [best match](https://docs.github.com/rest/search/search#ranking-search-results) */
-        sort?: "author-date" | "committer-date";
-        order?: components["parameters"]["order"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            incomplete_results: boolean;
-            items: components["schemas"]["commit-search-result-item"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-    };
-  };
-  /**
-   * Search issues and pull requests
-   * @description Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-   *
-   * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted
-   * search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-   *
-   * For example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this.
-   *
-   * `q=windows+label:bug+language:python+state:open&sort=created&order=asc`
-   *
-   * This query searches for the keyword `windows`, within any open issue that is labeled as `bug`. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results.
-   *
-   * **Note:** For requests made by GitHub Apps with a user access token, you can't retrieve a combination of issues and pull requests in a single query. Requests that don't include the `is:issue` or `is:pull-request` qualifier will receive an HTTP `422 Unprocessable Entity` response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the `is` qualifier, see "[Searching only issues or pull requests](https://docs.github.com/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)."
-   */
-  "search/issues-and-pull-requests": {
-    parameters: {
-      query: {
-        /** @description The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching issues and pull requests](https://docs.github.com/search-github/searching-on-github/searching-issues-and-pull-requests)" for a detailed list of qualifiers. */
-        q: string;
-        /** @description Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://docs.github.com/rest/search/search#ranking-search-results) */
-        sort?:
-          | "comments"
-          | "reactions"
-          | "reactions-+1"
-          | "reactions--1"
-          | "reactions-smile"
-          | "reactions-thinking_face"
-          | "reactions-heart"
-          | "reactions-tada"
-          | "interactions"
-          | "created"
-          | "updated";
-        order?: components["parameters"]["order"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            incomplete_results: boolean;
-            items: components["schemas"]["issue-search-result-item"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Search labels
-   * @description Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-   *
-   * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-   *
-   * For example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this:
-   *
-   * `q=bug+defect+enhancement&repository_id=64778136`
-   *
-   * The labels that best match the query appear first in the search results.
-   */
-  "search/labels": {
-    parameters: {
-      query: {
-        /** @description The id of the repository. */
-        repository_id: number;
-        /** @description The search keywords. This endpoint does not accept qualifiers in the query. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). */
-        q: string;
-        /** @description Sorts the results of your query by when the label was `created` or `updated`. Default: [best match](https://docs.github.com/rest/search/search#ranking-search-results) */
-        sort?: "created" | "updated";
-        order?: components["parameters"]["order"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            incomplete_results: boolean;
-            items: components["schemas"]["label-search-result-item"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Search repositories
-   * @description Find repositories via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-   *
-   * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-   *
-   * For example, if you want to search for popular Tetris repositories written in assembly code, your query might look like this:
-   *
-   * `q=tetris+language:assembly&sort=stars&order=desc`
-   *
-   * This query searches for repositories with the word `tetris` in the name, the description, or the README. The results are limited to repositories where the primary language is assembly. The results are sorted by stars in descending order, so that the most popular repositories appear first in the search results.
-   */
-  "search/repos": {
-    parameters: {
-      query: {
-        /** @description The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching for repositories](https://docs.github.com/articles/searching-for-repositories/)" for a detailed list of qualifiers. */
-        q: string;
-        /** @description Sorts the results of your query by number of `stars`, `forks`, or `help-wanted-issues` or how recently the items were `updated`. Default: [best match](https://docs.github.com/rest/search/search#ranking-search-results) */
-        sort?: "stars" | "forks" | "help-wanted-issues" | "updated";
-        order?: components["parameters"]["order"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            incomplete_results: boolean;
-            items: components["schemas"]["repo-search-result-item"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      422: components["responses"]["validation_failed"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Search topics
-   * @description Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). See "[Searching topics](https://docs.github.com/articles/searching-topics/)" for a detailed list of qualifiers.
-   *
-   * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-   *
-   * For example, if you want to search for topics related to Ruby that are featured on https://github.com/topics. Your query might look like this:
-   *
-   * `q=ruby+is:featured`
-   *
-   * This query searches for topics with the keyword `ruby` and limits the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results.
-   */
-  "search/topics": {
-    parameters: {
-      query: {
-        /** @description The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). */
-        q: string;
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            incomplete_results: boolean;
-            items: components["schemas"]["topic-search-result-item"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-    };
-  };
-  /**
-   * Search users
-   * @description Find users via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-   *
-   * When searching for users, you can get text match metadata for the issue **login**, public **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-   *
-   * For example, if you're looking for a list of popular users, you might try this query:
-   *
-   * `q=tom+repos:%3E42+followers:%3E1000`
-   *
-   * This query searches for users with the name `tom`. The results are restricted to users with more than 42 repositories and over 1,000 followers.
-   *
-   * This endpoint does not accept authentication and will only include publicly visible users. As an alternative, you can use the GraphQL API. The GraphQL API requires authentication and will return private users, including Enterprise Managed Users (EMUs), that you are authorized to view. For more information, see "[GraphQL Queries](https://docs.github.com/graphql/reference/queries#search)."
-   */
-  "search/users": {
-    parameters: {
-      query: {
-        /** @description The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching users](https://docs.github.com/search-github/searching-on-github/searching-users)" for a detailed list of qualifiers. */
-        q: string;
-        /** @description Sorts the results of your query by number of `followers` or `repositories`, or when the person `joined` GitHub. Default: [best match](https://docs.github.com/rest/search/search#ranking-search-results) */
-        sort?: "followers" | "repositories" | "joined";
-        order?: components["parameters"]["order"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            incomplete_results: boolean;
-            items: components["schemas"]["user-search-result-item"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      422: components["responses"]["validation_failed"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * Get a team (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the [Get a team by name](https://docs.github.com/rest/teams/teams#get-a-team-by-name) endpoint.
-   */
-  "teams/get-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-full"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a team (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a team](https://docs.github.com/rest/teams/teams#delete-a-team) endpoint.
-   *
-   * To delete a team, the authenticated user must be an organization owner or team maintainer.
-   *
-   * If you are an organization owner, deleting a parent team will delete all of its child teams as well.
-   */
-  "teams/delete-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Update a team (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a team](https://docs.github.com/rest/teams/teams#update-a-team) endpoint.
-   *
-   * To edit a team, the authenticated user must either be an organization owner or a team maintainer.
-   *
-   * **Note:** With nested teams, the `privacy` for parent teams cannot be `secret`.
-   */
-  "teams/update-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The name of the team. */
-          name: string;
-          /** @description The description of the team. */
-          description?: string;
-          /**
-           * @description The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. The options are:
-           * **For a non-nested team:**
-           *  * `secret` - only visible to organization owners and members of this team.
-           *  * `closed` - visible to all members of this organization.
-           * **For a parent or child team:**
-           *  * `closed` - visible to all members of this organization.
-           * @enum {string}
-           */
-          privacy?: "secret" | "closed";
-          /**
-           * @description The notification setting the team has chosen. Editing teams without specifying this parameter leaves `notification_setting` intact. The options are:
-           *  * `notifications_enabled` - team members receive notifications when the team is @mentioned.
-           *  * `notifications_disabled` - no one receives notifications.
-           * @enum {string}
-           */
-          notification_setting?:
-            | "notifications_enabled"
-            | "notifications_disabled";
-          /**
-           * @description **Deprecated**. The permission that new repositories will be added to the team with when none is specified.
-           * @default pull
-           * @enum {string}
-           */
-          permission?: "pull" | "push" | "admin";
-          /** @description The ID of a team to set as the parent team. */
-          parent_team_id?: number | null;
-        };
-      };
-    };
-    responses: {
-      /** @description Response when the updated information already exists */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-full"];
-        };
-      };
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["team-full"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List discussions (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List discussions`](https://docs.github.com/rest/teams/discussions#list-discussions) endpoint.
-   *
-   * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "teams/list-discussions-legacy": {
-    parameters: {
-      query?: {
-        direction?: components["parameters"]["direction"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        team_id: components["parameters"]["team-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["team-discussion"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create a discussion (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create a discussion`](https://docs.github.com/rest/teams/discussions#create-a-discussion) endpoint.
-   *
-   * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   */
-  "teams/create-discussion-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The discussion post's title. */
-          title: string;
-          /** @description The discussion post's body text. */
-          body: string;
-          /**
-           * @description Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post.
-           * @default false
-           */
-          private?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["team-discussion"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a discussion (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion) endpoint.
-   *
-   * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "teams/get-discussion-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-discussion"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a discussion (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Delete a discussion`](https://docs.github.com/rest/teams/discussions#delete-a-discussion) endpoint.
-   *
-   * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "teams/delete-discussion-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update a discussion (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion](https://docs.github.com/rest/teams/discussions#update-a-discussion) endpoint.
-   *
-   * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "teams/update-discussion-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description The discussion post's title. */
-          title?: string;
-          /** @description The discussion post's body text. */
-          body?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-discussion"];
-        };
-      };
-    };
-  };
-  /**
-   * List discussion comments (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [List discussion comments](https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments) endpoint.
-   *
-   * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "teams/list-discussion-comments-legacy": {
-    parameters: {
-      query?: {
-        direction?: components["parameters"]["direction"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        team_id: components["parameters"]["team-id"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["team-discussion-comment"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create a discussion comment (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Create a discussion comment](https://docs.github.com/rest/teams/discussion-comments#create-a-discussion-comment) endpoint.
-   *
-   * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   *
-   * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-   */
-  "teams/create-discussion-comment-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The discussion comment's body text. */
-          body: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["team-discussion-comment"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a discussion comment (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment) endpoint.
-   *
-   * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "teams/get-discussion-comment-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        discussion_number: components["parameters"]["discussion-number"];
-        comment_number: components["parameters"]["comment-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-discussion-comment"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a discussion comment (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a discussion comment](https://docs.github.com/rest/teams/discussion-comments#delete-a-discussion-comment) endpoint.
-   *
-   * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "teams/delete-discussion-comment-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        discussion_number: components["parameters"]["discussion-number"];
-        comment_number: components["parameters"]["comment-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Update a discussion comment (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion comment](https://docs.github.com/rest/teams/discussion-comments#update-a-discussion-comment) endpoint.
-   *
-   * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "teams/update-discussion-comment-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        discussion_number: components["parameters"]["discussion-number"];
-        comment_number: components["parameters"]["comment-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description The discussion comment's body text. */
-          body: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-discussion-comment"];
-        };
-      };
-    };
-  };
-  /**
-   * List reactions for a team discussion comment (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion comment`](https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment) endpoint.
-   *
-   * List the reactions to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "reactions/list-for-team-discussion-comment-legacy": {
-    parameters: {
-      query?: {
-        /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a team discussion comment. */
-        content?:
-          | "+1"
-          | "-1"
-          | "laugh"
-          | "confused"
-          | "heart"
-          | "hooray"
-          | "rocket"
-          | "eyes";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        team_id: components["parameters"]["team-id"];
-        discussion_number: components["parameters"]["discussion-number"];
-        comment_number: components["parameters"]["comment-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["reaction"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create reaction for a team discussion comment (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new "[Create reaction for a team discussion comment](https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-comment)" endpoint.
-   *
-   * Create a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment.
-   */
-  "reactions/create-for-team-discussion-comment-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        discussion_number: components["parameters"]["discussion-number"];
-        comment_number: components["parameters"]["comment-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the team discussion comment.
-           * @enum {string}
-           */
-          content:
-            | "+1"
-            | "-1"
-            | "laugh"
-            | "confused"
-            | "heart"
-            | "hooray"
-            | "rocket"
-            | "eyes";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-    };
-  };
-  /**
-   * List reactions for a team discussion (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion`](https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion) endpoint.
-   *
-   * List the reactions to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "reactions/list-for-team-discussion-legacy": {
-    parameters: {
-      query?: {
-        /** @description Returns a single [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions). Omit this parameter to list all reactions to a team discussion. */
-        content?:
-          | "+1"
-          | "-1"
-          | "laugh"
-          | "confused"
-          | "heart"
-          | "hooray"
-          | "rocket"
-          | "eyes";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        team_id: components["parameters"]["team-id"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["reaction"][];
-        };
-      };
-    };
-  };
-  /**
-   * Create reaction for a team discussion (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create reaction for a team discussion`](https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion) endpoint.
-   *
-   * Create a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion.
-   */
-  "reactions/create-for-team-discussion-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        discussion_number: components["parameters"]["discussion-number"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The [reaction type](https://docs.github.com/rest/reactions/reactions#about-reactions) to add to the team discussion.
-           * @enum {string}
-           */
-          content:
-            | "+1"
-            | "-1"
-            | "laugh"
-            | "confused"
-            | "heart"
-            | "hooray"
-            | "rocket"
-            | "eyes";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["reaction"];
-        };
-      };
-    };
-  };
-  /**
-   * List pending team invitations (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List pending team invitations`](https://docs.github.com/rest/teams/members#list-pending-team-invitations) endpoint.
-   *
-   * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.
-   */
-  "teams/list-pending-invitations-legacy": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        team_id: components["parameters"]["team-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["organization-invitation"][];
-        };
-      };
-    };
-  };
-  /**
-   * List team members (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team members`](https://docs.github.com/rest/teams/members#list-team-members) endpoint.
-   *
-   * Team members will include the members of child teams.
-   */
-  "teams/list-members-legacy": {
-    parameters: {
-      query?: {
-        /** @description Filters members returned by their role in the team. */
-        role?: "member" | "maintainer" | "all";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        team_id: components["parameters"]["team-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get team member (Legacy)
-   * @deprecated
-   * @description The "Get team member" endpoint (described below) is deprecated.
-   *
-   * We recommend using the [Get team membership for a user](https://docs.github.com/rest/teams/members#get-team-membership-for-a-user) endpoint instead. It allows you to get both active and pending memberships.
-   *
-   * To list members in a team, the team must be visible to the authenticated user.
-   */
-  "teams/get-member-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description if user is a member */
-      204: {
-        content: never;
-      };
-      /** @description if user is not a member */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Add team member (Legacy)
-   * @deprecated
-   * @description The "Add team member" endpoint (described below) is deprecated.
-   *
-   * We recommend using the [Add or update team membership for a user](https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user) endpoint instead. It allows you to invite new organization members to your teams.
-   *
-   * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * To add someone to a team, the authenticated user must be an organization owner or a team maintainer in the team they're changing. The person being added to the team must be a member of the team's organization.
-   *
-   * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-   *
-   * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-   */
-  "teams/add-member-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-      /** @description Not Found if team synchronization is set up */
-      404: {
-        content: never;
-      };
-      /** @description Unprocessable Entity if you attempt to add an organization to a team or you attempt to add a user to a team when they are not a member of at least one other team in the same organization */
-      422: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Remove team member (Legacy)
-   * @deprecated
-   * @description The "Remove team member" endpoint (described below) is deprecated.
-   *
-   * We recommend using the [Remove team membership for a user](https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user) endpoint instead. It allows you to remove both active and pending memberships.
-   *
-   * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * To remove a team member, the authenticated user must have 'admin' permissions to the team or be an owner of the org that the team is associated with. Removing a team member does not delete the user, it just removes them from the team.
-   *
-   * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-   */
-  "teams/remove-member-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      /** @description Not Found if team synchronization is setup */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get team membership for a user (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get team membership for a user](https://docs.github.com/rest/teams/members#get-team-membership-for-a-user) endpoint.
-   *
-   * Team members will include the members of child teams.
-   *
-   * To get a user's membership with a team, the team must be visible to the authenticated user.
-   *
-   * **Note:**
-   * The response contains the `state` of the membership and the member's `role`.
-   *
-   * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/teams/teams#create-a-team).
-   */
-  "teams/get-membership-for-user-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-membership"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Add or update team membership for a user (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team membership for a user](https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user) endpoint.
-   *
-   * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * If the user is already a member of the team's organization, this endpoint will add the user to the team. To add a membership between an organization member and a team, the authenticated user must be an organization owner or a team maintainer.
-   *
-   * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-   *
-   * If the user is unaffiliated with the team's organization, this endpoint will send an invitation to the user via email. This newly-created membership will be in the "pending" state until the user accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. To add a membership between an unaffiliated user and a team, the authenticated user must be an organization owner.
-   *
-   * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer.
-   */
-  "teams/add-or-update-membership-for-user-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        username: components["parameters"]["username"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The role that this user should have in the team.
-           * @default member
-           * @enum {string}
-           */
-          role?: "member" | "maintainer";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-membership"];
-        };
-      };
-      /** @description Forbidden if team synchronization is set up */
-      403: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      /** @description Unprocessable Entity if you attempt to add an organization to a team */
-      422: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Remove team membership for a user (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove team membership for a user](https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user) endpoint.
-   *
-   * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-   *
-   * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team.
-   *
-   * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-   */
-  "teams/remove-membership-for-user-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      /** @description if team synchronization is set up */
-      403: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List team projects (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team projects`](https://docs.github.com/rest/teams/teams#list-team-projects) endpoint.
-   *
-   * Lists the organization projects for a team.
-   */
-  "teams/list-projects-legacy": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        team_id: components["parameters"]["team-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["team-project"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Check team permissions for a project (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a project](https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-project) endpoint.
-   *
-   * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team.
-   */
-  "teams/check-permissions-for-project-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        project_id: components["parameters"]["project-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-project"];
-        };
-      };
-      /** @description Not Found if project is not managed by this team */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Add or update team project permissions (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team project permissions](https://docs.github.com/rest/teams/teams#add-or-update-team-project-permissions) endpoint.
-   *
-   * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization.
-   */
-  "teams/add-or-update-project-permissions-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        project_id: components["parameters"]["project-id"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The permission to grant to the team for this project. Default: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-           * @enum {string}
-           */
-          permission?: "read" | "write" | "admin";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      /** @description Forbidden if the project is not owned by the organization */
-      403: {
-        content: {
-          "application/json": {
-            message?: string;
-            documentation_url?: string;
-          };
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove a project from a team (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a project from a team](https://docs.github.com/rest/teams/teams#remove-a-project-from-a-team) endpoint.
-   *
-   * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. **Note:** This endpoint removes the project from the team, but does not delete it.
-   */
-  "teams/remove-project-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        project_id: components["parameters"]["project-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List team repositories (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [List team repositories](https://docs.github.com/rest/teams/teams#list-team-repositories) endpoint.
-   */
-  "teams/list-repos-legacy": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        team_id: components["parameters"]["team-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["minimal-repository"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Check team permissions for a repository (Legacy)
-   * @deprecated
-   * @description **Note**: Repositories inherited through a parent team will also be checked.
-   *
-   * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a repository](https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-repository) endpoint.
-   *
-   * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header:
-   */
-  "teams/check-permissions-for-repo-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Alternative response with extra repository information */
-      200: {
-        content: {
-          "application/json": components["schemas"]["team-repository"];
-        };
-      };
-      /** @description Response if repository is managed by this team */
-      204: {
-        content: never;
-      };
-      /** @description Not Found if repository is not managed by this team */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Add or update team repository permissions (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new "[Add or update team repository permissions](https://docs.github.com/rest/teams/teams#add-or-update-team-repository-permissions)" endpoint.
-   *
-   * 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 verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-   */
-  "teams/add-or-update-repo-permissions-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The permission to grant the team on this repository. If no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository.
-           * @enum {string}
-           */
-          permission?: "pull" | "push" | "admin";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove a repository from a team (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a repository from a team](https://docs.github.com/rest/teams/teams#remove-a-repository-from-a-team) endpoint.
-   *
-   * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. NOTE: This does not delete the repository, it just removes it from the team.
-   */
-  "teams/remove-repo-legacy": {
-    parameters: {
-      path: {
-        team_id: components["parameters"]["team-id"];
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List child teams (Legacy)
-   * @deprecated
-   * @description **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List child teams`](https://docs.github.com/rest/teams/teams#list-child-teams) endpoint.
-   */
-  "teams/list-child-legacy": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        team_id: components["parameters"]["team-id"];
-      };
-    };
-    responses: {
-      /** @description if child teams exist */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["team"][];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get the authenticated user
-   * @description If the authenticated user is authenticated with an OAuth token with the `user` scope, then the response lists public and private profile information.
-   *
-   * If the authenticated user is authenticated through OAuth without the `user` scope, then the response lists only public profile information.
-   */
-  "users/get-authenticated": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json":
-            | components["schemas"]["private-user"]
-            | components["schemas"]["public-user"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Update the authenticated user
-   * @description **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API.
-   */
-  "users/update-authenticated": {
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description The new name of the user.
-           * @example Omar Jahandar
-           */
-          name?: string;
-          /**
-           * @description The publicly visible email address of the user.
-           * @example omar@example.com
-           */
-          email?: string;
-          /**
-           * @description The new blog URL of the user.
-           * @example blog.example.com
-           */
-          blog?: string;
-          /**
-           * @description The new Twitter username of the user.
-           * @example therealomarj
-           */
-          twitter_username?: string | null;
-          /**
-           * @description The new company of the user.
-           * @example Acme corporation
-           */
-          company?: string;
-          /**
-           * @description The new location of the user.
-           * @example Berlin, Germany
-           */
-          location?: string;
-          /** @description The new hiring availability of the user. */
-          hireable?: boolean;
-          /** @description The new short biography of the user. */
-          bio?: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["private-user"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List users blocked by the authenticated user
-   * @description List the users you've blocked on your personal account.
-   */
-  "users/list-blocked-by-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Check if a user is blocked by the authenticated user
-   * @description Returns a 204 if the given user is blocked by the authenticated user. Returns a 404 if the given user is not blocked by the authenticated user, or if the given user account has been identified as spam by GitHub.
-   */
-  "users/check-blocked": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description If the user is blocked */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      /** @description If the user is not blocked */
-      404: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-    };
-  };
-  /**
-   * Block a user
-   * @description Blocks the given user and returns a 204. If the authenticated user cannot block the given user a 422 is returned.
-   */
-  "users/block": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Unblock a user
-   * @description Unblocks the given user and returns a 204.
-   */
-  "users/unblock": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List codespaces for the authenticated user
-   * @description Lists the authenticated user's codespaces.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint.
-   */
-  "codespaces/list-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        repository_id?: components["parameters"]["repository-id-in-query"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            codespaces: components["schemas"]["codespace"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Create a codespace for the authenticated user
-   * @description Creates a new codespace, owned by the authenticated user.
-   *
-   * This endpoint requires either a `repository_id` OR a `pull_request` but not both.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-   */
-  "codespaces/create-for-authenticated-user": {
-    requestBody: {
-      content: {
-        "application/json": OneOf<
-          [
-            {
-              /** @description Repository id for this codespace */
-              repository_id: number;
-              /** @description Git ref (typically a branch name) for this codespace */
-              ref?: string;
-              /** @description The requested location for a new codespace. Best efforts are made to respect this upon creation. Assigned by IP if not provided. */
-              location?: string;
-              /**
-               * @description The geographic area for this codespace. If not specified, the value is assigned by IP. This property replaces `location`, which is being deprecated.
-               * @enum {string}
-               */
-              geo?: "EuropeWest" | "SoutheastAsia" | "UsEast" | "UsWest";
-              /** @description IP for location auto-detection when proxying a request */
-              client_ip?: string;
-              /** @description Machine type to use for this codespace */
-              machine?: string;
-              /** @description Path to devcontainer.json config to use for this codespace */
-              devcontainer_path?: string;
-              /** @description Whether to authorize requested permissions from devcontainer.json */
-              multi_repo_permissions_opt_out?: boolean;
-              /** @description Working directory for this codespace */
-              working_directory?: string;
-              /** @description Time in minutes before codespace stops from inactivity */
-              idle_timeout_minutes?: number;
-              /** @description Display name for this codespace */
-              display_name?: string;
-              /** @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days). */
-              retention_period_minutes?: number;
-            },
-            {
-              /** @description Pull request number for this codespace */
-              pull_request: {
-                /** @description Pull request number */
-                pull_request_number: number;
-                /** @description Repository id for this codespace */
-                repository_id: number;
-              };
-              /** @description The requested location for a new codespace. Best efforts are made to respect this upon creation. Assigned by IP if not provided. */
-              location?: string;
-              /**
-               * @description The geographic area for this codespace. If not specified, the value is assigned by IP. This property replaces `location`, which is being deprecated.
-               * @enum {string}
-               */
-              geo?: "EuropeWest" | "SoutheastAsia" | "UsEast" | "UsWest";
-              /** @description Machine type to use for this codespace */
-              machine?: string;
-              /** @description Path to devcontainer.json config to use for this codespace */
-              devcontainer_path?: string;
-              /** @description Working directory for this codespace */
-              working_directory?: string;
-              /** @description Time in minutes before codespace stops from inactivity */
-              idle_timeout_minutes?: number;
-            },
-          ]
-        >;
-      };
-    };
-    responses: {
-      /** @description Response when the codespace was successfully created */
-      201: {
-        content: {
-          "application/json": components["schemas"]["codespace"];
-        };
-      };
-      /** @description Response when the codespace creation partially failed but is being retried in the background */
-      202: {
-        content: {
-          "application/json": components["schemas"]["codespace"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      503: components["responses"]["service_unavailable"];
-    };
-  };
-  /**
-   * List secrets for the authenticated user
-   * @description Lists all secrets available for a user's Codespaces without revealing their
-   * encrypted values.
-   *
-   * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-   *
-   * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint.
-   */
-  "codespaces/list-secrets-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            secrets: components["schemas"]["codespaces-secret"][];
-          };
-        };
-      };
-    };
-  };
-  /**
-   * Get public key for the authenticated user
-   * @description Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets.
-   *
-   * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-   *
-   * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint.
-   */
-  "codespaces/get-public-key-for-authenticated-user": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["codespaces-user-public-key"];
-        };
-      };
-    };
-  };
-  /**
-   * Get a secret for the authenticated user
-   * @description Gets a secret available to a user's codespaces without revealing its encrypted value.
-   *
-   * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-   *
-   * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint.
-   */
-  "codespaces/get-secret-for-authenticated-user": {
-    parameters: {
-      path: {
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["codespaces-secret"];
-        };
-      };
-    };
-  };
-  /**
-   * Create or update a secret for the authenticated user
-   * @description Creates or updates a secret for a user's codespace with an encrypted value. Encrypt your secret using
-   * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-   *
-   * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must also have Codespaces access to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and `codespaces_secrets` repository permission on all referenced repositories to use this endpoint.
-   */
-  "codespaces/create-or-update-secret-for-authenticated-user": {
-    parameters: {
-      path: {
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get the public key for the authenticated user](https://docs.github.com/rest/codespaces/secrets#get-public-key-for-the-authenticated-user) endpoint. */
-          encrypted_value?: string;
-          /** @description ID of the key you used to encrypt the secret. */
-          key_id: string;
-          /** @description An array of repository ids that can access the user secret. You can manage the list of selected repositories using the [List selected repositories for a user secret](https://docs.github.com/rest/codespaces/secrets#list-selected-repositories-for-a-user-secret), [Set selected repositories for a user secret](https://docs.github.com/rest/codespaces/secrets#set-selected-repositories-for-a-user-secret), and [Remove a selected repository from a user secret](https://docs.github.com/rest/codespaces/secrets#remove-a-selected-repository-from-a-user-secret) endpoints. */
-          selected_repository_ids?: (number | string)[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response after successfully creating a secret */
-      201: {
-        content: {
-          "application/json": components["schemas"]["empty-object"];
-        };
-      };
-      /** @description Response after successfully updating a secret */
-      204: {
-        content: never;
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Delete a secret for the authenticated user
-   * @description Deletes a secret from a user's codespaces using the secret name. Deleting the secret will remove access from all codespaces that were allowed to access the secret.
-   *
-   * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces_user_secrets` user permission to use this endpoint.
-   */
-  "codespaces/delete-secret-for-authenticated-user": {
-    parameters: {
-      path: {
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List selected repositories for a user secret
-   * @description List the repositories that have been granted the ability to use a user's codespace secret.
-   *
-   * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-   *
-   * GitHub Apps must have read access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on all referenced repositories to use this endpoint.
-   */
-  "codespaces/list-repositories-for-secret-for-authenticated-user": {
-    parameters: {
-      path: {
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            repositories: components["schemas"]["minimal-repository"][];
-          };
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Set selected repositories for a user secret
-   * @description Select the repositories that will use a user's codespace secret.
-   *
-   * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on all referenced repositories to use this endpoint.
-   */
-  "codespaces/set-repositories-for-secret-for-authenticated-user": {
-    parameters: {
-      path: {
-        secret_name: components["parameters"]["secret-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description An array of repository ids for which a codespace can access the secret. You can manage the list of selected repositories using the [List selected repositories for a user secret](https://docs.github.com/rest/codespaces/secrets#list-selected-repositories-for-a-user-secret), [Add a selected repository to a user secret](https://docs.github.com/rest/codespaces/secrets#add-a-selected-repository-to-a-user-secret), and [Remove a selected repository from a user secret](https://docs.github.com/rest/codespaces/secrets#remove-a-selected-repository-from-a-user-secret) endpoints. */
-          selected_repository_ids: number[];
-        };
-      };
-    };
-    responses: {
-      /** @description No Content when repositories were added to the selected list */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Add a selected repository to a user secret
-   * @description Adds a repository to the selected repositories for a user's codespace secret.
-   * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-   * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on the referenced repository to use this endpoint.
-   */
-  "codespaces/add-repository-for-secret-for-authenticated-user": {
-    parameters: {
-      path: {
-        secret_name: components["parameters"]["secret-name"];
-        repository_id: number;
-      };
-    };
-    responses: {
-      /** @description No Content when repository was added to the selected list */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Remove a selected repository from a user secret
-   * @description Removes a repository from the selected repositories for a user's codespace secret.
-   * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-   * GitHub Apps must have write access to the `codespaces_user_secrets` user permission to use this endpoint.
-   */
-  "codespaces/remove-repository-for-secret-for-authenticated-user": {
-    parameters: {
-      path: {
-        secret_name: components["parameters"]["secret-name"];
-        repository_id: number;
-      };
-    };
-    responses: {
-      /** @description No Content when repository was removed from the selected list */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Get a codespace for the authenticated user
-   * @description Gets information about a user's codespace.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint.
-   */
-  "codespaces/get-for-authenticated-user": {
-    parameters: {
-      path: {
-        codespace_name: components["parameters"]["codespace-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["codespace"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Delete a codespace for the authenticated user
-   * @description Deletes a user's codespace.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-   */
-  "codespaces/delete-for-authenticated-user": {
-    parameters: {
-      path: {
-        codespace_name: components["parameters"]["codespace-name"];
-      };
-    };
-    responses: {
-      202: components["responses"]["accepted"];
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Update a codespace for the authenticated user
-   * @description Updates a codespace owned by the authenticated user. Currently only the codespace's machine type and recent folders can be modified using this endpoint.
-   *
-   * If you specify a new machine type it will be applied the next time your codespace is started.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-   */
-  "codespaces/update-for-authenticated-user": {
-    parameters: {
-      path: {
-        codespace_name: components["parameters"]["codespace-name"];
-      };
-    };
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description A valid machine to transition this codespace to. */
-          machine?: string;
-          /** @description Display name for this codespace */
-          display_name?: string;
-          /** @description Recently opened folders inside the codespace. It is currently used by the clients to determine the folder path to load the codespace in. */
-          recent_folders?: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["codespace"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Export a codespace for the authenticated user
-   * @description Triggers an export of the specified codespace and returns a URL and ID where the status of the export can be monitored.
-   *
-   * If changes cannot be pushed to the codespace's repository, they will be pushed to a new or previously-existing fork instead.
-   *
-   * You must authenticate using a personal access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint.
-   */
-  "codespaces/export-for-authenticated-user": {
-    parameters: {
-      path: {
-        codespace_name: components["parameters"]["codespace-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      202: {
-        content: {
-          "application/json": components["schemas"]["codespace-export-details"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Get details about a codespace export
-   * @description Gets information about an export of a codespace.
-   *
-   * You must authenticate using a personal access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have read access to the `codespaces_lifecycle_admin` repository permission to use this endpoint.
-   */
-  "codespaces/get-export-details-for-authenticated-user": {
-    parameters: {
-      path: {
-        codespace_name: components["parameters"]["codespace-name"];
-        export_id: components["parameters"]["export-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["codespace-export-details"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List machine types for a codespace
-   * @description List the machine types a codespace can transition to use.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have read access to the `codespaces_metadata` repository permission to use this endpoint.
-   */
-  "codespaces/codespace-machines-for-authenticated-user": {
-    parameters: {
-      path: {
-        codespace_name: components["parameters"]["codespace-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": {
-            total_count: number;
-            machines: components["schemas"]["codespace-machine"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Create a repository from an unpublished codespace
-   * @description Publishes an unpublished codespace, creating a new repository and assigning it to the codespace.
-   *
-   * The codespace's token is granted write permissions to the repository, allowing the user to push their changes.
-   *
-   * This will fail for a codespace that is already published, meaning it has an associated repository.
-   *
-   * You must authenticate using a personal access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-   */
-  "codespaces/publish-for-authenticated-user": {
-    parameters: {
-      path: {
-        codespace_name: components["parameters"]["codespace-name"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description A name for the new repository. */
-          name?: string;
-          /**
-           * @description Whether the new repository should be private.
-           * @default false
-           */
-          private?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["codespace-with-full-repository"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Start a codespace for the authenticated user
-   * @description Starts a user's codespace.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint.
-   */
-  "codespaces/start-for-authenticated-user": {
-    parameters: {
-      path: {
-        codespace_name: components["parameters"]["codespace-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["codespace"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      400: components["responses"]["bad_request"];
-      401: components["responses"]["requires_authentication"];
-      /** @description Payment required */
-      402: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      409: components["responses"]["conflict"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Stop a codespace for the authenticated user
-   * @description Stops a user's codespace.
-   *
-   * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-   *
-   * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint.
-   */
-  "codespaces/stop-for-authenticated-user": {
-    parameters: {
-      path: {
-        codespace_name: components["parameters"]["codespace-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["codespace"];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-  /**
-   * Get list of conflicting packages during Docker migration for authenticated-user
-   * @description Lists all packages that are owned by the authenticated user within the user's namespace, and that encountered a conflict during a Docker migration.
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` scope.
-   */
-  "packages/list-docker-migration-conflicting-packages-for-authenticated-user": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package"][];
-        };
-      };
-    };
-  };
-  /**
-   * Set primary email visibility for the authenticated user
-   * @description Sets the visibility for your primary email addresses.
-   */
-  "users/set-primary-email-visibility-for-authenticated-user": {
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Denotes whether an email is publicly visible.
-           * @enum {string}
-           */
-          visibility: "public" | "private";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["email"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List email addresses for the authenticated user
-   * @description Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope.
-   */
-  "users/list-emails-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["email"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Add an email address for the authenticated user
-   * @description This endpoint is accessible with the `user` scope.
-   */
-  "users/add-email-for-authenticated-user": {
-    requestBody?: {
-      content: {
-        "application/json": {
-          /**
-           * @description Adds one or more email addresses to your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key.
-           * @example []
-           */
-          emails: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["email"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Delete an email address for the authenticated user
-   * @description This endpoint is accessible with the `user` scope.
-   */
-  "users/delete-email-for-authenticated-user": {
-    requestBody?: {
-      content: {
-        "application/json": {
-          /** @description Email addresses associated with the GitHub user account. */
-          emails: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List followers of the authenticated user
-   * @description Lists the people following the authenticated user.
-   */
-  "users/list-followers-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * List the people the authenticated user follows
-   * @description Lists the people who the authenticated user follows.
-   */
-  "users/list-followed-by-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /** Check if a person is followed by the authenticated user */
-  "users/check-person-is-followed-by-authenticated": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description if the person is followed by the authenticated user */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      /** @description if the person is not followed by the authenticated user */
-      404: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-    };
-  };
-  /**
-   * Follow a user
-   * @description Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-   *
-   * Following a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope.
-   */
-  "users/follow": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Unfollow a user
-   * @description Unfollowing a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope.
-   */
-  "users/unfollow": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List GPG keys for the authenticated user
-   * @description Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "users/list-gpg-keys-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["gpg-key"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a GPG key for the authenticated user
-   * @description Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "users/create-gpg-key-for-authenticated-user": {
-    requestBody: {
-      content: {
-        "application/json": {
-          /** @description A descriptive name for the new key. */
-          name?: string;
-          /** @description A GPG key in ASCII-armored format. */
-          armored_public_key: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["gpg-key"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a GPG key for the authenticated user
-   * @description View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "users/get-gpg-key-for-authenticated-user": {
-    parameters: {
-      path: {
-        gpg_key_id: components["parameters"]["gpg-key-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["gpg-key"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a GPG key for the authenticated user
-   * @description Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "users/delete-gpg-key-for-authenticated-user": {
-    parameters: {
-      path: {
-        gpg_key_id: components["parameters"]["gpg-key-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List app installations accessible to the user access token
-   * @description Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access.
-   *
-   * You must use a [user access token](https://docs.github.com/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), created for a user who has authorized your GitHub App, to access this endpoint.
-   *
-   * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
-   *
-   * You can find the permissions for the installation under the `permissions` key.
-   */
-  "apps/list-installations-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description You can find the permissions for the installation under the `permissions` key. */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            installations: components["schemas"]["installation"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * List repositories accessible to the user access token
-   * @description List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation.
-   *
-   * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
-   *
-   * You must use a [user access token](https://docs.github.com/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), created for a user who has authorized your GitHub App, to access this endpoint.
-   *
-   * The access the user has to each repository is included in the hash under the `permissions` key.
-   */
-  "apps/list-installation-repos-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        installation_id: components["parameters"]["installation-id"];
-      };
-    };
-    responses: {
-      /** @description The access the user has to each repository is included in the hash under the `permissions` key. */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": {
-            total_count: number;
-            repository_selection?: string;
-            repositories: components["schemas"]["repository"][];
-          };
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Add a repository to an app installation
-   * @description Add a single repository to an installation. The authenticated user must have admin access to the repository.
-   *
-   * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint.
-   */
-  "apps/add-repo-to-installation-for-authenticated-user": {
-    parameters: {
-      path: {
-        installation_id: components["parameters"]["installation-id"];
-        repository_id: components["parameters"]["repository-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Remove a repository from an app installation
-   * @description Remove a single repository from an installation. The authenticated user must have admin access to the repository. The installation must have the `repository_selection` of `selected`.
-   *
-   * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint.
-   */
-  "apps/remove-repo-from-installation-for-authenticated-user": {
-    parameters: {
-      path: {
-        installation_id: components["parameters"]["installation-id"];
-        repository_id: components["parameters"]["repository-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      /** @description Returned when the application is installed on `all` repositories in the organization, or if this request would remove the last repository that the application has access to in the organization. */
-      422: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Get interaction restrictions for your public repositories
-   * @description Shows which type of GitHub user can interact with your public repositories and when the restriction expires.
-   */
-  "interactions/get-restrictions-for-authenticated-user": {
-    responses: {
-      /** @description Default response */
-      200: {
-        content: {
-          "application/json":
-            | components["schemas"]["interaction-limit-response"]
-            | Record<string, never>;
-        };
-      };
-      /** @description Response when there are no restrictions */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * Set interaction restrictions for your public repositories
-   * @description Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user.
-   */
-  "interactions/set-restrictions-for-authenticated-user": {
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["interaction-limit"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["interaction-limit-response"];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Remove interaction restrictions from your public repositories
-   * @description Removes any interaction restrictions from your public repositories.
-   */
-  "interactions/remove-restrictions-for-authenticated-user": {
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List user account issues assigned to the authenticated user
-   * @description List issues across owned and member repositories assigned to the authenticated user.
-   *
-   * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-   * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-   * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-   * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-   */
-  "issues/list-for-authenticated-user": {
-    parameters: {
-      query?: {
-        /** @description Indicates which sorts of issues to return. `assigned` means issues assigned to you. `created` means issues created by you. `mentioned` means issues mentioning you. `subscribed` means issues you're subscribed to updates for. `all` or `repos` means all issues you can see, regardless of participation or creation. */
-        filter?:
-          | "assigned"
-          | "created"
-          | "mentioned"
-          | "subscribed"
-          | "repos"
-          | "all";
-        /** @description Indicates the state of the issues to return. */
-        state?: "open" | "closed" | "all";
-        labels?: components["parameters"]["labels"];
-        /** @description What to sort results by. */
-        sort?: "created" | "updated" | "comments";
-        direction?: components["parameters"]["direction"];
-        since?: components["parameters"]["since"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["issue"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List public SSH keys for the authenticated user
-   * @description Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "users/list-public-ssh-keys-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["key"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a public SSH key for the authenticated user
-   * @description Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "users/create-public-ssh-key-for-authenticated-user": {
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description A descriptive name for the new key.
-           * @example Personal MacBook Air
-           */
-          title?: string;
-          /** @description The public SSH key to add to your GitHub account. */
-          key: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["key"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a public SSH key for the authenticated user
-   * @description View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "users/get-public-ssh-key-for-authenticated-user": {
-    parameters: {
-      path: {
-        key_id: components["parameters"]["key-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["key"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete a public SSH key for the authenticated user
-   * @description Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-   */
-  "users/delete-public-ssh-key-for-authenticated-user": {
-    parameters: {
-      path: {
-        key_id: components["parameters"]["key-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List subscriptions for the authenticated user
-   * @description Lists the active subscriptions for the authenticated user. GitHub Apps must use a [user access token](https://docs.github.com/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), created for a user who has authorized your GitHub App, to access this endpoint. OAuth apps must authenticate using an [OAuth token](https://docs.github.com/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps).
-   */
-  "apps/list-subscriptions-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["user-marketplace-purchase"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List subscriptions for the authenticated user (stubbed)
-   * @description Lists the active subscriptions for the authenticated user. GitHub Apps must use a [user access token](https://docs.github.com/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), created for a user who has authorized your GitHub App, to access this endpoint. OAuth apps must authenticate using an [OAuth token](https://docs.github.com/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps).
-   */
-  "apps/list-subscriptions-for-authenticated-user-stubbed": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["user-marketplace-purchase"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-    };
-  };
-  /**
-   * List organization memberships for the authenticated user
-   * @description Lists all of the authenticated user's organization memberships.
-   */
-  "orgs/list-memberships-for-authenticated-user": {
-    parameters: {
-      query?: {
-        /** @description Indicates the state of the memberships to return. If not specified, the API returns both active and pending memberships. */
-        state?: "active" | "pending";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["org-membership"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get an organization membership for the authenticated user
-   * @description If the authenticated user is an active or pending member of the organization, this endpoint will return the user's membership. If the authenticated user is not affiliated with the organization, a `404` is returned. This endpoint will return a `403` if the request is made by a GitHub App that is blocked by the organization.
-   */
-  "orgs/get-membership-for-authenticated-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["org-membership"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Update an organization membership for the authenticated user
-   * @description Converts the authenticated user to an active member of the organization, if that user has a pending invitation from the organization.
-   */
-  "orgs/update-membership-for-authenticated-user": {
-    parameters: {
-      path: {
-        org: components["parameters"]["org"];
-      };
-    };
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The state that the membership should be in. Only `"active"` will be accepted.
-           * @enum {string}
-           */
-          state: "active";
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["org-membership"];
-        };
-      };
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List user migrations
-   * @description Lists all migrations a user has started.
-   */
-  "migrations/list-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["migration"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Start a user migration
-   * @description Initiates the generation of a user migration archive.
-   */
-  "migrations/start-for-authenticated-user": {
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Lock the repositories being migrated at the start of the migration
-           * @example true
-           */
-          lock_repositories?: boolean;
-          /**
-           * @description Indicates whether metadata should be excluded and only git source should be included for the migration.
-           * @example true
-           */
-          exclude_metadata?: boolean;
-          /**
-           * @description Indicates whether the repository git data should be excluded from the migration.
-           * @example true
-           */
-          exclude_git_data?: boolean;
-          /**
-           * @description Do not include attachments in the migration
-           * @example true
-           */
-          exclude_attachments?: boolean;
-          /**
-           * @description Do not include releases in the migration
-           * @example true
-           */
-          exclude_releases?: boolean;
-          /**
-           * @description Indicates whether projects owned by the organization or users should be excluded.
-           * @example true
-           */
-          exclude_owner_projects?: boolean;
-          /**
-           * @description Indicates whether this should only include organization metadata (repositories array should be empty and will ignore other flags).
-           * @default false
-           * @example true
-           */
-          org_metadata_only?: boolean;
-          /**
-           * @description Exclude attributes from the API response to improve performance
-           * @example [
-           *   "repositories"
-           * ]
-           */
-          exclude?: "repositories"[];
-          repositories: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["migration"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a user migration status
-   * @description Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values:
-   *
-   * *   `pending` - the migration hasn't started yet.
-   * *   `exporting` - the migration is in progress.
-   * *   `exported` - the migration finished successfully.
-   * *   `failed` - the migration failed.
-   *
-   * Once the migration has been `exported` you can [download the migration archive](https://docs.github.com/rest/migrations/users#download-a-user-migration-archive).
-   */
-  "migrations/get-status-for-authenticated-user": {
-    parameters: {
-      query?: {
-        exclude?: string[];
-      };
-      path: {
-        migration_id: components["parameters"]["migration-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["migration"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Download a user migration archive
-   * @description Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects:
-   *
-   * *   attachments
-   * *   bases
-   * *   commit\_comments
-   * *   issue\_comments
-   * *   issue\_events
-   * *   issues
-   * *   milestones
-   * *   organizations
-   * *   projects
-   * *   protected\_branches
-   * *   pull\_request\_reviews
-   * *   pull\_requests
-   * *   releases
-   * *   repositories
-   * *   review\_comments
-   * *   schema
-   * *   users
-   *
-   * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data.
-   */
-  "migrations/get-archive-for-authenticated-user": {
-    parameters: {
-      path: {
-        migration_id: components["parameters"]["migration-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      302: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Delete a user migration archive
-   * @description Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [List user migrations](https://docs.github.com/rest/migrations/users#list-user-migrations) and [Get a user migration status](https://docs.github.com/rest/migrations/users#get-a-user-migration-status) endpoints, will continue to be available even after an archive is deleted.
-   */
-  "migrations/delete-archive-for-authenticated-user": {
-    parameters: {
-      path: {
-        migration_id: components["parameters"]["migration-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Unlock a user repository
-   * @description Unlocks a repository. You can lock repositories when you [start a user migration](https://docs.github.com/rest/migrations/users#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://docs.github.com/rest/repos/repos#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked.
-   */
-  "migrations/unlock-repo-for-authenticated-user": {
-    parameters: {
-      path: {
-        migration_id: components["parameters"]["migration-id"];
-        repo_name: components["parameters"]["repo-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List repositories for a user migration
-   * @description Lists all the repositories for this user migration.
-   */
-  "migrations/list-repos-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        migration_id: components["parameters"]["migration-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["minimal-repository"][];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List organizations for the authenticated user
-   * @description List organizations for the authenticated user.
-   *
-   * **OAuth scope requirements**
-   *
-   * This only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope. OAuth requests with insufficient scope receive a `403 Forbidden` response.
-   */
-  "orgs/list-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["organization-simple"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * List packages for the authenticated user's namespace
-   * @description Lists packages owned by the authenticated user within the user's namespace.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/list-packages-for-authenticated-user": {
-    parameters: {
-      query: {
-        /** @description The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */
-        package_type:
-          | "npm"
-          | "maven"
-          | "rubygems"
-          | "docker"
-          | "nuget"
-          | "container";
-        visibility?: components["parameters"]["package-visibility"];
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package"][];
-        };
-      };
-      400: components["responses"]["package_es_list_error"];
-    };
-  };
-  /**
-   * Get a package for the authenticated user
-   * @description Gets a specific package for a package owned by the authenticated user.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/get-package-for-authenticated-user": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a package for the authenticated user
-   * @description Deletes a package owned by the authenticated user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` and `delete:packages` scopes.
-   * If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/delete-package-for-authenticated-user": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Restore a package for the authenticated user
-   * @description Restores a package owned by the authenticated user.
-   *
-   * You can restore a deleted package under the following conditions:
-   *   - The package was deleted within the last 30 days.
-   *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` and `write:packages` scopes. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/restore-package-for-authenticated-user": {
-    parameters: {
-      query?: {
-        /** @description package token */
-        token?: string;
-      };
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List package versions for a package owned by the authenticated user
-   * @description Lists package versions for a package owned by the authenticated user.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/get-all-package-versions-for-package-owned-by-authenticated-user": {
-    parameters: {
-      query?: {
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-        /** @description The state of the package, either active or deleted. */
-        state?: "active" | "deleted";
-      };
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package-version"][];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get a package version for the authenticated user
-   * @description Gets a specific package version for a package owned by the authenticated user.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/get-package-version-for-authenticated-user": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        package_version_id: components["parameters"]["package-version-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package-version"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a package version for the authenticated user
-   * @description Deletes a specific package version for a package owned by the authenticated user.  If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance.
-   *
-   * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `delete:packages` scopes.
-   * If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/delete-package-version-for-authenticated-user": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        package_version_id: components["parameters"]["package-version-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Restore a package version for the authenticated user
-   * @description Restores a package version owned by the authenticated user.
-   *
-   * You can restore a deleted package version under the following conditions:
-   *   - The package was deleted within the last 30 days.
-   *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` and `write:packages` scopes. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/restore-package-version-for-authenticated-user": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        package_version_id: components["parameters"]["package-version-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a user project
-   * @description Creates a user project board. Returns a `410 Gone` status if the user does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-   */
-  "projects/create-for-authenticated-user": {
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Name of the project
-           * @example Week One Sprint
-           */
-          name: string;
-          /**
-           * @description Body of the project
-           * @example This project represents the sprint of the first week in January
-           */
-          body?: string | null;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["project"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed_simple"];
-    };
-  };
-  /**
-   * List public email addresses for the authenticated user
-   * @description Lists your publicly visible email address, which you can set with the [Set primary email visibility for the authenticated user](https://docs.github.com/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user) endpoint. This endpoint is accessible with the `user:email` scope.
-   */
-  "users/list-public-emails-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["email"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List repositories for the authenticated user
-   * @description Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access.
-   *
-   * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
-   */
-  "repos/list-for-authenticated-user": {
-    parameters: {
-      query?: {
-        /** @description Limit results to repositories with the specified visibility. */
-        visibility?: "all" | "public" | "private";
-        /**
-         * @description Comma-separated list of values. Can include:
-         *  * `owner`: Repositories that are owned by the authenticated user.
-         *  * `collaborator`: Repositories that the user has been added to as a collaborator.
-         *  * `organization_member`: Repositories that the user has access to through being a member of an organization. This includes every repository on every team that the user is on.
-         */
-        affiliation?: string;
-        /** @description Limit results to repositories of the specified type. Will cause a `422` error if used in the same request as **visibility** or **affiliation**. */
-        type?: "all" | "owner" | "public" | "private" | "member";
-        /** @description The property to sort the results by. */
-        sort?: "created" | "updated" | "pushed" | "full_name";
-        /** @description The order to sort by. Default: `asc` when using `full_name`, otherwise `desc`. */
-        direction?: "asc" | "desc";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-        since?: components["parameters"]["since-repo-date"];
-        before?: components["parameters"]["before-repo-date"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["repository"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Create a repository for the authenticated user
-   * @description Creates a new repository for the authenticated user.
-   *
-   * **OAuth scope requirements**
-   *
-   * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
-   *
-   * *   `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.
-   * *   `repo` scope to create a private repository.
-   */
-  "repos/create-for-authenticated-user": {
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description The name of the repository.
-           * @example Team Environment
-           */
-          name: string;
-          /** @description A short description of the repository. */
-          description?: string;
-          /** @description A URL with more information about the repository. */
-          homepage?: string;
-          /**
-           * @description Whether the repository is private.
-           * @default false
-           */
-          private?: boolean;
-          /**
-           * @description Whether issues are enabled.
-           * @default true
-           * @example true
-           */
-          has_issues?: boolean;
-          /**
-           * @description Whether projects are enabled.
-           * @default true
-           * @example true
-           */
-          has_projects?: boolean;
-          /**
-           * @description Whether the wiki is enabled.
-           * @default true
-           * @example true
-           */
-          has_wiki?: boolean;
-          /**
-           * @description Whether discussions are enabled.
-           * @default false
-           * @example true
-           */
-          has_discussions?: boolean;
-          /** @description The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization. */
-          team_id?: number;
-          /**
-           * @description Whether the repository is initialized with a minimal README.
-           * @default false
-           */
-          auto_init?: boolean;
-          /**
-           * @description The desired language or platform to apply to the .gitignore.
-           * @example Haskell
-           */
-          gitignore_template?: string;
-          /**
-           * @description The license keyword of the open source license for this repository.
-           * @example mit
-           */
-          license_template?: string;
-          /**
-           * @description Whether to allow squash merges for pull requests.
-           * @default true
-           * @example true
-           */
-          allow_squash_merge?: boolean;
-          /**
-           * @description Whether to allow merge commits for pull requests.
-           * @default true
-           * @example true
-           */
-          allow_merge_commit?: boolean;
-          /**
-           * @description Whether to allow rebase merges for pull requests.
-           * @default true
-           * @example true
-           */
-          allow_rebase_merge?: boolean;
-          /**
-           * @description Whether to allow Auto-merge to be used on pull requests.
-           * @default false
-           * @example false
-           */
-          allow_auto_merge?: boolean;
-          /**
-           * @description Whether to delete head branches when pull requests are merged
-           * @default false
-           * @example false
-           */
-          delete_branch_on_merge?: boolean;
-          /**
-           * @description The default value for a squash merge commit title:
-           *
-           * - `PR_TITLE` - default to the pull request's title.
-           * - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
-           * @enum {string}
-           */
-          squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
-          /**
-           * @description The default value for a squash merge commit message:
-           *
-           * - `PR_BODY` - default to the pull request's body.
-           * - `COMMIT_MESSAGES` - default to the branch's commit messages.
-           * - `BLANK` - default to a blank commit message.
-           * @enum {string}
-           */
-          squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
-          /**
-           * @description The default value for a merge commit title.
-           *
-           * - `PR_TITLE` - default to the pull request's title.
-           * - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
-           * @enum {string}
-           */
-          merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
-          /**
-           * @description The default value for a merge commit message.
-           *
-           * - `PR_TITLE` - default to the pull request's title.
-           * - `PR_BODY` - default to the pull request's body.
-           * - `BLANK` - default to a blank commit message.
-           * @enum {string}
-           */
-          merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
-          /**
-           * @description Whether downloads are enabled.
-           * @default true
-           * @example true
-           */
-          has_downloads?: boolean;
-          /**
-           * @description Whether this repository acts as a template that can be used to generate new repositories.
-           * @default false
-           * @example true
-           */
-          is_template?: boolean;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        headers: {
-          /** @example https://api.github.com/repos/octocat/Hello-World */
-          Location?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["repository"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      400: components["responses"]["bad_request"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List repository invitations for the authenticated user
-   * @description When authenticating as a user, this endpoint will list all currently open repository invitations for that user.
-   */
-  "repos/list-invitations-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["repository-invitation"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /** Decline a repository invitation */
-  "repos/decline-invitation-for-authenticated-user": {
-    parameters: {
-      path: {
-        invitation_id: components["parameters"]["invitation-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      409: components["responses"]["conflict"];
-    };
-  };
-  /** Accept a repository invitation */
-  "repos/accept-invitation-for-authenticated-user": {
-    parameters: {
-      path: {
-        invitation_id: components["parameters"]["invitation-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      409: components["responses"]["conflict"];
-    };
-  };
-  /**
-   * List social accounts for the authenticated user
-   * @description Lists all of your social accounts.
-   */
-  "users/list-social-accounts-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["social-account"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Add social accounts for the authenticated user
-   * @description Add one or more social accounts to the authenticated user's profile. This endpoint is accessible with the `user` scope.
-   */
-  "users/add-social-account-for-authenticated-user": {
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Full URLs for the social media profiles to add.
-           * @example []
-           */
-          account_urls: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["social-account"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Delete social accounts for the authenticated user
-   * @description Deletes one or more social accounts from the authenticated user's profile. This endpoint is accessible with the `user` scope.
-   */
-  "users/delete-social-account-for-authenticated-user": {
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description Full URLs for the social media profiles to delete.
-           * @example []
-           */
-          account_urls: string[];
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List SSH signing keys for the authenticated user
-   * @description Lists the SSH signing keys for the authenticated user's GitHub account. You must authenticate with Basic Authentication, or you must authenticate with OAuth with at least `read:ssh_signing_key` scope. For more information, see "[Understanding scopes for OAuth apps](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)."
-   */
-  "users/list-ssh-signing-keys-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["ssh-signing-key"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Create a SSH signing key for the authenticated user
-   * @description Creates an SSH signing key for the authenticated user's GitHub account. You must authenticate with Basic Authentication, or you must authenticate with OAuth with at least `write:ssh_signing_key` scope. For more information, see "[Understanding scopes for OAuth apps](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)."
-   */
-  "users/create-ssh-signing-key-for-authenticated-user": {
-    requestBody: {
-      content: {
-        "application/json": {
-          /**
-           * @description A descriptive name for the new key.
-           * @example Personal MacBook Air
-           */
-          title?: string;
-          /** @description The public SSH key to add to your GitHub account. For more information, see "[Checking for existing SSH keys](https://docs.github.com/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys)." */
-          key: string;
-        };
-      };
-    };
-    responses: {
-      /** @description Response */
-      201: {
-        content: {
-          "application/json": components["schemas"]["ssh-signing-key"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get an SSH signing key for the authenticated user
-   * @description Gets extended details for an SSH signing key. You must authenticate with Basic Authentication, or you must authenticate with OAuth with at least `read:ssh_signing_key` scope. For more information, see "[Understanding scopes for OAuth apps](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)."
-   */
-  "users/get-ssh-signing-key-for-authenticated-user": {
-    parameters: {
-      path: {
-        ssh_signing_key_id: components["parameters"]["ssh-signing-key-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["ssh-signing-key"];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Delete an SSH signing key for the authenticated user
-   * @description Deletes an SSH signing key from the authenticated user's GitHub account. You must authenticate with Basic Authentication, or you must authenticate with OAuth with at least `admin:ssh_signing_key` scope. For more information, see "[Understanding scopes for OAuth apps](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)."
-   */
-  "users/delete-ssh-signing-key-for-authenticated-user": {
-    parameters: {
-      path: {
-        ssh_signing_key_id: components["parameters"]["ssh-signing-key-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List repositories starred by the authenticated user
-   * @description Lists repositories the authenticated user has starred.
-   *
-   * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: `application/vnd.github.star+json`.
-   */
-  "activity/list-repos-starred-by-authenticated-user": {
-    parameters: {
-      query?: {
-        sort?: components["parameters"]["sort-starred"];
-        direction?: components["parameters"]["direction"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["repository"][];
-          "application/vnd.github.v3.star+json": components["schemas"]["starred-repository"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Check if a repository is starred by the authenticated user
-   * @description Whether the authenticated user has starred the repository.
-   */
-  "activity/check-repo-is-starred-by-authenticated-user": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response if this repository is starred by you */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      /** @description Not Found if this repository is not starred by you */
-      404: {
-        content: {
-          "application/json": components["schemas"]["basic-error"];
-        };
-      };
-    };
-  };
-  /**
-   * Star a repository for the authenticated user
-   * @description Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-   */
-  "activity/star-repo-for-authenticated-user": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Unstar a repository for the authenticated user
-   * @description Unstar a repository that the authenticated user has previously starred.
-   */
-  "activity/unstar-repo-for-authenticated-user": {
-    parameters: {
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List repositories watched by the authenticated user
-   * @description Lists repositories the authenticated user is watching.
-   */
-  "activity/list-watched-repos-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["minimal-repository"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * List teams for the authenticated user
-   * @description List all of the teams across all of the organizations to which the authenticated user belongs. This method requires `user`, `repo`, or `read:org` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/) when authenticating via [OAuth](https://docs.github.com/apps/building-oauth-apps/). When using a fine-grained personal access token, the resource owner of the token [must be a single organization](https://docs.github.com/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#fine-grained-personal-access-tokens), and have at least read-only member organization permissions. The response payload only contains the teams from a single organization when using a fine-grained personal access token.
-   */
-  "teams/list-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["team-full"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List users
-   * @description Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts.
-   *
-   * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of users.
-   */
-  "users/list": {
-    parameters: {
-      query?: {
-        since?: components["parameters"]["since-user"];
-        per_page?: components["parameters"]["per-page"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          /** @example <https://api.github.com/users?since=135>; rel="next" */
-          Link?: string;
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-      304: components["responses"]["not_modified"];
-    };
-  };
-  /**
-   * Get a user
-   * @description Provides publicly available information about someone with a GitHub account.
-   *
-   * GitHub Apps with the `Plan` user permission can use this endpoint to retrieve information about a user's GitHub plan. The GitHub App must be authenticated as a user. See "[Identifying and authorizing users for GitHub Apps](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)" for details about authentication. For an example response, see 'Response with GitHub plan information' below"
-   *
-   * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be “public” which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/overview/resources-in-the-rest-api#authentication).
-   *
-   * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see "[Emails API](https://docs.github.com/rest/users/emails)".
-   */
-  "users/get-by-username": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json":
-            | components["schemas"]["private-user"]
-            | components["schemas"]["public-user"];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get list of conflicting packages during Docker migration for user
-   * @description Lists all packages that are in a specific user's namespace, that the requesting user has access to, and that encountered a conflict during Docker migration.
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` scope.
-   */
-  "packages/list-docker-migration-conflicting-packages-for-user": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package"][];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * List events for the authenticated user
-   * @description If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events.
-   */
-  "activity/list-events-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["event"][];
-        };
-      };
-    };
-  };
-  /**
-   * List organization events for the authenticated user
-   * @description This is the user's organization dashboard. You must be authenticated as the user to view this.
-   */
-  "activity/list-org-events-for-authenticated-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-        org: components["parameters"]["org"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["event"][];
-        };
-      };
-    };
-  };
-  /** List public events for a user */
-  "activity/list-public-events-for-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["event"][];
-        };
-      };
-    };
-  };
-  /**
-   * List followers of a user
-   * @description Lists the people following the specified user.
-   */
-  "users/list-followers-for-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-    };
-  };
-  /**
-   * List the people a user follows
-   * @description Lists the people who the specified user follows.
-   */
-  "users/list-following-for-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["simple-user"][];
-        };
-      };
-    };
-  };
-  /** Check if a user follows another user */
-  "users/check-following-for-user": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-        target_user: string;
-      };
-    };
-    responses: {
-      /** @description if the user follows the target user */
-      204: {
-        content: never;
-      };
-      /** @description if the user does not follow the target user */
-      404: {
-        content: never;
-      };
-    };
-  };
-  /**
-   * List gists for a user
-   * @description Lists public gists for the specified user:
-   */
-  "gists/list-for-user": {
-    parameters: {
-      query?: {
-        since?: components["parameters"]["since"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["base-gist"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List GPG keys for a user
-   * @description Lists the GPG keys for a user. This information is accessible by anyone.
-   */
-  "users/list-gpg-keys-for-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["gpg-key"][];
-        };
-      };
-    };
-  };
-  /**
-   * Get contextual information for a user
-   * @description Provides hovercard information when authenticated through basic auth or OAuth with the `repo` scope. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations.
-   *
-   * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository via cURL, it would look like this:
-   *
-   * ```shell
-   *  curl -u username:token
-   *   https://api.github.com/users/octocat/hovercard?subject_type=repository&subject_id=1300192
-   * ```
-   */
-  "users/get-context-for-user": {
-    parameters: {
-      query?: {
-        /** @description Identifies which additional information you'd like to receive about the person's hovercard. Can be `organization`, `repository`, `issue`, `pull_request`. **Required** when using `subject_id`. */
-        subject_type?: "organization" | "repository" | "issue" | "pull_request";
-        /** @description Uses the ID for the `subject_type` you specified. **Required** when using `subject_type`. */
-        subject_id?: string;
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["hovercard"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * Get a user installation for the authenticated app
-   * @description Enables an authenticated GitHub App to find the user’s installation information.
-   *
-   * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-   */
-  "apps/get-user-installation": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["installation"];
-        };
-      };
-    };
-  };
-  /**
-   * List public keys for a user
-   * @description Lists the _verified_ public SSH keys for a user. This is accessible by anyone.
-   */
-  "users/list-public-keys-for-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["key-simple"][];
-        };
-      };
-    };
-  };
-  /**
-   * List organizations for a user
-   * @description List [public organization memberships](https://docs.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user.
-   *
-   * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List organizations for the authenticated user](https://docs.github.com/rest/orgs/orgs#list-organizations-for-the-authenticated-user) API instead.
-   */
-  "orgs/list-for-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["organization-simple"][];
-        };
-      };
-    };
-  };
-  /**
-   * List packages for a user
-   * @description Lists all packages in a user's namespace for which the requesting user has access.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/list-packages-for-user": {
-    parameters: {
-      query: {
-        /** @description The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */
-        package_type:
-          | "npm"
-          | "maven"
-          | "rubygems"
-          | "docker"
-          | "nuget"
-          | "container";
-        visibility?: components["parameters"]["package-visibility"];
-        page?: components["parameters"]["page"];
-        per_page?: components["parameters"]["per-page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package"][];
-        };
-      };
-      400: components["responses"]["package_es_list_error"];
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-    };
-  };
-  /**
-   * Get a package for a user
-   * @description Gets a specific package metadata for a public package owned by a user.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/get-package-for-user": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete a package for a user
-   * @description Deletes an entire package for a user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` and `delete:packages` scopes. In addition:
-   * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package you want to delete. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-   */
-  "packages/delete-package-for-user": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Restore a package for a user
-   * @description Restores an entire package for a user.
-   *
-   * You can restore a deleted package under the following conditions:
-   *   - The package was deleted within the last 30 days.
-   *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` and `write:packages` scopes. In addition:
-   * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package you want to restore. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-   */
-  "packages/restore-package-for-user": {
-    parameters: {
-      query?: {
-        /** @description package token */
-        token?: string;
-      };
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List package versions for a package owned by a user
-   * @description Lists package versions for a public package owned by a specified user.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/get-all-package-versions-for-package-owned-by-user": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package-version"][];
-        };
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get a package version for a user
-   * @description Gets a specific package version for a public package owned by a specified user.
-   *
-   * At this time, to use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   */
-  "packages/get-package-version-for-user": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        package_version_id: components["parameters"]["package-version-id"];
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["package-version"];
-        };
-      };
-    };
-  };
-  /**
-   * Delete package version for a user
-   * @description Deletes a specific package version for a user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` and `delete:packages` scopes. In addition:
-   * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package whose version you want to delete. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-   */
-  "packages/delete-package-version-for-user": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        username: components["parameters"]["username"];
-        package_version_id: components["parameters"]["package-version-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Restore package version for a user
-   * @description Restores a specific package version for a user.
-   *
-   * You can restore a deleted package under the following conditions:
-   *   - The package was deleted within the last 30 days.
-   *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-   *
-   * To use this endpoint, you must authenticate using an access token with the `read:packages` and `write:packages` scopes. In addition:
-   * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-   * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package whose version you want to restore. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-   */
-  "packages/restore-package-version-for-user": {
-    parameters: {
-      path: {
-        package_type: components["parameters"]["package-type"];
-        package_name: components["parameters"]["package-name"];
-        username: components["parameters"]["username"];
-        package_version_id: components["parameters"]["package-version-id"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      204: {
-        content: never;
-      };
-      401: components["responses"]["requires_authentication"];
-      403: components["responses"]["forbidden"];
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * List user projects
-   * @description Lists projects for a user.
-   */
-  "projects/list-for-user": {
-    parameters: {
-      query?: {
-        /** @description Indicates the state of the projects to return. */
-        state?: "open" | "closed" | "all";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["project"][];
-        };
-      };
-      422: components["responses"]["validation_failed"];
-    };
-  };
-  /**
-   * List events received by the authenticated user
-   * @description These are events that you've received by watching repos and following users. If you are authenticated as the given user, you will see private events. Otherwise, you'll only see public events.
-   */
-  "activity/list-received-events-for-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["event"][];
-        };
-      };
-    };
-  };
-  /** List public events received by a user */
-  "activity/list-received-public-events-for-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["event"][];
-        };
-      };
-    };
-  };
-  /**
-   * List repositories for a user
-   * @description Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.
-   */
-  "repos/list-for-user": {
-    parameters: {
-      query?: {
-        /** @description Limit results to repositories of the specified type. */
-        type?: "all" | "owner" | "member";
-        /** @description The property to sort the results by. */
-        sort?: "created" | "updated" | "pushed" | "full_name";
-        /** @description The order to sort by. Default: `asc` when using `full_name`, otherwise `desc`. */
-        direction?: "asc" | "desc";
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["minimal-repository"][];
-        };
-      };
-    };
-  };
-  /**
-   * Get GitHub Actions billing for a user
-   * @description Gets the summary of the free and paid GitHub Actions minutes used.
-   *
-   * 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](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
-   *
-   * Access tokens must have the `user` scope.
-   */
-  "billing/get-github-actions-billing-user": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["actions-billing-usage"];
-        };
-      };
-    };
-  };
-  /**
-   * Get GitHub Packages billing for a user
-   * @description Gets the free and paid storage used for GitHub Packages in gigabytes.
-   *
-   * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)."
-   *
-   * Access tokens must have the `user` scope.
-   */
-  "billing/get-github-packages-billing-user": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["packages-billing-usage"];
-        };
-      };
-    };
-  };
-  /**
-   * Get shared storage billing for a user
-   * @description Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages.
-   *
-   * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)."
-   *
-   * Access tokens must have the `user` scope.
-   */
-  "billing/get-shared-storage-billing-user": {
-    parameters: {
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["combined-billing-usage"];
-        };
-      };
-    };
-  };
-  /**
-   * List social accounts for a user
-   * @description Lists social media accounts for a user. This endpoint is accessible by anyone.
-   */
-  "users/list-social-accounts-for-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["social-account"][];
-        };
-      };
-    };
-  };
-  /**
-   * List SSH signing keys for a user
-   * @description Lists the SSH signing keys for a user. This operation is accessible by anyone.
-   */
-  "users/list-ssh-signing-keys-for-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["ssh-signing-key"][];
-        };
-      };
-    };
-  };
-  /**
-   * List repositories starred by a user
-   * @description Lists repositories a user has starred.
-   *
-   * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: `application/vnd.github.star+json`.
-   */
-  "activity/list-repos-starred-by-user": {
-    parameters: {
-      query?: {
-        sort?: components["parameters"]["sort-starred"];
-        direction?: components["parameters"]["direction"];
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json":
-            | components["schemas"]["starred-repository"][]
-            | components["schemas"]["repository"][];
-        };
-      };
-    };
-  };
-  /**
-   * List repositories watched by a user
-   * @description Lists repositories a user is watching.
-   */
-  "activity/list-repos-watched-by-user": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        username: components["parameters"]["username"];
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        headers: {
-          Link: components["headers"]["link"];
-        };
-        content: {
-          "application/json": components["schemas"]["minimal-repository"][];
-        };
-      };
-    };
-  };
-  /**
-   * Get all API versions
-   * @description Get all supported GitHub API versions.
-   */
-  "meta/get-all-versions": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": string[];
-        };
-      };
-      404: components["responses"]["not_found"];
-    };
-  };
-  /**
-   * Get the Zen of GitHub
-   * @description Get a random sentence from the Zen of GitHub
-   */
-  "meta/get-zen": {
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": string;
-        };
-      };
-    };
-  };
-  /**
-   * Compare two commits
-   * @description **Deprecated**: Use `repos.compareCommitsWithBasehead()` (`GET /repos/{owner}/{repo}/compare/{basehead}`) instead. Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `<USERNAME>:branch`.
-   *
-   * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
-   *
-   * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file.
-   *
-   * **Working with large comparisons**
-   *
-   * To process a response with a large number of commits, you can use (`per_page` or `page`) to paginate the results. When using paging, the list of changed files is only returned with page 1, but includes all changed files for the entire comparison. For more information on working with pagination, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)."
-   *
-   * When calling this API without any paging parameters (`per_page` or `page`), the returned list is limited to 250 commits and the last commit in the list is the most recent of the entire comparison. When a paging parameter is specified, the first commit in the returned list of each page is the earliest.
-   *
-   * **Signature verification object**
-   *
-   * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-   *
-   * | Name | Type | Description |
-   * | ---- | ---- | ----------- |
-   * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-   * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-   * | `signature` | `string` | The signature that was extracted from the commit. |
-   * | `payload` | `string` | The value that was signed. |
-   *
-   * These are the possible values for `reason` in the `verification` object:
-   *
-   * | Value | Description |
-   * | ----- | ----------- |
-   * | `expired_key` | The key that made the signature is expired. |
-   * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-   * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-   * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-   * | `unsigned` | The object does not include a signature. |
-   * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-   * | `no_user` | No user was associated with the `committer` email address in the commit. |
-   * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
-   * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-   * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-   * | `malformed_signature` | There was an error parsing the signature. |
-   * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-   * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-   */
-  "repos/compare-commits": {
-    parameters: {
-      query?: {
-        per_page?: components["parameters"]["per-page"];
-        page?: components["parameters"]["page"];
-      };
-      path: {
-        owner: components["parameters"]["owner"];
-        repo: components["parameters"]["repo"];
-        base: string;
-        head: string;
-      };
-    };
-    responses: {
-      /** @description Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["commit-comparison"];
-        };
-      };
-      404: components["responses"]["not_found"];
-      500: components["responses"]["internal_error"];
-    };
-  };
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/LICENSE
deleted file mode 100644
index 57bee5f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/LICENSE
+++ /dev/null
@@ -1,7 +0,0 @@
-MIT License Copyright (c) 2019 Octokit contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/README.md b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/README.md
deleted file mode 100644
index 9ebf695..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/README.md
+++ /dev/null
@@ -1,269 +0,0 @@
-# plugin-paginate-rest.js
-
-> Octokit plugin to paginate REST API endpoint responses
-
-[![@latest](https://img.shields.io/npm/v/@octokit/plugin-paginate-rest.svg)](https://www.npmjs.com/package/@octokit/plugin-paginate-rest)
-[![Build Status](https://github.com/octokit/plugin-paginate-rest.js/workflows/Test/badge.svg)](https://github.com/octokit/plugin-paginate-rest.js/actions?workflow=Test)
-
-## Usage
-
-<table>
-<tbody valign=top align=left>
-<tr><th>
-Browsers
-</th><td width=100%>
-
-Load `@octokit/plugin-paginate-rest` and [`@octokit/core`](https://github.com/octokit/core.js) (or core-compatible module) directly from [esm.sh](https://esm.sh)
-
-```html
-<script type="module">
-  import { Octokit } from "https://esm.sh/@octokit/core";
-  import {
-    paginateRest,
-    composePaginateRest,
-  } from "https://esm.sh/@octokit/plugin-paginate-rest";
-</script>
-```
-
-</td></tr>
-<tr><th>
-Node
-</th><td>
-
-Install with `npm install @octokit/core @octokit/plugin-paginate-rest`. Optionally replace `@octokit/core` with a core-compatible module
-
-```js
-const { Octokit } = require("@octokit/core");
-const {
-  paginateRest,
-  composePaginateRest,
-} = require("@octokit/plugin-paginate-rest");
-```
-
-</td></tr>
-</tbody>
-</table>
-
-```js
-const MyOctokit = Octokit.plugin(paginateRest);
-const octokit = new MyOctokit({ auth: "secret123" });
-
-// See https://developer.github.com/v3/issues/#list-issues-for-a-repository
-const issues = await octokit.paginate("GET /repos/{owner}/{repo}/issues", {
-  owner: "octocat",
-  repo: "hello-world",
-  since: "2010-10-01",
-  per_page: 100,
-});
-```
-
-If you want to utilize the pagination methods in another plugin, use `composePaginateRest`.
-
-```js
-function myPlugin(octokit, options) {
-  return {
-    allStars({owner, repo}) => {
-      return composePaginateRest(
-        octokit,
-        "GET /repos/{owner}/{repo}/stargazers",
-        {owner, repo }
-      )
-    }
-  }
-}
-```
-
-## `octokit.paginate()`
-
-The `paginateRest` plugin adds a new `octokit.paginate()` method which accepts the same parameters as [`octokit.request`](https://github.com/octokit/request.js#request). Only "List ..." endpoints such as [List issues for a repository](https://developer.github.com/v3/issues/#list-issues-for-a-repository) are supporting pagination. Their [response includes a Link header](https://developer.github.com/v3/issues/#response-1). For other endpoints, `octokit.paginate()` behaves the same as `octokit.request()`.
-
-The `per_page` parameter is usually defaulting to `30`, and can be set to up to `100`, which helps retrieving a big amount of data without hitting the rate limits too soon.
-
-An optional `mapFunction` can be passed to map each page response to a new value, usually an array with only the data you need. This can help to reduce memory usage, as only the relevant data has to be kept in memory until the pagination is complete.
-
-```js
-const issueTitles = await octokit.paginate(
-  "GET /repos/{owner}/{repo}/issues",
-  {
-    owner: "octocat",
-    repo: "hello-world",
-    since: "2010-10-01",
-    per_page: 100,
-  },
-  (response) => response.data.map((issue) => issue.title),
-);
-```
-
-The `mapFunction` gets a 2nd argument `done` which can be called to end the pagination early.
-
-```js
-const issues = await octokit.paginate(
-  "GET /repos/{owner}/{repo}/issues",
-  {
-    owner: "octocat",
-    repo: "hello-world",
-    since: "2010-10-01",
-    per_page: 100,
-  },
-  (response, done) => {
-    if (response.data.find((issue) => issue.title.includes("something"))) {
-      done();
-    }
-    return response.data;
-  },
-);
-```
-
-Alternatively you can pass a `request` method as first argument. This is great when using in combination with [`@octokit/plugin-rest-endpoint-methods`](https://github.com/octokit/plugin-rest-endpoint-methods.js/):
-
-```js
-const issues = await octokit.paginate(octokit.rest.issues.listForRepo, {
-  owner: "octocat",
-  repo: "hello-world",
-  since: "2010-10-01",
-  per_page: 100,
-});
-```
-
-## `octokit.paginate.iterator()`
-
-If your target runtime environments supports async iterators (such as most modern browsers and Node 10+), you can iterate through each response
-
-```js
-const parameters = {
-  owner: "octocat",
-  repo: "hello-world",
-  since: "2010-10-01",
-  per_page: 100,
-};
-for await (const response of octokit.paginate.iterator(
-  "GET /repos/{owner}/{repo}/issues",
-  parameters,
-)) {
-  // do whatever you want with each response, break out of the loop, etc.
-  const issues = response.data;
-  console.log("%d issues found", issues.length);
-}
-```
-
-Alternatively you can pass a `request` method as first argument. This is great when using in combination with [`@octokit/plugin-rest-endpoint-methods`](https://github.com/octokit/plugin-rest-endpoint-methods.js/):
-
-```js
-const parameters = {
-  owner: "octocat",
-  repo: "hello-world",
-  since: "2010-10-01",
-  per_page: 100,
-};
-for await (const response of octokit.paginate.iterator(
-  octokit.rest.issues.listForRepo,
-  parameters,
-)) {
-  // do whatever you want with each response, break out of the loop, etc.
-  const issues = response.data;
-  console.log("%d issues found", issues.length);
-}
-```
-
-## `composePaginateRest` and `composePaginateRest.iterator`
-
-The `compose*` methods work just like their `octokit.*` counterparts described above, with the differenct that both methods require an `octokit` instance to be passed as first argument
-
-## How it works
-
-`octokit.paginate()` wraps `octokit.request()`. As long as a `rel="next"` link value is present in the response's `Link` header, it sends another request for that URL, and so on.
-
-Most of GitHub's paginating REST API endpoints return an array, but there are a few exceptions which return an object with a key that includes the items array. For example:
-
-- [Search repositories](https://developer.github.com/v3/search/#example) (key `items`)
-- [List check runs for a specific ref](https://developer.github.com/v3/checks/runs/#response-3) (key: `check_runs`)
-- [List check suites for a specific ref](https://developer.github.com/v3/checks/suites/#response-1) (key: `check_suites`)
-- [List repositories](https://developer.github.com/v3/apps/installations/#list-repositories) for an installation (key: `repositories`)
-- [List installations for a user](https://developer.github.com/v3/apps/installations/#response-1) (key `installations`)
-
-`octokit.paginate()` is working around these inconsistencies so you don't have to worry about it.
-
-If a response is lacking the `Link` header, `octokit.paginate()` still resolves with an array, even if the response returns a single object.
-
-## Types
-
-The plugin also exposes some types and runtime type guards for TypeScript projects.
-
-<table>
-<tbody valign=top align=left>
-<tr><th>
-Types
-</th><td>
-
-```typescript
-import {
-  PaginateInterface,
-  PaginatingEndpoints,
-} from "@octokit/plugin-paginate-rest";
-```
-
-</td></tr>
-<tr><th>
-Guards
-</th><td>
-
-```typescript
-import { isPaginatingEndpoint } from "@octokit/plugin-paginate-rest";
-```
-
-</td></tr>
-</tbody>
-</table>
-
-### PaginateInterface
-
-An `interface` that declares all the overloads of the `.paginate` method.
-
-### PaginatingEndpoints
-
-An `interface` which describes all API endpoints supported by the plugin. Some overloads of `.paginate()` method and `composePaginateRest()` function depend on `PaginatingEndpoints`, using the `keyof PaginatingEndpoints` as a type for one of its arguments.
-
-```typescript
-import { Octokit } from "@octokit/core";
-import {
-  PaginatingEndpoints,
-  composePaginateRest,
-} from "@octokit/plugin-paginate-rest";
-
-type DataType<T> = "data" extends keyof T ? T["data"] : unknown;
-
-async function myPaginatePlugin<E extends keyof PaginatingEndpoints>(
-  octokit: Octokit,
-  endpoint: E,
-  parameters?: PaginatingEndpoints[E]["parameters"],
-): Promise<DataType<PaginatingEndpoints[E]["response"]>> {
-  return await composePaginateRest(octokit, endpoint, parameters);
-}
-```
-
-### isPaginatingEndpoint
-
-A type guard, `isPaginatingEndpoint(arg)` returns `true` if `arg` is one of the keys in `PaginatingEndpoints` (is `keyof PaginatingEndpoints`).
-
-```typescript
-import { Octokit } from "@octokit/core";
-import {
-  isPaginatingEndpoint,
-  composePaginateRest,
-} from "@octokit/plugin-paginate-rest";
-
-async function myPlugin(octokit: Octokit, arg: unknown) {
-  if (isPaginatingEndpoint(arg)) {
-    return await composePaginateRest(octokit, arg);
-  }
-  // ...
-}
-```
-
-## Contributing
-
-See [CONTRIBUTING.md](CONTRIBUTING.md)
-
-## License
-
-[MIT](LICENSE)
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js
deleted file mode 100644
index 5b0377c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js
+++ /dev/null
@@ -1,396 +0,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
-  if (from && typeof from === "object" || typeof from === "function") {
-    for (let key of __getOwnPropNames(from))
-      if (!__hasOwnProp.call(to, key) && key !== except)
-        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
-  }
-  return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
-  composePaginateRest: () => composePaginateRest,
-  isPaginatingEndpoint: () => isPaginatingEndpoint,
-  paginateRest: () => paginateRest,
-  paginatingEndpoints: () => paginatingEndpoints
-});
-module.exports = __toCommonJS(dist_src_exports);
-
-// pkg/dist-src/version.js
-var VERSION = "9.1.5";
-
-// pkg/dist-src/normalize-paginated-list-response.js
-function normalizePaginatedListResponse(response) {
-  if (!response.data) {
-    return {
-      ...response,
-      data: []
-    };
-  }
-  const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
-  if (!responseNeedsNormalization)
-    return response;
-  const incompleteResults = response.data.incomplete_results;
-  const repositorySelection = response.data.repository_selection;
-  const totalCount = response.data.total_count;
-  delete response.data.incomplete_results;
-  delete response.data.repository_selection;
-  delete response.data.total_count;
-  const namespaceKey = Object.keys(response.data)[0];
-  const data = response.data[namespaceKey];
-  response.data = data;
-  if (typeof incompleteResults !== "undefined") {
-    response.data.incomplete_results = incompleteResults;
-  }
-  if (typeof repositorySelection !== "undefined") {
-    response.data.repository_selection = repositorySelection;
-  }
-  response.data.total_count = totalCount;
-  return response;
-}
-
-// pkg/dist-src/iterator.js
-function iterator(octokit, route, parameters) {
-  const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
-  const requestMethod = typeof route === "function" ? route : octokit.request;
-  const method = options.method;
-  const headers = options.headers;
-  let url = options.url;
-  return {
-    [Symbol.asyncIterator]: () => ({
-      async next() {
-        if (!url)
-          return { done: true };
-        try {
-          const response = await requestMethod({ method, url, headers });
-          const normalizedResponse = normalizePaginatedListResponse(response);
-          url = ((normalizedResponse.headers.link || "").match(
-            /<([^>]+)>;\s*rel="next"/
-          ) || [])[1];
-          return { value: normalizedResponse };
-        } catch (error) {
-          if (error.status !== 409)
-            throw error;
-          url = "";
-          return {
-            value: {
-              status: 200,
-              headers: {},
-              data: []
-            }
-          };
-        }
-      }
-    })
-  };
-}
-
-// pkg/dist-src/paginate.js
-function paginate(octokit, route, parameters, mapFn) {
-  if (typeof parameters === "function") {
-    mapFn = parameters;
-    parameters = void 0;
-  }
-  return gather(
-    octokit,
-    [],
-    iterator(octokit, route, parameters)[Symbol.asyncIterator](),
-    mapFn
-  );
-}
-function gather(octokit, results, iterator2, mapFn) {
-  return iterator2.next().then((result) => {
-    if (result.done) {
-      return results;
-    }
-    let earlyExit = false;
-    function done() {
-      earlyExit = true;
-    }
-    results = results.concat(
-      mapFn ? mapFn(result.value, done) : result.value.data
-    );
-    if (earlyExit) {
-      return results;
-    }
-    return gather(octokit, results, iterator2, mapFn);
-  });
-}
-
-// pkg/dist-src/compose-paginate.js
-var composePaginateRest = Object.assign(paginate, {
-  iterator
-});
-
-// pkg/dist-src/generated/paginating-endpoints.js
-var paginatingEndpoints = [
-  "GET /advisories",
-  "GET /app/hook/deliveries",
-  "GET /app/installation-requests",
-  "GET /app/installations",
-  "GET /assignments/{assignment_id}/accepted_assignments",
-  "GET /classrooms",
-  "GET /classrooms/{classroom_id}/assignments",
-  "GET /enterprises/{enterprise}/dependabot/alerts",
-  "GET /enterprises/{enterprise}/secret-scanning/alerts",
-  "GET /events",
-  "GET /gists",
-  "GET /gists/public",
-  "GET /gists/starred",
-  "GET /gists/{gist_id}/comments",
-  "GET /gists/{gist_id}/commits",
-  "GET /gists/{gist_id}/forks",
-  "GET /installation/repositories",
-  "GET /issues",
-  "GET /licenses",
-  "GET /marketplace_listing/plans",
-  "GET /marketplace_listing/plans/{plan_id}/accounts",
-  "GET /marketplace_listing/stubbed/plans",
-  "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts",
-  "GET /networks/{owner}/{repo}/events",
-  "GET /notifications",
-  "GET /organizations",
-  "GET /orgs/{org}/actions/cache/usage-by-repository",
-  "GET /orgs/{org}/actions/permissions/repositories",
-  "GET /orgs/{org}/actions/runners",
-  "GET /orgs/{org}/actions/secrets",
-  "GET /orgs/{org}/actions/secrets/{secret_name}/repositories",
-  "GET /orgs/{org}/actions/variables",
-  "GET /orgs/{org}/actions/variables/{name}/repositories",
-  "GET /orgs/{org}/blocks",
-  "GET /orgs/{org}/code-scanning/alerts",
-  "GET /orgs/{org}/codespaces",
-  "GET /orgs/{org}/codespaces/secrets",
-  "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories",
-  "GET /orgs/{org}/copilot/billing/seats",
-  "GET /orgs/{org}/dependabot/alerts",
-  "GET /orgs/{org}/dependabot/secrets",
-  "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories",
-  "GET /orgs/{org}/events",
-  "GET /orgs/{org}/failed_invitations",
-  "GET /orgs/{org}/hooks",
-  "GET /orgs/{org}/hooks/{hook_id}/deliveries",
-  "GET /orgs/{org}/installations",
-  "GET /orgs/{org}/invitations",
-  "GET /orgs/{org}/invitations/{invitation_id}/teams",
-  "GET /orgs/{org}/issues",
-  "GET /orgs/{org}/members",
-  "GET /orgs/{org}/members/{username}/codespaces",
-  "GET /orgs/{org}/migrations",
-  "GET /orgs/{org}/migrations/{migration_id}/repositories",
-  "GET /orgs/{org}/outside_collaborators",
-  "GET /orgs/{org}/packages",
-  "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
-  "GET /orgs/{org}/personal-access-token-requests",
-  "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories",
-  "GET /orgs/{org}/personal-access-tokens",
-  "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories",
-  "GET /orgs/{org}/projects",
-  "GET /orgs/{org}/properties/values",
-  "GET /orgs/{org}/public_members",
-  "GET /orgs/{org}/repos",
-  "GET /orgs/{org}/rulesets",
-  "GET /orgs/{org}/rulesets/rule-suites",
-  "GET /orgs/{org}/secret-scanning/alerts",
-  "GET /orgs/{org}/security-advisories",
-  "GET /orgs/{org}/teams",
-  "GET /orgs/{org}/teams/{team_slug}/discussions",
-  "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments",
-  "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions",
-  "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions",
-  "GET /orgs/{org}/teams/{team_slug}/invitations",
-  "GET /orgs/{org}/teams/{team_slug}/members",
-  "GET /orgs/{org}/teams/{team_slug}/projects",
-  "GET /orgs/{org}/teams/{team_slug}/repos",
-  "GET /orgs/{org}/teams/{team_slug}/teams",
-  "GET /projects/columns/{column_id}/cards",
-  "GET /projects/{project_id}/collaborators",
-  "GET /projects/{project_id}/columns",
-  "GET /repos/{owner}/{repo}/actions/artifacts",
-  "GET /repos/{owner}/{repo}/actions/caches",
-  "GET /repos/{owner}/{repo}/actions/organization-secrets",
-  "GET /repos/{owner}/{repo}/actions/organization-variables",
-  "GET /repos/{owner}/{repo}/actions/runners",
-  "GET /repos/{owner}/{repo}/actions/runs",
-  "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts",
-  "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs",
-  "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs",
-  "GET /repos/{owner}/{repo}/actions/secrets",
-  "GET /repos/{owner}/{repo}/actions/variables",
-  "GET /repos/{owner}/{repo}/actions/workflows",
-  "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs",
-  "GET /repos/{owner}/{repo}/activity",
-  "GET /repos/{owner}/{repo}/assignees",
-  "GET /repos/{owner}/{repo}/branches",
-  "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations",
-  "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs",
-  "GET /repos/{owner}/{repo}/code-scanning/alerts",
-  "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
-  "GET /repos/{owner}/{repo}/code-scanning/analyses",
-  "GET /repos/{owner}/{repo}/codespaces",
-  "GET /repos/{owner}/{repo}/codespaces/devcontainers",
-  "GET /repos/{owner}/{repo}/codespaces/secrets",
-  "GET /repos/{owner}/{repo}/collaborators",
-  "GET /repos/{owner}/{repo}/comments",
-  "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions",
-  "GET /repos/{owner}/{repo}/commits",
-  "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments",
-  "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls",
-  "GET /repos/{owner}/{repo}/commits/{ref}/check-runs",
-  "GET /repos/{owner}/{repo}/commits/{ref}/check-suites",
-  "GET /repos/{owner}/{repo}/commits/{ref}/status",
-  "GET /repos/{owner}/{repo}/commits/{ref}/statuses",
-  "GET /repos/{owner}/{repo}/contributors",
-  "GET /repos/{owner}/{repo}/dependabot/alerts",
-  "GET /repos/{owner}/{repo}/dependabot/secrets",
-  "GET /repos/{owner}/{repo}/deployments",
-  "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses",
-  "GET /repos/{owner}/{repo}/environments",
-  "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies",
-  "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps",
-  "GET /repos/{owner}/{repo}/events",
-  "GET /repos/{owner}/{repo}/forks",
-  "GET /repos/{owner}/{repo}/hooks",
-  "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries",
-  "GET /repos/{owner}/{repo}/invitations",
-  "GET /repos/{owner}/{repo}/issues",
-  "GET /repos/{owner}/{repo}/issues/comments",
-  "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions",
-  "GET /repos/{owner}/{repo}/issues/events",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/comments",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/events",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/labels",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline",
-  "GET /repos/{owner}/{repo}/keys",
-  "GET /repos/{owner}/{repo}/labels",
-  "GET /repos/{owner}/{repo}/milestones",
-  "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels",
-  "GET /repos/{owner}/{repo}/notifications",
-  "GET /repos/{owner}/{repo}/pages/builds",
-  "GET /repos/{owner}/{repo}/projects",
-  "GET /repos/{owner}/{repo}/pulls",
-  "GET /repos/{owner}/{repo}/pulls/comments",
-  "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/files",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments",
-  "GET /repos/{owner}/{repo}/releases",
-  "GET /repos/{owner}/{repo}/releases/{release_id}/assets",
-  "GET /repos/{owner}/{repo}/releases/{release_id}/reactions",
-  "GET /repos/{owner}/{repo}/rules/branches/{branch}",
-  "GET /repos/{owner}/{repo}/rulesets",
-  "GET /repos/{owner}/{repo}/rulesets/rule-suites",
-  "GET /repos/{owner}/{repo}/secret-scanning/alerts",
-  "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations",
-  "GET /repos/{owner}/{repo}/security-advisories",
-  "GET /repos/{owner}/{repo}/stargazers",
-  "GET /repos/{owner}/{repo}/subscribers",
-  "GET /repos/{owner}/{repo}/tags",
-  "GET /repos/{owner}/{repo}/teams",
-  "GET /repos/{owner}/{repo}/topics",
-  "GET /repositories",
-  "GET /repositories/{repository_id}/environments/{environment_name}/secrets",
-  "GET /repositories/{repository_id}/environments/{environment_name}/variables",
-  "GET /search/code",
-  "GET /search/commits",
-  "GET /search/issues",
-  "GET /search/labels",
-  "GET /search/repositories",
-  "GET /search/topics",
-  "GET /search/users",
-  "GET /teams/{team_id}/discussions",
-  "GET /teams/{team_id}/discussions/{discussion_number}/comments",
-  "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions",
-  "GET /teams/{team_id}/discussions/{discussion_number}/reactions",
-  "GET /teams/{team_id}/invitations",
-  "GET /teams/{team_id}/members",
-  "GET /teams/{team_id}/projects",
-  "GET /teams/{team_id}/repos",
-  "GET /teams/{team_id}/teams",
-  "GET /user/blocks",
-  "GET /user/codespaces",
-  "GET /user/codespaces/secrets",
-  "GET /user/emails",
-  "GET /user/followers",
-  "GET /user/following",
-  "GET /user/gpg_keys",
-  "GET /user/installations",
-  "GET /user/installations/{installation_id}/repositories",
-  "GET /user/issues",
-  "GET /user/keys",
-  "GET /user/marketplace_purchases",
-  "GET /user/marketplace_purchases/stubbed",
-  "GET /user/memberships/orgs",
-  "GET /user/migrations",
-  "GET /user/migrations/{migration_id}/repositories",
-  "GET /user/orgs",
-  "GET /user/packages",
-  "GET /user/packages/{package_type}/{package_name}/versions",
-  "GET /user/public_emails",
-  "GET /user/repos",
-  "GET /user/repository_invitations",
-  "GET /user/social_accounts",
-  "GET /user/ssh_signing_keys",
-  "GET /user/starred",
-  "GET /user/subscriptions",
-  "GET /user/teams",
-  "GET /users",
-  "GET /users/{username}/events",
-  "GET /users/{username}/events/orgs/{org}",
-  "GET /users/{username}/events/public",
-  "GET /users/{username}/followers",
-  "GET /users/{username}/following",
-  "GET /users/{username}/gists",
-  "GET /users/{username}/gpg_keys",
-  "GET /users/{username}/keys",
-  "GET /users/{username}/orgs",
-  "GET /users/{username}/packages",
-  "GET /users/{username}/projects",
-  "GET /users/{username}/received_events",
-  "GET /users/{username}/received_events/public",
-  "GET /users/{username}/repos",
-  "GET /users/{username}/social_accounts",
-  "GET /users/{username}/ssh_signing_keys",
-  "GET /users/{username}/starred",
-  "GET /users/{username}/subscriptions"
-];
-
-// pkg/dist-src/paginating-endpoints.js
-function isPaginatingEndpoint(arg) {
-  if (typeof arg === "string") {
-    return paginatingEndpoints.includes(arg);
-  } else {
-    return false;
-  }
-}
-
-// pkg/dist-src/index.js
-function paginateRest(octokit) {
-  return {
-    paginate: Object.assign(paginate.bind(null, octokit), {
-      iterator: iterator.bind(null, octokit)
-    })
-  };
-}
-paginateRest.VERSION = VERSION;
-// Annotate the CommonJS export names for ESM import in node:
-0 && (module.exports = {
-  composePaginateRest,
-  isPaginatingEndpoint,
-  paginateRest,
-  paginatingEndpoints
-});
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map
deleted file mode 100644
index 773d86b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/index.js", "../dist-src/version.js", "../dist-src/normalize-paginated-list-response.js", "../dist-src/iterator.js", "../dist-src/paginate.js", "../dist-src/compose-paginate.js", "../dist-src/generated/paginating-endpoints.js", "../dist-src/paginating-endpoints.js"],
-  "sourcesContent": ["import { VERSION } from \"./version.js\";\nimport { paginate } from \"./paginate.js\";\nimport { iterator } from \"./iterator.js\";\nimport { composePaginateRest } from \"./compose-paginate.js\";\nimport {\n  isPaginatingEndpoint,\n  paginatingEndpoints\n} from \"./paginating-endpoints.js\";\nfunction paginateRest(octokit) {\n  return {\n    paginate: Object.assign(paginate.bind(null, octokit), {\n      iterator: iterator.bind(null, octokit)\n    })\n  };\n}\npaginateRest.VERSION = VERSION;\nexport {\n  composePaginateRest,\n  isPaginatingEndpoint,\n  paginateRest,\n  paginatingEndpoints\n};\n", "const VERSION = \"9.1.5\";\nexport {\n  VERSION\n};\n", "function normalizePaginatedListResponse(response) {\n  if (!response.data) {\n    return {\n      ...response,\n      data: []\n    };\n  }\n  const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n  if (!responseNeedsNormalization)\n    return response;\n  const incompleteResults = response.data.incomplete_results;\n  const repositorySelection = response.data.repository_selection;\n  const totalCount = response.data.total_count;\n  delete response.data.incomplete_results;\n  delete response.data.repository_selection;\n  delete response.data.total_count;\n  const namespaceKey = Object.keys(response.data)[0];\n  const data = response.data[namespaceKey];\n  response.data = data;\n  if (typeof incompleteResults !== \"undefined\") {\n    response.data.incomplete_results = incompleteResults;\n  }\n  if (typeof repositorySelection !== \"undefined\") {\n    response.data.repository_selection = repositorySelection;\n  }\n  response.data.total_count = totalCount;\n  return response;\n}\nexport {\n  normalizePaginatedListResponse\n};\n", "import { normalizePaginatedListResponse } from \"./normalize-paginated-list-response.js\";\nfunction iterator(octokit, route, parameters) {\n  const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n  const requestMethod = typeof route === \"function\" ? route : octokit.request;\n  const method = options.method;\n  const headers = options.headers;\n  let url = options.url;\n  return {\n    [Symbol.asyncIterator]: () => ({\n      async next() {\n        if (!url)\n          return { done: true };\n        try {\n          const response = await requestMethod({ method, url, headers });\n          const normalizedResponse = normalizePaginatedListResponse(response);\n          url = ((normalizedResponse.headers.link || \"\").match(\n            /<([^>]+)>;\\s*rel=\"next\"/\n          ) || [])[1];\n          return { value: normalizedResponse };\n        } catch (error) {\n          if (error.status !== 409)\n            throw error;\n          url = \"\";\n          return {\n            value: {\n              status: 200,\n              headers: {},\n              data: []\n            }\n          };\n        }\n      }\n    })\n  };\n}\nexport {\n  iterator\n};\n", "import { iterator } from \"./iterator.js\";\nfunction paginate(octokit, route, parameters, mapFn) {\n  if (typeof parameters === \"function\") {\n    mapFn = parameters;\n    parameters = void 0;\n  }\n  return gather(\n    octokit,\n    [],\n    iterator(octokit, route, parameters)[Symbol.asyncIterator](),\n    mapFn\n  );\n}\nfunction gather(octokit, results, iterator2, mapFn) {\n  return iterator2.next().then((result) => {\n    if (result.done) {\n      return results;\n    }\n    let earlyExit = false;\n    function done() {\n      earlyExit = true;\n    }\n    results = results.concat(\n      mapFn ? mapFn(result.value, done) : result.value.data\n    );\n    if (earlyExit) {\n      return results;\n    }\n    return gather(octokit, results, iterator2, mapFn);\n  });\n}\nexport {\n  paginate\n};\n", "import { paginate } from \"./paginate.js\";\nimport { iterator } from \"./iterator.js\";\nconst composePaginateRest = Object.assign(paginate, {\n  iterator\n});\nexport {\n  composePaginateRest\n};\n", "const paginatingEndpoints = [\n  \"GET /advisories\",\n  \"GET /app/hook/deliveries\",\n  \"GET /app/installation-requests\",\n  \"GET /app/installations\",\n  \"GET /assignments/{assignment_id}/accepted_assignments\",\n  \"GET /classrooms\",\n  \"GET /classrooms/{classroom_id}/assignments\",\n  \"GET /enterprises/{enterprise}/dependabot/alerts\",\n  \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n  \"GET /events\",\n  \"GET /gists\",\n  \"GET /gists/public\",\n  \"GET /gists/starred\",\n  \"GET /gists/{gist_id}/comments\",\n  \"GET /gists/{gist_id}/commits\",\n  \"GET /gists/{gist_id}/forks\",\n  \"GET /installation/repositories\",\n  \"GET /issues\",\n  \"GET /licenses\",\n  \"GET /marketplace_listing/plans\",\n  \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n  \"GET /marketplace_listing/stubbed/plans\",\n  \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n  \"GET /networks/{owner}/{repo}/events\",\n  \"GET /notifications\",\n  \"GET /organizations\",\n  \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n  \"GET /orgs/{org}/actions/permissions/repositories\",\n  \"GET /orgs/{org}/actions/runners\",\n  \"GET /orgs/{org}/actions/secrets\",\n  \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n  \"GET /orgs/{org}/actions/variables\",\n  \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n  \"GET /orgs/{org}/blocks\",\n  \"GET /orgs/{org}/code-scanning/alerts\",\n  \"GET /orgs/{org}/codespaces\",\n  \"GET /orgs/{org}/codespaces/secrets\",\n  \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n  \"GET /orgs/{org}/copilot/billing/seats\",\n  \"GET /orgs/{org}/dependabot/alerts\",\n  \"GET /orgs/{org}/dependabot/secrets\",\n  \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n  \"GET /orgs/{org}/events\",\n  \"GET /orgs/{org}/failed_invitations\",\n  \"GET /orgs/{org}/hooks\",\n  \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n  \"GET /orgs/{org}/installations\",\n  \"GET /orgs/{org}/invitations\",\n  \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n  \"GET /orgs/{org}/issues\",\n  \"GET /orgs/{org}/members\",\n  \"GET /orgs/{org}/members/{username}/codespaces\",\n  \"GET /orgs/{org}/migrations\",\n  \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n  \"GET /orgs/{org}/outside_collaborators\",\n  \"GET /orgs/{org}/packages\",\n  \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n  \"GET /orgs/{org}/personal-access-token-requests\",\n  \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n  \"GET /orgs/{org}/personal-access-tokens\",\n  \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n  \"GET /orgs/{org}/projects\",\n  \"GET /orgs/{org}/properties/values\",\n  \"GET /orgs/{org}/public_members\",\n  \"GET /orgs/{org}/repos\",\n  \"GET /orgs/{org}/rulesets\",\n  \"GET /orgs/{org}/rulesets/rule-suites\",\n  \"GET /orgs/{org}/secret-scanning/alerts\",\n  \"GET /orgs/{org}/security-advisories\",\n  \"GET /orgs/{org}/teams\",\n  \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n  \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n  \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n  \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n  \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n  \"GET /orgs/{org}/teams/{team_slug}/members\",\n  \"GET /orgs/{org}/teams/{team_slug}/projects\",\n  \"GET /orgs/{org}/teams/{team_slug}/repos\",\n  \"GET /orgs/{org}/teams/{team_slug}/teams\",\n  \"GET /projects/columns/{column_id}/cards\",\n  \"GET /projects/{project_id}/collaborators\",\n  \"GET /projects/{project_id}/columns\",\n  \"GET /repos/{owner}/{repo}/actions/artifacts\",\n  \"GET /repos/{owner}/{repo}/actions/caches\",\n  \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n  \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n  \"GET /repos/{owner}/{repo}/actions/runners\",\n  \"GET /repos/{owner}/{repo}/actions/runs\",\n  \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n  \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n  \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n  \"GET /repos/{owner}/{repo}/actions/secrets\",\n  \"GET /repos/{owner}/{repo}/actions/variables\",\n  \"GET /repos/{owner}/{repo}/actions/workflows\",\n  \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n  \"GET /repos/{owner}/{repo}/activity\",\n  \"GET /repos/{owner}/{repo}/assignees\",\n  \"GET /repos/{owner}/{repo}/branches\",\n  \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n  \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n  \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n  \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n  \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n  \"GET /repos/{owner}/{repo}/codespaces\",\n  \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n  \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n  \"GET /repos/{owner}/{repo}/collaborators\",\n  \"GET /repos/{owner}/{repo}/comments\",\n  \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n  \"GET /repos/{owner}/{repo}/commits\",\n  \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n  \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n  \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n  \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n  \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n  \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n  \"GET /repos/{owner}/{repo}/contributors\",\n  \"GET /repos/{owner}/{repo}/dependabot/alerts\",\n  \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n  \"GET /repos/{owner}/{repo}/deployments\",\n  \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n  \"GET /repos/{owner}/{repo}/environments\",\n  \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n  \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n  \"GET /repos/{owner}/{repo}/events\",\n  \"GET /repos/{owner}/{repo}/forks\",\n  \"GET /repos/{owner}/{repo}/hooks\",\n  \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n  \"GET /repos/{owner}/{repo}/invitations\",\n  \"GET /repos/{owner}/{repo}/issues\",\n  \"GET /repos/{owner}/{repo}/issues/comments\",\n  \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n  \"GET /repos/{owner}/{repo}/issues/events\",\n  \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n  \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n  \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n  \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n  \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n  \"GET /repos/{owner}/{repo}/keys\",\n  \"GET /repos/{owner}/{repo}/labels\",\n  \"GET /repos/{owner}/{repo}/milestones\",\n  \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n  \"GET /repos/{owner}/{repo}/notifications\",\n  \"GET /repos/{owner}/{repo}/pages/builds\",\n  \"GET /repos/{owner}/{repo}/projects\",\n  \"GET /repos/{owner}/{repo}/pulls\",\n  \"GET /repos/{owner}/{repo}/pulls/comments\",\n  \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n  \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n  \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n  \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n  \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n  \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n  \"GET /repos/{owner}/{repo}/releases\",\n  \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n  \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n  \"GET /repos/{owner}/{repo}/rules/branches/{branch}\",\n  \"GET /repos/{owner}/{repo}/rulesets\",\n  \"GET /repos/{owner}/{repo}/rulesets/rule-suites\",\n  \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n  \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n  \"GET /repos/{owner}/{repo}/security-advisories\",\n  \"GET /repos/{owner}/{repo}/stargazers\",\n  \"GET /repos/{owner}/{repo}/subscribers\",\n  \"GET /repos/{owner}/{repo}/tags\",\n  \"GET /repos/{owner}/{repo}/teams\",\n  \"GET /repos/{owner}/{repo}/topics\",\n  \"GET /repositories\",\n  \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n  \"GET /repositories/{repository_id}/environments/{environment_name}/variables\",\n  \"GET /search/code\",\n  \"GET /search/commits\",\n  \"GET /search/issues\",\n  \"GET /search/labels\",\n  \"GET /search/repositories\",\n  \"GET /search/topics\",\n  \"GET /search/users\",\n  \"GET /teams/{team_id}/discussions\",\n  \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n  \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n  \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n  \"GET /teams/{team_id}/invitations\",\n  \"GET /teams/{team_id}/members\",\n  \"GET /teams/{team_id}/projects\",\n  \"GET /teams/{team_id}/repos\",\n  \"GET /teams/{team_id}/teams\",\n  \"GET /user/blocks\",\n  \"GET /user/codespaces\",\n  \"GET /user/codespaces/secrets\",\n  \"GET /user/emails\",\n  \"GET /user/followers\",\n  \"GET /user/following\",\n  \"GET /user/gpg_keys\",\n  \"GET /user/installations\",\n  \"GET /user/installations/{installation_id}/repositories\",\n  \"GET /user/issues\",\n  \"GET /user/keys\",\n  \"GET /user/marketplace_purchases\",\n  \"GET /user/marketplace_purchases/stubbed\",\n  \"GET /user/memberships/orgs\",\n  \"GET /user/migrations\",\n  \"GET /user/migrations/{migration_id}/repositories\",\n  \"GET /user/orgs\",\n  \"GET /user/packages\",\n  \"GET /user/packages/{package_type}/{package_name}/versions\",\n  \"GET /user/public_emails\",\n  \"GET /user/repos\",\n  \"GET /user/repository_invitations\",\n  \"GET /user/social_accounts\",\n  \"GET /user/ssh_signing_keys\",\n  \"GET /user/starred\",\n  \"GET /user/subscriptions\",\n  \"GET /user/teams\",\n  \"GET /users\",\n  \"GET /users/{username}/events\",\n  \"GET /users/{username}/events/orgs/{org}\",\n  \"GET /users/{username}/events/public\",\n  \"GET /users/{username}/followers\",\n  \"GET /users/{username}/following\",\n  \"GET /users/{username}/gists\",\n  \"GET /users/{username}/gpg_keys\",\n  \"GET /users/{username}/keys\",\n  \"GET /users/{username}/orgs\",\n  \"GET /users/{username}/packages\",\n  \"GET /users/{username}/projects\",\n  \"GET /users/{username}/received_events\",\n  \"GET /users/{username}/received_events/public\",\n  \"GET /users/{username}/repos\",\n  \"GET /users/{username}/social_accounts\",\n  \"GET /users/{username}/ssh_signing_keys\",\n  \"GET /users/{username}/starred\",\n  \"GET /users/{username}/subscriptions\"\n];\nexport {\n  paginatingEndpoints\n};\n", "import {\n  paginatingEndpoints\n} from \"./generated/paginating-endpoints.js\";\nimport { paginatingEndpoints as paginatingEndpoints2 } from \"./generated/paginating-endpoints.js\";\nfunction isPaginatingEndpoint(arg) {\n  if (typeof arg === \"string\") {\n    return paginatingEndpoints.includes(arg);\n  } else {\n    return false;\n  }\n}\nexport {\n  isPaginatingEndpoint,\n  paginatingEndpoints2 as paginatingEndpoints\n};\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAM,UAAU;;;ACAhB,SAAS,+BAA+B,UAAU;AAChD,MAAI,CAAC,SAAS,MAAM;AAClB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,CAAC;AAAA,IACT;AAAA,EACF;AACA,QAAM,6BAA6B,iBAAiB,SAAS,QAAQ,EAAE,SAAS,SAAS;AACzF,MAAI,CAAC;AACH,WAAO;AACT,QAAM,oBAAoB,SAAS,KAAK;AACxC,QAAM,sBAAsB,SAAS,KAAK;AAC1C,QAAM,aAAa,SAAS,KAAK;AACjC,SAAO,SAAS,KAAK;AACrB,SAAO,SAAS,KAAK;AACrB,SAAO,SAAS,KAAK;AACrB,QAAM,eAAe,OAAO,KAAK,SAAS,IAAI,EAAE,CAAC;AACjD,QAAM,OAAO,SAAS,KAAK,YAAY;AACvC,WAAS,OAAO;AAChB,MAAI,OAAO,sBAAsB,aAAa;AAC5C,aAAS,KAAK,qBAAqB;AAAA,EACrC;AACA,MAAI,OAAO,wBAAwB,aAAa;AAC9C,aAAS,KAAK,uBAAuB;AAAA,EACvC;AACA,WAAS,KAAK,cAAc;AAC5B,SAAO;AACT;;;AC1BA,SAAS,SAAS,SAAS,OAAO,YAAY;AAC5C,QAAM,UAAU,OAAO,UAAU,aAAa,MAAM,SAAS,UAAU,IAAI,QAAQ,QAAQ,SAAS,OAAO,UAAU;AACrH,QAAM,gBAAgB,OAAO,UAAU,aAAa,QAAQ,QAAQ;AACpE,QAAM,SAAS,QAAQ;AACvB,QAAM,UAAU,QAAQ;AACxB,MAAI,MAAM,QAAQ;AAClB,SAAO;AAAA,IACL,CAAC,OAAO,aAAa,GAAG,OAAO;AAAA,MAC7B,MAAM,OAAO;AACX,YAAI,CAAC;AACH,iBAAO,EAAE,MAAM,KAAK;AACtB,YAAI;AACF,gBAAM,WAAW,MAAM,cAAc,EAAE,QAAQ,KAAK,QAAQ,CAAC;AAC7D,gBAAM,qBAAqB,+BAA+B,QAAQ;AAClE,kBAAQ,mBAAmB,QAAQ,QAAQ,IAAI;AAAA,YAC7C;AAAA,UACF,KAAK,CAAC,GAAG,CAAC;AACV,iBAAO,EAAE,OAAO,mBAAmB;AAAA,QACrC,SAAS,OAAO;AACd,cAAI,MAAM,WAAW;AACnB,kBAAM;AACR,gBAAM;AACN,iBAAO;AAAA,YACL,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,SAAS,CAAC;AAAA,cACV,MAAM,CAAC;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACjCA,SAAS,SAAS,SAAS,OAAO,YAAY,OAAO;AACnD,MAAI,OAAO,eAAe,YAAY;AACpC,YAAQ;AACR,iBAAa;AAAA,EACf;AACA,SAAO;AAAA,IACL;AAAA,IACA,CAAC;AAAA,IACD,SAAS,SAAS,OAAO,UAAU,EAAE,OAAO,aAAa,EAAE;AAAA,IAC3D;AAAA,EACF;AACF;AACA,SAAS,OAAO,SAAS,SAAS,WAAW,OAAO;AAClD,SAAO,UAAU,KAAK,EAAE,KAAK,CAAC,WAAW;AACvC,QAAI,OAAO,MAAM;AACf,aAAO;AAAA,IACT;AACA,QAAI,YAAY;AAChB,aAAS,OAAO;AACd,kBAAY;AAAA,IACd;AACA,cAAU,QAAQ;AAAA,MAChB,QAAQ,MAAM,OAAO,OAAO,IAAI,IAAI,OAAO,MAAM;AAAA,IACnD;AACA,QAAI,WAAW;AACb,aAAO;AAAA,IACT;AACA,WAAO,OAAO,SAAS,SAAS,WAAW,KAAK;AAAA,EAClD,CAAC;AACH;;;AC5BA,IAAM,sBAAsB,OAAO,OAAO,UAAU;AAAA,EAClD;AACF,CAAC;;;ACJD,IAAM,sBAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACrOA,SAAS,qBAAqB,KAAK;AACjC,MAAI,OAAO,QAAQ,UAAU;AAC3B,WAAO,oBAAoB,SAAS,GAAG;AAAA,EACzC,OAAO;AACL,WAAO;AAAA,EACT;AACF;;;APFA,SAAS,aAAa,SAAS;AAC7B,SAAO;AAAA,IACL,UAAU,OAAO,OAAO,SAAS,KAAK,MAAM,OAAO,GAAG;AAAA,MACpD,UAAU,SAAS,KAAK,MAAM,OAAO;AAAA,IACvC,CAAC;AAAA,EACH;AACF;AACA,aAAa,UAAU;",
-  "names": []
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js
deleted file mode 100644
index f3a6537..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import { paginate } from "./paginate.js";
-import { iterator } from "./iterator.js";
-const composePaginateRest = Object.assign(paginate, {
-  iterator
-});
-export {
-  composePaginateRest
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js
deleted file mode 100644
index 8ad20fb..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js
+++ /dev/null
@@ -1,237 +0,0 @@
-const paginatingEndpoints = [
-  "GET /advisories",
-  "GET /app/hook/deliveries",
-  "GET /app/installation-requests",
-  "GET /app/installations",
-  "GET /assignments/{assignment_id}/accepted_assignments",
-  "GET /classrooms",
-  "GET /classrooms/{classroom_id}/assignments",
-  "GET /enterprises/{enterprise}/dependabot/alerts",
-  "GET /enterprises/{enterprise}/secret-scanning/alerts",
-  "GET /events",
-  "GET /gists",
-  "GET /gists/public",
-  "GET /gists/starred",
-  "GET /gists/{gist_id}/comments",
-  "GET /gists/{gist_id}/commits",
-  "GET /gists/{gist_id}/forks",
-  "GET /installation/repositories",
-  "GET /issues",
-  "GET /licenses",
-  "GET /marketplace_listing/plans",
-  "GET /marketplace_listing/plans/{plan_id}/accounts",
-  "GET /marketplace_listing/stubbed/plans",
-  "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts",
-  "GET /networks/{owner}/{repo}/events",
-  "GET /notifications",
-  "GET /organizations",
-  "GET /orgs/{org}/actions/cache/usage-by-repository",
-  "GET /orgs/{org}/actions/permissions/repositories",
-  "GET /orgs/{org}/actions/runners",
-  "GET /orgs/{org}/actions/secrets",
-  "GET /orgs/{org}/actions/secrets/{secret_name}/repositories",
-  "GET /orgs/{org}/actions/variables",
-  "GET /orgs/{org}/actions/variables/{name}/repositories",
-  "GET /orgs/{org}/blocks",
-  "GET /orgs/{org}/code-scanning/alerts",
-  "GET /orgs/{org}/codespaces",
-  "GET /orgs/{org}/codespaces/secrets",
-  "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories",
-  "GET /orgs/{org}/copilot/billing/seats",
-  "GET /orgs/{org}/dependabot/alerts",
-  "GET /orgs/{org}/dependabot/secrets",
-  "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories",
-  "GET /orgs/{org}/events",
-  "GET /orgs/{org}/failed_invitations",
-  "GET /orgs/{org}/hooks",
-  "GET /orgs/{org}/hooks/{hook_id}/deliveries",
-  "GET /orgs/{org}/installations",
-  "GET /orgs/{org}/invitations",
-  "GET /orgs/{org}/invitations/{invitation_id}/teams",
-  "GET /orgs/{org}/issues",
-  "GET /orgs/{org}/members",
-  "GET /orgs/{org}/members/{username}/codespaces",
-  "GET /orgs/{org}/migrations",
-  "GET /orgs/{org}/migrations/{migration_id}/repositories",
-  "GET /orgs/{org}/outside_collaborators",
-  "GET /orgs/{org}/packages",
-  "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
-  "GET /orgs/{org}/personal-access-token-requests",
-  "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories",
-  "GET /orgs/{org}/personal-access-tokens",
-  "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories",
-  "GET /orgs/{org}/projects",
-  "GET /orgs/{org}/properties/values",
-  "GET /orgs/{org}/public_members",
-  "GET /orgs/{org}/repos",
-  "GET /orgs/{org}/rulesets",
-  "GET /orgs/{org}/rulesets/rule-suites",
-  "GET /orgs/{org}/secret-scanning/alerts",
-  "GET /orgs/{org}/security-advisories",
-  "GET /orgs/{org}/teams",
-  "GET /orgs/{org}/teams/{team_slug}/discussions",
-  "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments",
-  "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions",
-  "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions",
-  "GET /orgs/{org}/teams/{team_slug}/invitations",
-  "GET /orgs/{org}/teams/{team_slug}/members",
-  "GET /orgs/{org}/teams/{team_slug}/projects",
-  "GET /orgs/{org}/teams/{team_slug}/repos",
-  "GET /orgs/{org}/teams/{team_slug}/teams",
-  "GET /projects/columns/{column_id}/cards",
-  "GET /projects/{project_id}/collaborators",
-  "GET /projects/{project_id}/columns",
-  "GET /repos/{owner}/{repo}/actions/artifacts",
-  "GET /repos/{owner}/{repo}/actions/caches",
-  "GET /repos/{owner}/{repo}/actions/organization-secrets",
-  "GET /repos/{owner}/{repo}/actions/organization-variables",
-  "GET /repos/{owner}/{repo}/actions/runners",
-  "GET /repos/{owner}/{repo}/actions/runs",
-  "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts",
-  "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs",
-  "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs",
-  "GET /repos/{owner}/{repo}/actions/secrets",
-  "GET /repos/{owner}/{repo}/actions/variables",
-  "GET /repos/{owner}/{repo}/actions/workflows",
-  "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs",
-  "GET /repos/{owner}/{repo}/activity",
-  "GET /repos/{owner}/{repo}/assignees",
-  "GET /repos/{owner}/{repo}/branches",
-  "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations",
-  "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs",
-  "GET /repos/{owner}/{repo}/code-scanning/alerts",
-  "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
-  "GET /repos/{owner}/{repo}/code-scanning/analyses",
-  "GET /repos/{owner}/{repo}/codespaces",
-  "GET /repos/{owner}/{repo}/codespaces/devcontainers",
-  "GET /repos/{owner}/{repo}/codespaces/secrets",
-  "GET /repos/{owner}/{repo}/collaborators",
-  "GET /repos/{owner}/{repo}/comments",
-  "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions",
-  "GET /repos/{owner}/{repo}/commits",
-  "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments",
-  "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls",
-  "GET /repos/{owner}/{repo}/commits/{ref}/check-runs",
-  "GET /repos/{owner}/{repo}/commits/{ref}/check-suites",
-  "GET /repos/{owner}/{repo}/commits/{ref}/status",
-  "GET /repos/{owner}/{repo}/commits/{ref}/statuses",
-  "GET /repos/{owner}/{repo}/contributors",
-  "GET /repos/{owner}/{repo}/dependabot/alerts",
-  "GET /repos/{owner}/{repo}/dependabot/secrets",
-  "GET /repos/{owner}/{repo}/deployments",
-  "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses",
-  "GET /repos/{owner}/{repo}/environments",
-  "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies",
-  "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps",
-  "GET /repos/{owner}/{repo}/events",
-  "GET /repos/{owner}/{repo}/forks",
-  "GET /repos/{owner}/{repo}/hooks",
-  "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries",
-  "GET /repos/{owner}/{repo}/invitations",
-  "GET /repos/{owner}/{repo}/issues",
-  "GET /repos/{owner}/{repo}/issues/comments",
-  "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions",
-  "GET /repos/{owner}/{repo}/issues/events",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/comments",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/events",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/labels",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline",
-  "GET /repos/{owner}/{repo}/keys",
-  "GET /repos/{owner}/{repo}/labels",
-  "GET /repos/{owner}/{repo}/milestones",
-  "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels",
-  "GET /repos/{owner}/{repo}/notifications",
-  "GET /repos/{owner}/{repo}/pages/builds",
-  "GET /repos/{owner}/{repo}/projects",
-  "GET /repos/{owner}/{repo}/pulls",
-  "GET /repos/{owner}/{repo}/pulls/comments",
-  "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/files",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments",
-  "GET /repos/{owner}/{repo}/releases",
-  "GET /repos/{owner}/{repo}/releases/{release_id}/assets",
-  "GET /repos/{owner}/{repo}/releases/{release_id}/reactions",
-  "GET /repos/{owner}/{repo}/rules/branches/{branch}",
-  "GET /repos/{owner}/{repo}/rulesets",
-  "GET /repos/{owner}/{repo}/rulesets/rule-suites",
-  "GET /repos/{owner}/{repo}/secret-scanning/alerts",
-  "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations",
-  "GET /repos/{owner}/{repo}/security-advisories",
-  "GET /repos/{owner}/{repo}/stargazers",
-  "GET /repos/{owner}/{repo}/subscribers",
-  "GET /repos/{owner}/{repo}/tags",
-  "GET /repos/{owner}/{repo}/teams",
-  "GET /repos/{owner}/{repo}/topics",
-  "GET /repositories",
-  "GET /repositories/{repository_id}/environments/{environment_name}/secrets",
-  "GET /repositories/{repository_id}/environments/{environment_name}/variables",
-  "GET /search/code",
-  "GET /search/commits",
-  "GET /search/issues",
-  "GET /search/labels",
-  "GET /search/repositories",
-  "GET /search/topics",
-  "GET /search/users",
-  "GET /teams/{team_id}/discussions",
-  "GET /teams/{team_id}/discussions/{discussion_number}/comments",
-  "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions",
-  "GET /teams/{team_id}/discussions/{discussion_number}/reactions",
-  "GET /teams/{team_id}/invitations",
-  "GET /teams/{team_id}/members",
-  "GET /teams/{team_id}/projects",
-  "GET /teams/{team_id}/repos",
-  "GET /teams/{team_id}/teams",
-  "GET /user/blocks",
-  "GET /user/codespaces",
-  "GET /user/codespaces/secrets",
-  "GET /user/emails",
-  "GET /user/followers",
-  "GET /user/following",
-  "GET /user/gpg_keys",
-  "GET /user/installations",
-  "GET /user/installations/{installation_id}/repositories",
-  "GET /user/issues",
-  "GET /user/keys",
-  "GET /user/marketplace_purchases",
-  "GET /user/marketplace_purchases/stubbed",
-  "GET /user/memberships/orgs",
-  "GET /user/migrations",
-  "GET /user/migrations/{migration_id}/repositories",
-  "GET /user/orgs",
-  "GET /user/packages",
-  "GET /user/packages/{package_type}/{package_name}/versions",
-  "GET /user/public_emails",
-  "GET /user/repos",
-  "GET /user/repository_invitations",
-  "GET /user/social_accounts",
-  "GET /user/ssh_signing_keys",
-  "GET /user/starred",
-  "GET /user/subscriptions",
-  "GET /user/teams",
-  "GET /users",
-  "GET /users/{username}/events",
-  "GET /users/{username}/events/orgs/{org}",
-  "GET /users/{username}/events/public",
-  "GET /users/{username}/followers",
-  "GET /users/{username}/following",
-  "GET /users/{username}/gists",
-  "GET /users/{username}/gpg_keys",
-  "GET /users/{username}/keys",
-  "GET /users/{username}/orgs",
-  "GET /users/{username}/packages",
-  "GET /users/{username}/projects",
-  "GET /users/{username}/received_events",
-  "GET /users/{username}/received_events/public",
-  "GET /users/{username}/repos",
-  "GET /users/{username}/social_accounts",
-  "GET /users/{username}/ssh_signing_keys",
-  "GET /users/{username}/starred",
-  "GET /users/{username}/subscriptions"
-];
-export {
-  paginatingEndpoints
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js
deleted file mode 100644
index 02a5b10..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import { VERSION } from "./version.js";
-import { paginate } from "./paginate.js";
-import { iterator } from "./iterator.js";
-import { composePaginateRest } from "./compose-paginate.js";
-import {
-  isPaginatingEndpoint,
-  paginatingEndpoints
-} from "./paginating-endpoints.js";
-function paginateRest(octokit) {
-  return {
-    paginate: Object.assign(paginate.bind(null, octokit), {
-      iterator: iterator.bind(null, octokit)
-    })
-  };
-}
-paginateRest.VERSION = VERSION;
-export {
-  composePaginateRest,
-  isPaginatingEndpoint,
-  paginateRest,
-  paginatingEndpoints
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js
deleted file mode 100644
index 5206922..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import { normalizePaginatedListResponse } from "./normalize-paginated-list-response.js";
-function iterator(octokit, route, parameters) {
-  const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
-  const requestMethod = typeof route === "function" ? route : octokit.request;
-  const method = options.method;
-  const headers = options.headers;
-  let url = options.url;
-  return {
-    [Symbol.asyncIterator]: () => ({
-      async next() {
-        if (!url)
-          return { done: true };
-        try {
-          const response = await requestMethod({ method, url, headers });
-          const normalizedResponse = normalizePaginatedListResponse(response);
-          url = ((normalizedResponse.headers.link || "").match(
-            /<([^>]+)>;\s*rel="next"/
-          ) || [])[1];
-          return { value: normalizedResponse };
-        } catch (error) {
-          if (error.status !== 409)
-            throw error;
-          url = "";
-          return {
-            value: {
-              status: 200,
-              headers: {},
-              data: []
-            }
-          };
-        }
-      }
-    })
-  };
-}
-export {
-  iterator
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js
deleted file mode 100644
index c1dd744..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js
+++ /dev/null
@@ -1,31 +0,0 @@
-function normalizePaginatedListResponse(response) {
-  if (!response.data) {
-    return {
-      ...response,
-      data: []
-    };
-  }
-  const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
-  if (!responseNeedsNormalization)
-    return response;
-  const incompleteResults = response.data.incomplete_results;
-  const repositorySelection = response.data.repository_selection;
-  const totalCount = response.data.total_count;
-  delete response.data.incomplete_results;
-  delete response.data.repository_selection;
-  delete response.data.total_count;
-  const namespaceKey = Object.keys(response.data)[0];
-  const data = response.data[namespaceKey];
-  response.data = data;
-  if (typeof incompleteResults !== "undefined") {
-    response.data.incomplete_results = incompleteResults;
-  }
-  if (typeof repositorySelection !== "undefined") {
-    response.data.repository_selection = repositorySelection;
-  }
-  response.data.total_count = totalCount;
-  return response;
-}
-export {
-  normalizePaginatedListResponse
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js
deleted file mode 100644
index 0e888b9..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import { iterator } from "./iterator.js";
-function paginate(octokit, route, parameters, mapFn) {
-  if (typeof parameters === "function") {
-    mapFn = parameters;
-    parameters = void 0;
-  }
-  return gather(
-    octokit,
-    [],
-    iterator(octokit, route, parameters)[Symbol.asyncIterator](),
-    mapFn
-  );
-}
-function gather(octokit, results, iterator2, mapFn) {
-  return iterator2.next().then((result) => {
-    if (result.done) {
-      return results;
-    }
-    let earlyExit = false;
-    function done() {
-      earlyExit = true;
-    }
-    results = results.concat(
-      mapFn ? mapFn(result.value, done) : result.value.data
-    );
-    if (earlyExit) {
-      return results;
-    }
-    return gather(octokit, results, iterator2, mapFn);
-  });
-}
-export {
-  paginate
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js
deleted file mode 100644
index f9a110a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import {
-  paginatingEndpoints
-} from "./generated/paginating-endpoints.js";
-import { paginatingEndpoints as paginatingEndpoints2 } from "./generated/paginating-endpoints.js";
-function isPaginatingEndpoint(arg) {
-  if (typeof arg === "string") {
-    return paginatingEndpoints.includes(arg);
-  } else {
-    return false;
-  }
-}
-export {
-  isPaginatingEndpoint,
-  paginatingEndpoints2 as paginatingEndpoints
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js
deleted file mode 100644
index 5d231b3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js
+++ /dev/null
@@ -1,4 +0,0 @@
-const VERSION = "9.1.5";
-export {
-  VERSION
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts
deleted file mode 100644
index 484eadb..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import type { ComposePaginateInterface } from "./types.js";
-export declare const composePaginateRest: ComposePaginateInterface;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts
deleted file mode 100644
index 8859c3f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts
+++ /dev/null
@@ -1,1736 +0,0 @@
-import type { Endpoints } from "@octokit/types";
-export interface PaginatingEndpoints {
-    /**
-     * @see https://docs.github.com/rest/security-advisories/global-advisories#list-global-security-advisories
-     */
-    "GET /advisories": {
-        parameters: Endpoints["GET /advisories"]["parameters"];
-        response: Endpoints["GET /advisories"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/apps/webhooks#list-deliveries-for-an-app-webhook
-     */
-    "GET /app/hook/deliveries": {
-        parameters: Endpoints["GET /app/hook/deliveries"]["parameters"];
-        response: Endpoints["GET /app/hook/deliveries"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/apps/apps#list-installation-requests-for-the-authenticated-app
-     */
-    "GET /app/installation-requests": {
-        parameters: Endpoints["GET /app/installation-requests"]["parameters"];
-        response: Endpoints["GET /app/installation-requests"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/enterprise-server@3.9/rest/apps/apps#list-installations-for-the-authenticated-app
-     */
-    "GET /app/installations": {
-        parameters: Endpoints["GET /app/installations"]["parameters"];
-        response: Endpoints["GET /app/installations"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/classroom/classroom#list-accepted-assignments-for-an-assignment
-     */
-    "GET /assignments/{assignment_id}/accepted_assignments": {
-        parameters: Endpoints["GET /assignments/{assignment_id}/accepted_assignments"]["parameters"];
-        response: Endpoints["GET /assignments/{assignment_id}/accepted_assignments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/classroom/classroom#list-classrooms
-     */
-    "GET /classrooms": {
-        parameters: Endpoints["GET /classrooms"]["parameters"];
-        response: Endpoints["GET /classrooms"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/classroom/classroom#list-assignments-for-a-classroom
-     */
-    "GET /classrooms/{classroom_id}/assignments": {
-        parameters: Endpoints["GET /classrooms/{classroom_id}/assignments"]["parameters"];
-        response: Endpoints["GET /classrooms/{classroom_id}/assignments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-enterprise
-     */
-    "GET /enterprises/{enterprise}/dependabot/alerts": {
-        parameters: Endpoints["GET /enterprises/{enterprise}/dependabot/alerts"]["parameters"];
-        response: Endpoints["GET /enterprises/{enterprise}/dependabot/alerts"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-an-enterprise
-     */
-    "GET /enterprises/{enterprise}/secret-scanning/alerts": {
-        parameters: Endpoints["GET /enterprises/{enterprise}/secret-scanning/alerts"]["parameters"];
-        response: Endpoints["GET /enterprises/{enterprise}/secret-scanning/alerts"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-public-events
-     */
-    "GET /events": {
-        parameters: Endpoints["GET /events"]["parameters"];
-        response: Endpoints["GET /events"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/gists/gists#list-gists-for-the-authenticated-user
-     */
-    "GET /gists": {
-        parameters: Endpoints["GET /gists"]["parameters"];
-        response: Endpoints["GET /gists"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/gists/gists#list-public-gists
-     */
-    "GET /gists/public": {
-        parameters: Endpoints["GET /gists/public"]["parameters"];
-        response: Endpoints["GET /gists/public"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/gists/gists#list-starred-gists
-     */
-    "GET /gists/starred": {
-        parameters: Endpoints["GET /gists/starred"]["parameters"];
-        response: Endpoints["GET /gists/starred"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/gists/comments#list-gist-comments
-     */
-    "GET /gists/{gist_id}/comments": {
-        parameters: Endpoints["GET /gists/{gist_id}/comments"]["parameters"];
-        response: Endpoints["GET /gists/{gist_id}/comments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/gists/gists#list-gist-commits
-     */
-    "GET /gists/{gist_id}/commits": {
-        parameters: Endpoints["GET /gists/{gist_id}/commits"]["parameters"];
-        response: Endpoints["GET /gists/{gist_id}/commits"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/gists/gists#list-gist-forks
-     */
-    "GET /gists/{gist_id}/forks": {
-        parameters: Endpoints["GET /gists/{gist_id}/forks"]["parameters"];
-        response: Endpoints["GET /gists/{gist_id}/forks"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/apps/installations#list-repositories-accessible-to-the-app-installation
-     */
-    "GET /installation/repositories": {
-        parameters: Endpoints["GET /installation/repositories"]["parameters"];
-        response: Endpoints["GET /installation/repositories"]["response"] & {
-            data: Endpoints["GET /installation/repositories"]["response"]["data"]["repositories"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/issues#list-issues-assigned-to-the-authenticated-user
-     */
-    "GET /issues": {
-        parameters: Endpoints["GET /issues"]["parameters"];
-        response: Endpoints["GET /issues"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/licenses/licenses#get-all-commonly-used-licenses
-     */
-    "GET /licenses": {
-        parameters: Endpoints["GET /licenses"]["parameters"];
-        response: Endpoints["GET /licenses"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#list-plans
-     */
-    "GET /marketplace_listing/plans": {
-        parameters: Endpoints["GET /marketplace_listing/plans"]["parameters"];
-        response: Endpoints["GET /marketplace_listing/plans"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#list-accounts-for-a-plan
-     */
-    "GET /marketplace_listing/plans/{plan_id}/accounts": {
-        parameters: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["parameters"];
-        response: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#list-plans-stubbed
-     */
-    "GET /marketplace_listing/stubbed/plans": {
-        parameters: Endpoints["GET /marketplace_listing/stubbed/plans"]["parameters"];
-        response: Endpoints["GET /marketplace_listing/stubbed/plans"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#list-accounts-for-a-plan-stubbed
-     */
-    "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts": {
-        parameters: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["parameters"];
-        response: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-public-events-for-a-network-of-repositories
-     */
-    "GET /networks/{owner}/{repo}/events": {
-        parameters: Endpoints["GET /networks/{owner}/{repo}/events"]["parameters"];
-        response: Endpoints["GET /networks/{owner}/{repo}/events"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user
-     */
-    "GET /notifications": {
-        parameters: Endpoints["GET /notifications"]["parameters"];
-        response: Endpoints["GET /notifications"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/orgs#list-organizations
-     */
-    "GET /organizations": {
-        parameters: Endpoints["GET /organizations"]["parameters"];
-        response: Endpoints["GET /organizations"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/cache#list-repositories-with-github-actions-cache-usage-for-an-organization
-     */
-    "GET /orgs/{org}/actions/cache/usage-by-repository": {
-        parameters: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["response"]["data"]["repository_cache_usages"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization
-     */
-    "GET /orgs/{org}/actions/permissions/repositories": {
-        parameters: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"]["data"]["repositories"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#list-self-hosted-runners-for-an-organization
-     */
-    "GET /orgs/{org}/actions/runners": {
-        parameters: Endpoints["GET /orgs/{org}/actions/runners"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/actions/runners"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/actions/runners"]["response"]["data"]["runners"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#list-organization-secrets
-     */
-    "GET /orgs/{org}/actions/secrets": {
-        parameters: Endpoints["GET /orgs/{org}/actions/secrets"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/actions/secrets"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/actions/secrets"]["response"]["data"]["secrets"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#list-selected-repositories-for-an-organization-secret
-     */
-    "GET /orgs/{org}/actions/secrets/{secret_name}/repositories": {
-        parameters: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"]["data"]["repositories"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/variables#list-organization-variables
-     */
-    "GET /orgs/{org}/actions/variables": {
-        parameters: Endpoints["GET /orgs/{org}/actions/variables"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/actions/variables"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/actions/variables"]["response"]["data"]["variables"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/variables#list-selected-repositories-for-an-organization-variable
-     */
-    "GET /orgs/{org}/actions/variables/{name}/repositories": {
-        parameters: Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["response"]["data"]["repositories"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/blocking#list-users-blocked-by-an-organization
-     */
-    "GET /orgs/{org}/blocks": {
-        parameters: Endpoints["GET /orgs/{org}/blocks"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/blocks"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-alerts-for-an-organization
-     */
-    "GET /orgs/{org}/code-scanning/alerts": {
-        parameters: Endpoints["GET /orgs/{org}/code-scanning/alerts"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/code-scanning/alerts"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/codespaces/organizations#list-codespaces-for-the-organization
-     */
-    "GET /orgs/{org}/codespaces": {
-        parameters: Endpoints["GET /orgs/{org}/codespaces"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/codespaces"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/codespaces"]["response"]["data"]["codespaces"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/codespaces/organization-secrets#list-organization-secrets
-     */
-    "GET /orgs/{org}/codespaces/secrets": {
-        parameters: Endpoints["GET /orgs/{org}/codespaces/secrets"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/codespaces/secrets"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/codespaces/secrets"]["response"]["data"]["secrets"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/codespaces/organization-secrets#list-selected-repositories-for-an-organization-secret
-     */
-    "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories": {
-        parameters: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["response"]["data"]["repositories"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/copilot/copilot-for-business#list-all-copilot-for-business-seat-assignments-for-an-organization
-     */
-    "GET /orgs/{org}/copilot/billing/seats": {
-        parameters: Endpoints["GET /orgs/{org}/copilot/billing/seats"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/copilot/billing/seats"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/copilot/billing/seats"]["response"]["data"]["seats"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-organization
-     */
-    "GET /orgs/{org}/dependabot/alerts": {
-        parameters: Endpoints["GET /orgs/{org}/dependabot/alerts"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/dependabot/alerts"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#list-organization-secrets
-     */
-    "GET /orgs/{org}/dependabot/secrets": {
-        parameters: Endpoints["GET /orgs/{org}/dependabot/secrets"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/dependabot/secrets"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/dependabot/secrets"]["response"]["data"]["secrets"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#list-selected-repositories-for-an-organization-secret
-     */
-    "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories": {
-        parameters: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"]["data"]["repositories"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-public-organization-events
-     */
-    "GET /orgs/{org}/events": {
-        parameters: Endpoints["GET /orgs/{org}/events"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/events"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/members#list-failed-organization-invitations
-     */
-    "GET /orgs/{org}/failed_invitations": {
-        parameters: Endpoints["GET /orgs/{org}/failed_invitations"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/failed_invitations"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#list-organization-webhooks
-     */
-    "GET /orgs/{org}/hooks": {
-        parameters: Endpoints["GET /orgs/{org}/hooks"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/hooks"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#list-deliveries-for-an-organization-webhook
-     */
-    "GET /orgs/{org}/hooks/{hook_id}/deliveries": {
-        parameters: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/orgs#list-app-installations-for-an-organization
-     */
-    "GET /orgs/{org}/installations": {
-        parameters: Endpoints["GET /orgs/{org}/installations"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/installations"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/installations"]["response"]["data"]["installations"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/members#list-pending-organization-invitations
-     */
-    "GET /orgs/{org}/invitations": {
-        parameters: Endpoints["GET /orgs/{org}/invitations"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/invitations"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/members#list-organization-invitation-teams
-     */
-    "GET /orgs/{org}/invitations/{invitation_id}/teams": {
-        parameters: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/issues#list-organization-issues-assigned-to-the-authenticated-user
-     */
-    "GET /orgs/{org}/issues": {
-        parameters: Endpoints["GET /orgs/{org}/issues"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/issues"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/members#list-organization-members
-     */
-    "GET /orgs/{org}/members": {
-        parameters: Endpoints["GET /orgs/{org}/members"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/members"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/codespaces/organizations#list-codespaces-for-a-user-in-organization
-     */
-    "GET /orgs/{org}/members/{username}/codespaces": {
-        parameters: Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["response"] & {
-            data: Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["response"]["data"]["codespaces"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/migrations/orgs#list-organization-migrations
-     */
-    "GET /orgs/{org}/migrations": {
-        parameters: Endpoints["GET /orgs/{org}/migrations"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/migrations"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/migrations/orgs#list-repositories-in-an-organization-migration
-     */
-    "GET /orgs/{org}/migrations/{migration_id}/repositories": {
-        parameters: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/outside-collaborators#list-outside-collaborators-for-an-organization
-     */
-    "GET /orgs/{org}/outside_collaborators": {
-        parameters: Endpoints["GET /orgs/{org}/outside_collaborators"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/outside_collaborators"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/packages/packages#list-packages-for-an-organization
-     */
-    "GET /orgs/{org}/packages": {
-        parameters: Endpoints["GET /orgs/{org}/packages"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/packages"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-an-organization
-     */
-    "GET /orgs/{org}/packages/{package_type}/{package_name}/versions": {
-        parameters: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-requests-to-access-organization-resources-with-fine-grained-personal-access-tokens
-     */
-    "GET /orgs/{org}/personal-access-token-requests": {
-        parameters: Endpoints["GET /orgs/{org}/personal-access-token-requests"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/personal-access-token-requests"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-repositories-requested-to-be-accessed-by-a-fine-grained-personal-access-token
-     */
-    "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories": {
-        parameters: Endpoints["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-fine-grained-personal-access-tokens-with-access-to-organization-resources
-     */
-    "GET /orgs/{org}/personal-access-tokens": {
-        parameters: Endpoints["GET /orgs/{org}/personal-access-tokens"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/personal-access-tokens"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-repositories-a-fine-grained-personal-access-token-has-access-to
-     */
-    "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories": {
-        parameters: Endpoints["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/projects/projects#list-organization-projects
-     */
-    "GET /orgs/{org}/projects": {
-        parameters: Endpoints["GET /orgs/{org}/projects"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/projects"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/custom-properties#list-custom-property-values-for-organization-repositories
-     */
-    "GET /orgs/{org}/properties/values": {
-        parameters: Endpoints["GET /orgs/{org}/properties/values"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/properties/values"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/members#list-public-organization-members
-     */
-    "GET /orgs/{org}/public_members": {
-        parameters: Endpoints["GET /orgs/{org}/public_members"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/public_members"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-organization-repositories
-     */
-    "GET /orgs/{org}/repos": {
-        parameters: Endpoints["GET /orgs/{org}/repos"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/repos"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/rules#get-all-organization-repository-rulesets
-     */
-    "GET /orgs/{org}/rulesets": {
-        parameters: Endpoints["GET /orgs/{org}/rulesets"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/rulesets"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/rule-suites#list-organization-rule-suites
-     */
-    "GET /orgs/{org}/rulesets/rule-suites": {
-        parameters: Endpoints["GET /orgs/{org}/rulesets/rule-suites"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/rulesets/rule-suites"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-an-organization
-     */
-    "GET /orgs/{org}/secret-scanning/alerts": {
-        parameters: Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/security-advisories/repository-advisories#list-repository-security-advisories-for-an-organization
-     */
-    "GET /orgs/{org}/security-advisories": {
-        parameters: Endpoints["GET /orgs/{org}/security-advisories"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/security-advisories"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-teams
-     */
-    "GET /orgs/{org}/teams": {
-        parameters: Endpoints["GET /orgs/{org}/teams"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/teams"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/discussions#list-discussions
-     */
-    "GET /orgs/{org}/teams/{team_slug}/discussions": {
-        parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments
-     */
-    "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": {
-        parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment
-     */
-    "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": {
-        parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion
-     */
-    "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": {
-        parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/members#list-pending-team-invitations
-     */
-    "GET /orgs/{org}/teams/{team_slug}/invitations": {
-        parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/members#list-team-members
-     */
-    "GET /orgs/{org}/teams/{team_slug}/members": {
-        parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-team-projects
-     */
-    "GET /orgs/{org}/teams/{team_slug}/projects": {
-        parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-team-repositories
-     */
-    "GET /orgs/{org}/teams/{team_slug}/repos": {
-        parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-child-teams
-     */
-    "GET /orgs/{org}/teams/{team_slug}/teams": {
-        parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["parameters"];
-        response: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/projects/cards#list-project-cards
-     */
-    "GET /projects/columns/{column_id}/cards": {
-        parameters: Endpoints["GET /projects/columns/{column_id}/cards"]["parameters"];
-        response: Endpoints["GET /projects/columns/{column_id}/cards"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/projects/collaborators#list-project-collaborators
-     */
-    "GET /projects/{project_id}/collaborators": {
-        parameters: Endpoints["GET /projects/{project_id}/collaborators"]["parameters"];
-        response: Endpoints["GET /projects/{project_id}/collaborators"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/projects/columns#list-project-columns
-     */
-    "GET /projects/{project_id}/columns": {
-        parameters: Endpoints["GET /projects/{project_id}/columns"]["parameters"];
-        response: Endpoints["GET /projects/{project_id}/columns"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/artifacts#list-artifacts-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/artifacts": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"]["data"]["artifacts"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/cache#list-github-actions-caches-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/caches": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["response"]["data"]["actions_caches"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#list-repository-organization-secrets
-     */
-    "GET /repos/{owner}/{repo}/actions/organization-secrets": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["response"]["data"]["secrets"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/variables#list-repository-organization-variables
-     */
-    "GET /repos/{owner}/{repo}/actions/organization-variables": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["response"]["data"]["variables"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#list-self-hosted-runners-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/runners": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"]["data"]["runners"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/runs": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"]["data"]["workflow_runs"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/artifacts#list-workflow-run-artifacts
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"]["data"]["artifacts"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run-attempt
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["response"]["data"]["jobs"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"]["data"]["jobs"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#list-repository-secrets
-     */
-    "GET /repos/{owner}/{repo}/actions/secrets": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"]["data"]["secrets"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/variables#list-repository-variables
-     */
-    "GET /repos/{owner}/{repo}/actions/variables": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["response"]["data"]["variables"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/workflows#list-repository-workflows
-     */
-    "GET /repos/{owner}/{repo}/actions/workflows": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"]["data"]["workflows"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-workflow
-     */
-    "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"]["data"]["workflow_runs"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repository-activities
-     */
-    "GET /repos/{owner}/{repo}/activity": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/activity"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/activity"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/assignees#list-assignees
-     */
-    "GET /repos/{owner}/{repo}/assignees": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/assignees"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/assignees"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/branches/branches#list-branches
-     */
-    "GET /repos/{owner}/{repo}/branches": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/branches"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/branches"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/checks/runs#list-check-run-annotations
-     */
-    "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/checks/runs#list-check-runs-in-a-check-suite
-     */
-    "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"]["data"]["check_runs"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-alerts-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/alerts": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#list-instances-of-a-code-scanning-alert
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-analyses-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/analyses": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#list-codespaces-in-a-repository-for-the-authenticated-user
-     */
-    "GET /repos/{owner}/{repo}/codespaces": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["response"]["data"]["codespaces"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#list-devcontainer-configurations-in-a-repository-for-the-authenticated-user
-     */
-    "GET /repos/{owner}/{repo}/codespaces/devcontainers": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["response"]["data"]["devcontainers"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/codespaces/repository-secrets#list-repository-secrets
-     */
-    "GET /repos/{owner}/{repo}/codespaces/secrets": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["response"]["data"]["secrets"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/collaborators/collaborators#list-repository-collaborators
-     */
-    "GET /repos/{owner}/{repo}/collaborators": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/commits/comments#list-commit-comments-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/comments": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/comments"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/comments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-commit-comment
-     */
-    "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/commits/commits#list-commits
-     */
-    "GET /repos/{owner}/{repo}/commits": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/commits"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/commits"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/commits/comments#list-commit-comments
-     */
-    "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/commits/commits#list-pull-requests-associated-with-a-commit
-     */
-    "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/checks/runs#list-check-runs-for-a-git-reference
-     */
-    "GET /repos/{owner}/{repo}/commits/{ref}/check-runs": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"]["data"]["check_runs"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/checks/suites#list-check-suites-for-a-git-reference
-     */
-    "GET /repos/{owner}/{repo}/commits/{ref}/check-suites": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"]["data"]["check_suites"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/commits/statuses#get-the-combined-status-for-a-specific-reference
-     */
-    "GET /repos/{owner}/{repo}/commits/{ref}/status": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["response"]["data"]["statuses"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/commits/statuses#list-commit-statuses-for-a-reference
-     */
-    "GET /repos/{owner}/{repo}/commits/{ref}/statuses": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repository-contributors
-     */
-    "GET /repos/{owner}/{repo}/contributors": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/contributors"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/contributors"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/dependabot/alerts": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#list-repository-secrets
-     */
-    "GET /repos/{owner}/{repo}/dependabot/secrets": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["response"]["data"]["secrets"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/deployments/deployments#list-deployments
-     */
-    "GET /repos/{owner}/{repo}/deployments": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/deployments"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/deployments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/deployments/statuses#list-deployment-statuses
-     */
-    "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/deployments/environments#list-environments
-     */
-    "GET /repos/{owner}/{repo}/environments": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/environments"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/environments"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/environments"]["response"]["data"]["environments"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/deployments/branch-policies#list-deployment-branch-policies
-     */
-    "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["response"]["data"]["branch_policies"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/deployments/protection-rules#list-custom-deployment-rule-integrations-available-for-an-environment
-     */
-    "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["response"]["data"]["available_custom_deployment_protection_rule_integrations"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-repository-events
-     */
-    "GET /repos/{owner}/{repo}/events": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/events"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/events"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/forks#list-forks
-     */
-    "GET /repos/{owner}/{repo}/forks": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/forks"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/forks"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#list-repository-webhooks
-     */
-    "GET /repos/{owner}/{repo}/hooks": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/hooks"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/hooks"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#list-deliveries-for-a-repository-webhook
-     */
-    "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/collaborators/invitations#list-repository-invitations
-     */
-    "GET /repos/{owner}/{repo}/invitations": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/invitations"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/invitations"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/issues#list-repository-issues
-     */
-    "GET /repos/{owner}/{repo}/issues": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/issues"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/issues"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/comments#list-issue-comments-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/issues/comments": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-an-issue-comment
-     */
-    "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/events#list-issue-events-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/issues/events": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/comments#list-issue-comments
-     */
-    "GET /repos/{owner}/{repo}/issues/{issue_number}/comments": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/events#list-issue-events
-     */
-    "GET /repos/{owner}/{repo}/issues/{issue_number}/events": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/labels#list-labels-for-an-issue
-     */
-    "GET /repos/{owner}/{repo}/issues/{issue_number}/labels": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-an-issue
-     */
-    "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/timeline#list-timeline-events-for-an-issue
-     */
-    "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/deploy-keys/deploy-keys#list-deploy-keys
-     */
-    "GET /repos/{owner}/{repo}/keys": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/keys"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/keys"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/labels#list-labels-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/labels": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/labels"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/labels"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/milestones#list-milestones
-     */
-    "GET /repos/{owner}/{repo}/milestones": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/milestones"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/milestones"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/labels#list-labels-for-issues-in-a-milestone
-     */
-    "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/notifications#list-repository-notifications-for-the-authenticated-user
-     */
-    "GET /repos/{owner}/{repo}/notifications": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/notifications"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/notifications"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/pages/pages#list-apiname-pages-builds
-     */
-    "GET /repos/{owner}/{repo}/pages/builds": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/projects/projects#list-repository-projects
-     */
-    "GET /repos/{owner}/{repo}/projects": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/projects"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/projects"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/pulls/pulls#list-pull-requests
-     */
-    "GET /repos/{owner}/{repo}/pulls": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/pulls"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/pulls"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/pulls/comments#list-review-comments-in-a-repository
-     */
-    "GET /repos/{owner}/{repo}/pulls/comments": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-pull-request-review-comment
-     */
-    "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/pulls/comments#list-review-comments-on-a-pull-request
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/pulls/pulls#list-commits-on-a-pull-request
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/pulls/pulls#list-pull-requests-files
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/files": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/pulls/reviews#list-comments-for-a-pull-request-review
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/releases/releases#list-releases
-     */
-    "GET /repos/{owner}/{repo}/releases": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/releases"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/releases"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/releases/assets#list-release-assets
-     */
-    "GET /repos/{owner}/{repo}/releases/{release_id}/assets": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-release
-     */
-    "GET /repos/{owner}/{repo}/releases/{release_id}/reactions": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/rules#get-rules-for-a-branch
-     */
-    "GET /repos/{owner}/{repo}/rules/branches/{branch}": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/rules/branches/{branch}"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/rules/branches/{branch}"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/rules#get-all-repository-rulesets
-     */
-    "GET /repos/{owner}/{repo}/rulesets": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/rulesets"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/rulesets"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/rule-suites#list-repository-rule-suites
-     */
-    "GET /repos/{owner}/{repo}/rulesets/rule-suites": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/secret-scanning/alerts": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-locations-for-a-secret-scanning-alert
-     */
-    "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/security-advisories/repository-advisories#list-repository-security-advisories
-     */
-    "GET /repos/{owner}/{repo}/security-advisories": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/security-advisories"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/security-advisories"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/starring#list-stargazers
-     */
-    "GET /repos/{owner}/{repo}/stargazers": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/watching#list-watchers
-     */
-    "GET /repos/{owner}/{repo}/subscribers": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repository-tags
-     */
-    "GET /repos/{owner}/{repo}/tags": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/tags"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/tags"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repository-teams
-     */
-    "GET /repos/{owner}/{repo}/teams": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/teams"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/teams"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/repos#get-all-repository-topics
-     */
-    "GET /repos/{owner}/{repo}/topics": {
-        parameters: Endpoints["GET /repos/{owner}/{repo}/topics"]["parameters"];
-        response: Endpoints["GET /repos/{owner}/{repo}/topics"]["response"] & {
-            data: Endpoints["GET /repos/{owner}/{repo}/topics"]["response"]["data"]["names"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-public-repositories
-     */
-    "GET /repositories": {
-        parameters: Endpoints["GET /repositories"]["parameters"];
-        response: Endpoints["GET /repositories"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#list-environment-secrets
-     */
-    "GET /repositories/{repository_id}/environments/{environment_name}/secrets": {
-        parameters: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets"]["parameters"];
-        response: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets"]["response"] & {
-            data: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets"]["response"]["data"]["secrets"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/actions/variables#list-environment-variables
-     */
-    "GET /repositories/{repository_id}/environments/{environment_name}/variables": {
-        parameters: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/variables"]["parameters"];
-        response: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/variables"]["response"] & {
-            data: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/variables"]["response"]["data"]["variables"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/search/search#search-code
-     */
-    "GET /search/code": {
-        parameters: Endpoints["GET /search/code"]["parameters"];
-        response: Endpoints["GET /search/code"]["response"] & {
-            data: Endpoints["GET /search/code"]["response"]["data"]["items"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/search/search#search-commits
-     */
-    "GET /search/commits": {
-        parameters: Endpoints["GET /search/commits"]["parameters"];
-        response: Endpoints["GET /search/commits"]["response"] & {
-            data: Endpoints["GET /search/commits"]["response"]["data"]["items"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/search/search#search-issues-and-pull-requests
-     */
-    "GET /search/issues": {
-        parameters: Endpoints["GET /search/issues"]["parameters"];
-        response: Endpoints["GET /search/issues"]["response"] & {
-            data: Endpoints["GET /search/issues"]["response"]["data"]["items"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/search/search#search-labels
-     */
-    "GET /search/labels": {
-        parameters: Endpoints["GET /search/labels"]["parameters"];
-        response: Endpoints["GET /search/labels"]["response"] & {
-            data: Endpoints["GET /search/labels"]["response"]["data"]["items"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/search/search#search-repositories
-     */
-    "GET /search/repositories": {
-        parameters: Endpoints["GET /search/repositories"]["parameters"];
-        response: Endpoints["GET /search/repositories"]["response"] & {
-            data: Endpoints["GET /search/repositories"]["response"]["data"]["items"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/search/search#search-topics
-     */
-    "GET /search/topics": {
-        parameters: Endpoints["GET /search/topics"]["parameters"];
-        response: Endpoints["GET /search/topics"]["response"] & {
-            data: Endpoints["GET /search/topics"]["response"]["data"]["items"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/search/search#search-users
-     */
-    "GET /search/users": {
-        parameters: Endpoints["GET /search/users"]["parameters"];
-        response: Endpoints["GET /search/users"]["response"] & {
-            data: Endpoints["GET /search/users"]["response"]["data"]["items"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/discussions#list-discussions-legacy
-     */
-    "GET /teams/{team_id}/discussions": {
-        parameters: Endpoints["GET /teams/{team_id}/discussions"]["parameters"];
-        response: Endpoints["GET /teams/{team_id}/discussions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments-legacy
-     */
-    "GET /teams/{team_id}/discussions/{discussion_number}/comments": {
-        parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments"]["parameters"];
-        response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment-legacy
-     */
-    "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": {
-        parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"];
-        response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-legacy
-     */
-    "GET /teams/{team_id}/discussions/{discussion_number}/reactions": {
-        parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/reactions"]["parameters"];
-        response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/reactions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/members#list-pending-team-invitations-legacy
-     */
-    "GET /teams/{team_id}/invitations": {
-        parameters: Endpoints["GET /teams/{team_id}/invitations"]["parameters"];
-        response: Endpoints["GET /teams/{team_id}/invitations"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/members#list-team-members-legacy
-     */
-    "GET /teams/{team_id}/members": {
-        parameters: Endpoints["GET /teams/{team_id}/members"]["parameters"];
-        response: Endpoints["GET /teams/{team_id}/members"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-team-projects-legacy
-     */
-    "GET /teams/{team_id}/projects": {
-        parameters: Endpoints["GET /teams/{team_id}/projects"]["parameters"];
-        response: Endpoints["GET /teams/{team_id}/projects"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-team-repositories-legacy
-     */
-    "GET /teams/{team_id}/repos": {
-        parameters: Endpoints["GET /teams/{team_id}/repos"]["parameters"];
-        response: Endpoints["GET /teams/{team_id}/repos"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-child-teams-legacy
-     */
-    "GET /teams/{team_id}/teams": {
-        parameters: Endpoints["GET /teams/{team_id}/teams"]["parameters"];
-        response: Endpoints["GET /teams/{team_id}/teams"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/blocking#list-users-blocked-by-the-authenticated-user
-     */
-    "GET /user/blocks": {
-        parameters: Endpoints["GET /user/blocks"]["parameters"];
-        response: Endpoints["GET /user/blocks"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#list-codespaces-for-the-authenticated-user
-     */
-    "GET /user/codespaces": {
-        parameters: Endpoints["GET /user/codespaces"]["parameters"];
-        response: Endpoints["GET /user/codespaces"]["response"] & {
-            data: Endpoints["GET /user/codespaces"]["response"]["data"]["codespaces"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/codespaces/secrets#list-secrets-for-the-authenticated-user
-     */
-    "GET /user/codespaces/secrets": {
-        parameters: Endpoints["GET /user/codespaces/secrets"]["parameters"];
-        response: Endpoints["GET /user/codespaces/secrets"]["response"] & {
-            data: Endpoints["GET /user/codespaces/secrets"]["response"]["data"]["secrets"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/users/emails#list-email-addresses-for-the-authenticated-user
-     */
-    "GET /user/emails": {
-        parameters: Endpoints["GET /user/emails"]["parameters"];
-        response: Endpoints["GET /user/emails"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/followers#list-followers-of-the-authenticated-user
-     */
-    "GET /user/followers": {
-        parameters: Endpoints["GET /user/followers"]["parameters"];
-        response: Endpoints["GET /user/followers"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/followers#list-the-people-the-authenticated-user-follows
-     */
-    "GET /user/following": {
-        parameters: Endpoints["GET /user/following"]["parameters"];
-        response: Endpoints["GET /user/following"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/gpg-keys#list-gpg-keys-for-the-authenticated-user
-     */
-    "GET /user/gpg_keys": {
-        parameters: Endpoints["GET /user/gpg_keys"]["parameters"];
-        response: Endpoints["GET /user/gpg_keys"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/apps/installations#list-app-installations-accessible-to-the-user-access-token
-     */
-    "GET /user/installations": {
-        parameters: Endpoints["GET /user/installations"]["parameters"];
-        response: Endpoints["GET /user/installations"]["response"] & {
-            data: Endpoints["GET /user/installations"]["response"]["data"]["installations"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/apps/installations#list-repositories-accessible-to-the-user-access-token
-     */
-    "GET /user/installations/{installation_id}/repositories": {
-        parameters: Endpoints["GET /user/installations/{installation_id}/repositories"]["parameters"];
-        response: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"] & {
-            data: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"]["data"]["repositories"];
-        };
-    };
-    /**
-     * @see https://docs.github.com/rest/issues/issues#list-user-account-issues-assigned-to-the-authenticated-user
-     */
-    "GET /user/issues": {
-        parameters: Endpoints["GET /user/issues"]["parameters"];
-        response: Endpoints["GET /user/issues"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/keys#list-public-ssh-keys-for-the-authenticated-user
-     */
-    "GET /user/keys": {
-        parameters: Endpoints["GET /user/keys"]["parameters"];
-        response: Endpoints["GET /user/keys"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#list-subscriptions-for-the-authenticated-user
-     */
-    "GET /user/marketplace_purchases": {
-        parameters: Endpoints["GET /user/marketplace_purchases"]["parameters"];
-        response: Endpoints["GET /user/marketplace_purchases"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#list-subscriptions-for-the-authenticated-user-stubbed
-     */
-    "GET /user/marketplace_purchases/stubbed": {
-        parameters: Endpoints["GET /user/marketplace_purchases/stubbed"]["parameters"];
-        response: Endpoints["GET /user/marketplace_purchases/stubbed"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/members#list-organization-memberships-for-the-authenticated-user
-     */
-    "GET /user/memberships/orgs": {
-        parameters: Endpoints["GET /user/memberships/orgs"]["parameters"];
-        response: Endpoints["GET /user/memberships/orgs"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/migrations/users#list-user-migrations
-     */
-    "GET /user/migrations": {
-        parameters: Endpoints["GET /user/migrations"]["parameters"];
-        response: Endpoints["GET /user/migrations"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/migrations/users#list-repositories-for-a-user-migration
-     */
-    "GET /user/migrations/{migration_id}/repositories": {
-        parameters: Endpoints["GET /user/migrations/{migration_id}/repositories"]["parameters"];
-        response: Endpoints["GET /user/migrations/{migration_id}/repositories"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/orgs#list-organizations-for-the-authenticated-user
-     */
-    "GET /user/orgs": {
-        parameters: Endpoints["GET /user/orgs"]["parameters"];
-        response: Endpoints["GET /user/orgs"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/packages/packages#list-packages-for-the-authenticated-users-namespace
-     */
-    "GET /user/packages": {
-        parameters: Endpoints["GET /user/packages"]["parameters"];
-        response: Endpoints["GET /user/packages"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-the-authenticated-user
-     */
-    "GET /user/packages/{package_type}/{package_name}/versions": {
-        parameters: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["parameters"];
-        response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/emails#list-public-email-addresses-for-the-authenticated-user
-     */
-    "GET /user/public_emails": {
-        parameters: Endpoints["GET /user/public_emails"]["parameters"];
-        response: Endpoints["GET /user/public_emails"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repositories-for-the-authenticated-user
-     */
-    "GET /user/repos": {
-        parameters: Endpoints["GET /user/repos"]["parameters"];
-        response: Endpoints["GET /user/repos"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/collaborators/invitations#list-repository-invitations-for-the-authenticated-user
-     */
-    "GET /user/repository_invitations": {
-        parameters: Endpoints["GET /user/repository_invitations"]["parameters"];
-        response: Endpoints["GET /user/repository_invitations"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/social-accounts#list-social-accounts-for-the-authenticated-user
-     */
-    "GET /user/social_accounts": {
-        parameters: Endpoints["GET /user/social_accounts"]["parameters"];
-        response: Endpoints["GET /user/social_accounts"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/ssh-signing-keys#list-ssh-signing-keys-for-the-authenticated-user
-     */
-    "GET /user/ssh_signing_keys": {
-        parameters: Endpoints["GET /user/ssh_signing_keys"]["parameters"];
-        response: Endpoints["GET /user/ssh_signing_keys"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/starring#list-repositories-starred-by-the-authenticated-user
-     */
-    "GET /user/starred": {
-        parameters: Endpoints["GET /user/starred"]["parameters"];
-        response: Endpoints["GET /user/starred"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/watching#list-repositories-watched-by-the-authenticated-user
-     */
-    "GET /user/subscriptions": {
-        parameters: Endpoints["GET /user/subscriptions"]["parameters"];
-        response: Endpoints["GET /user/subscriptions"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-teams-for-the-authenticated-user
-     */
-    "GET /user/teams": {
-        parameters: Endpoints["GET /user/teams"]["parameters"];
-        response: Endpoints["GET /user/teams"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/users#list-users
-     */
-    "GET /users": {
-        parameters: Endpoints["GET /users"]["parameters"];
-        response: Endpoints["GET /users"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-events-for-the-authenticated-user
-     */
-    "GET /users/{username}/events": {
-        parameters: Endpoints["GET /users/{username}/events"]["parameters"];
-        response: Endpoints["GET /users/{username}/events"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-organization-events-for-the-authenticated-user
-     */
-    "GET /users/{username}/events/orgs/{org}": {
-        parameters: Endpoints["GET /users/{username}/events/orgs/{org}"]["parameters"];
-        response: Endpoints["GET /users/{username}/events/orgs/{org}"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-public-events-for-a-user
-     */
-    "GET /users/{username}/events/public": {
-        parameters: Endpoints["GET /users/{username}/events/public"]["parameters"];
-        response: Endpoints["GET /users/{username}/events/public"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/followers#list-followers-of-a-user
-     */
-    "GET /users/{username}/followers": {
-        parameters: Endpoints["GET /users/{username}/followers"]["parameters"];
-        response: Endpoints["GET /users/{username}/followers"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/followers#list-the-people-a-user-follows
-     */
-    "GET /users/{username}/following": {
-        parameters: Endpoints["GET /users/{username}/following"]["parameters"];
-        response: Endpoints["GET /users/{username}/following"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/gists/gists#list-gists-for-a-user
-     */
-    "GET /users/{username}/gists": {
-        parameters: Endpoints["GET /users/{username}/gists"]["parameters"];
-        response: Endpoints["GET /users/{username}/gists"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/gpg-keys#list-gpg-keys-for-a-user
-     */
-    "GET /users/{username}/gpg_keys": {
-        parameters: Endpoints["GET /users/{username}/gpg_keys"]["parameters"];
-        response: Endpoints["GET /users/{username}/gpg_keys"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/keys#list-public-keys-for-a-user
-     */
-    "GET /users/{username}/keys": {
-        parameters: Endpoints["GET /users/{username}/keys"]["parameters"];
-        response: Endpoints["GET /users/{username}/keys"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/orgs/orgs#list-organizations-for-a-user
-     */
-    "GET /users/{username}/orgs": {
-        parameters: Endpoints["GET /users/{username}/orgs"]["parameters"];
-        response: Endpoints["GET /users/{username}/orgs"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/packages/packages#list-packages-for-a-user
-     */
-    "GET /users/{username}/packages": {
-        parameters: Endpoints["GET /users/{username}/packages"]["parameters"];
-        response: Endpoints["GET /users/{username}/packages"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/projects/projects#list-user-projects
-     */
-    "GET /users/{username}/projects": {
-        parameters: Endpoints["GET /users/{username}/projects"]["parameters"];
-        response: Endpoints["GET /users/{username}/projects"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-events-received-by-the-authenticated-user
-     */
-    "GET /users/{username}/received_events": {
-        parameters: Endpoints["GET /users/{username}/received_events"]["parameters"];
-        response: Endpoints["GET /users/{username}/received_events"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-public-events-received-by-a-user
-     */
-    "GET /users/{username}/received_events/public": {
-        parameters: Endpoints["GET /users/{username}/received_events/public"]["parameters"];
-        response: Endpoints["GET /users/{username}/received_events/public"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repositories-for-a-user
-     */
-    "GET /users/{username}/repos": {
-        parameters: Endpoints["GET /users/{username}/repos"]["parameters"];
-        response: Endpoints["GET /users/{username}/repos"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/social-accounts#list-social-accounts-for-a-user
-     */
-    "GET /users/{username}/social_accounts": {
-        parameters: Endpoints["GET /users/{username}/social_accounts"]["parameters"];
-        response: Endpoints["GET /users/{username}/social_accounts"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/users/ssh-signing-keys#list-ssh-signing-keys-for-a-user
-     */
-    "GET /users/{username}/ssh_signing_keys": {
-        parameters: Endpoints["GET /users/{username}/ssh_signing_keys"]["parameters"];
-        response: Endpoints["GET /users/{username}/ssh_signing_keys"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/starring#list-repositories-starred-by-a-user
-     */
-    "GET /users/{username}/starred": {
-        parameters: Endpoints["GET /users/{username}/starred"]["parameters"];
-        response: Endpoints["GET /users/{username}/starred"]["response"];
-    };
-    /**
-     * @see https://docs.github.com/rest/activity/watching#list-repositories-watched-by-a-user
-     */
-    "GET /users/{username}/subscriptions": {
-        parameters: Endpoints["GET /users/{username}/subscriptions"]["parameters"];
-        response: Endpoints["GET /users/{username}/subscriptions"]["response"];
-    };
-}
-export declare const paginatingEndpoints: (keyof PaginatingEndpoints)[];
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts
deleted file mode 100644
index 4a5c6a7..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import type { Octokit } from "@octokit/core";
-import type { PaginateInterface } from "./types.js";
-export type { PaginateInterface, PaginatingEndpoints } from "./types.js";
-export { composePaginateRest } from "./compose-paginate.js";
-export { isPaginatingEndpoint, paginatingEndpoints, } from "./paginating-endpoints.js";
-/**
- * @param octokit Octokit instance
- * @param options Options passed to Octokit constructor
- */
-export declare function paginateRest(octokit: Octokit): {
-    paginate: PaginateInterface;
-};
-export declare namespace paginateRest {
-    var VERSION: string;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts
deleted file mode 100644
index 70f2fbf..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import type { Octokit } from "@octokit/core";
-import type { RequestInterface, RequestParameters, Route } from "./types.js";
-export declare function iterator(octokit: Octokit, route: Route | RequestInterface, parameters?: RequestParameters): {
-    [Symbol.asyncIterator]: () => {
-        next(): Promise<{
-            done: boolean;
-            value?: undefined;
-        } | {
-            value: import("@octokit/types/dist-types/OctokitResponse.js").OctokitResponse<any, number>;
-            done?: undefined;
-        } | {
-            value: {
-                status: number;
-                headers: {};
-                data: never[];
-            };
-            done?: undefined;
-        }>;
-    };
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts
deleted file mode 100644
index 4b15bf0..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Some “list” response that can be paginated have a different response structure
- *
- * They have a `total_count` key in the response (search also has `incomplete_results`,
- * /installation/repositories also has `repository_selection`), as well as a key with
- * the list of the items which name varies from endpoint to endpoint.
- *
- * Octokit normalizes these responses so that paginated results are always returned following
- * the same structure. One challenge is that if the list response has only one page, no Link
- * header is provided, so this header alone is not sufficient to check wether a response is
- * paginated or not.
- *
- * We check if a "total_count" key is present in the response data, but also make sure that
- * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would
- * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref
- */
-import type { OctokitResponse } from "./types.js";
-export declare function normalizePaginatedListResponse(response: OctokitResponse<any>): OctokitResponse<any>;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts
deleted file mode 100644
index 7ccd3de..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import type { Octokit } from "@octokit/core";
-import type { MapFunction, PaginationResults, RequestParameters, Route, RequestInterface } from "./types";
-export declare function paginate(octokit: Octokit, route: Route | RequestInterface, parameters?: RequestParameters, mapFn?: MapFunction): Promise<PaginationResults>;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts
deleted file mode 100644
index 22cd65d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { type PaginatingEndpoints } from "./generated/paginating-endpoints.js";
-export { paginatingEndpoints } from "./generated/paginating-endpoints.js";
-export declare function isPaginatingEndpoint(arg: unknown): arg is keyof PaginatingEndpoints;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts
deleted file mode 100644
index 405a6bb..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts
+++ /dev/null
@@ -1,242 +0,0 @@
-import { Octokit } from "@octokit/core";
-import * as OctokitTypes from "@octokit/types";
-export type { EndpointOptions, RequestInterface, OctokitResponse, RequestParameters, Route, } from "@octokit/types";
-export type { PaginatingEndpoints } from "./generated/paginating-endpoints.js";
-import type { PaginatingEndpoints } from "./generated/paginating-endpoints.js";
-type KnownKeys<T> = Extract<{
-    [K in keyof T]: string extends K ? never : number extends K ? never : K;
-} extends {
-    [_ in keyof T]: infer U;
-} ? U : never, keyof T>;
-type KeysMatching<T, V> = {
-    [K in keyof T]: T[K] extends V ? K : never;
-}[keyof T];
-type KnownKeysMatching<T, V> = KeysMatching<Pick<T, KnownKeys<T>>, V>;
-type GetResultsType<T> = T extends {
-    data: any[];
-} ? T["data"] : T extends {
-    data: object;
-} ? T["data"][KnownKeysMatching<T["data"], any[]>] : never;
-type NormalizeResponse<T> = T & {
-    data: GetResultsType<T>;
-};
-type DataType<T> = "data" extends keyof T ? T["data"] : unknown;
-export interface MapFunction<T = OctokitTypes.OctokitResponse<PaginationResults<unknown>>, M = unknown[]> {
-    (response: T, done: () => void): M;
-}
-export type PaginationResults<T = unknown> = T[];
-export interface PaginateInterface {
-    /**
-     * Paginate a request using endpoint options and map each response to a custom array
-     *
-     * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     * @param {function} mapFn Optional method to map each response to a custom array
-     */
-    <T, M>(options: OctokitTypes.EndpointOptions, mapFn: MapFunction<OctokitTypes.OctokitResponse<PaginationResults<T>>, M[]>): Promise<PaginationResults<M>>;
-    /**
-     * Paginate a request using endpoint options
-     *
-     * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     */
-    <T>(options: OctokitTypes.EndpointOptions): Promise<PaginationResults<T>>;
-    /**
-     * Paginate a request using a known endpoint route string and map each response to a custom array
-     *
-     * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-     * @param {function} mapFn Optional method to map each response to a custom array
-     */
-    <R extends keyof PaginatingEndpoints, M extends unknown[]>(route: R, mapFn: MapFunction<PaginatingEndpoints[R]["response"], M>): Promise<M>;
-    /**
-     * Paginate a request using a known endpoint route string and parameters, and map each response to a custom array
-     *
-     * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-     * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     * @param {function} mapFn Optional method to map each response to a custom array
-     */
-    <R extends keyof PaginatingEndpoints, M extends unknown[]>(route: R, parameters: PaginatingEndpoints[R]["parameters"], mapFn: MapFunction<PaginatingEndpoints[R]["response"], M>): Promise<M>;
-    /**
-     * Paginate a request using an known endpoint route string
-     *
-     * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-     * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     */
-    <R extends keyof PaginatingEndpoints>(route: R, parameters?: PaginatingEndpoints[R]["parameters"]): Promise<DataType<PaginatingEndpoints[R]["response"]>>;
-    /**
-     * Paginate a request using an unknown endpoint route string
-     *
-     * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-     * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     */
-    <T, R extends OctokitTypes.Route = OctokitTypes.Route>(route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): Promise<T[]>;
-    /**
-     * Paginate a request using an endpoint method and a map function
-     *
-     * @param {string} request Request method (`octokit.request` or `@octokit/request`)
-     * @param {function} mapFn? Optional method to map each response to a custom array
-     */
-    <R extends OctokitTypes.RequestInterface, M extends unknown[]>(request: R, mapFn: MapFunction<NormalizeResponse<OctokitTypes.GetResponseTypeFromEndpointMethod<R>>, M>): Promise<M>;
-    /**
-     * Paginate a request using an endpoint method, parameters, and a map function
-     *
-     * @param {string} request Request method (`octokit.request` or `@octokit/request`)
-     * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     * @param {function} mapFn? Optional method to map each response to a custom array
-     */
-    <R extends OctokitTypes.RequestInterface, M extends unknown[]>(request: R, parameters: Parameters<R>[0], mapFn: MapFunction<NormalizeResponse<OctokitTypes.GetResponseTypeFromEndpointMethod<R>>, M>): Promise<M>;
-    /**
-     * Paginate a request using an endpoint method and parameters
-     *
-     * @param {string} request Request method (`octokit.request` or `@octokit/request`)
-     * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     */
-    <R extends OctokitTypes.RequestInterface>(request: R, parameters?: Parameters<R>[0]): Promise<NormalizeResponse<OctokitTypes.GetResponseTypeFromEndpointMethod<R>>["data"]>;
-    iterator: {
-        /**
-         * Get an async iterator to paginate a request using endpoint options
-         *
-         * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
-         * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-         */
-        <T>(options: OctokitTypes.EndpointOptions): AsyncIterableIterator<OctokitTypes.OctokitResponse<PaginationResults<T>>>;
-        /**
-         * Get an async iterator to paginate a request using a known endpoint route string and optional parameters
-         *
-         * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
-         * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-         * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-         */
-        <R extends keyof PaginatingEndpoints>(route: R, parameters?: PaginatingEndpoints[R]["parameters"]): AsyncIterableIterator<OctokitTypes.OctokitResponse<DataType<PaginatingEndpoints[R]["response"]>>>;
-        /**
-         * Get an async iterator to paginate a request using an unknown endpoint route string and optional parameters
-         *
-         * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
-         * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-         * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-         */
-        <T, R extends OctokitTypes.Route = OctokitTypes.Route>(route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): AsyncIterableIterator<OctokitTypes.OctokitResponse<PaginationResults<T>>>;
-        /**
-         * Get an async iterator to paginate a request using a request method and optional parameters
-         *
-         * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
-         * @param {string} request `@octokit/request` or `octokit.request` method
-         * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-         */
-        <R extends OctokitTypes.RequestInterface>(request: R, parameters?: Parameters<R>[0]): AsyncIterableIterator<NormalizeResponse<OctokitTypes.GetResponseTypeFromEndpointMethod<R>>>;
-    };
-}
-export interface ComposePaginateInterface {
-    /**
-     * Paginate a request using endpoint options and map each response to a custom array
-     *
-     * @param {object} octokit Octokit instance
-     * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     * @param {function} mapFn Optional method to map each response to a custom array
-     */
-    <T, M>(octokit: Octokit, options: OctokitTypes.EndpointOptions, mapFn: MapFunction<OctokitTypes.OctokitResponse<PaginationResults<T>>, M[]>): Promise<PaginationResults<M>>;
-    /**
-     * Paginate a request using endpoint options
-     *
-     * @param {object} octokit Octokit instance
-     * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     */
-    <T>(octokit: Octokit, options: OctokitTypes.EndpointOptions): Promise<PaginationResults<T>>;
-    /**
-     * Paginate a request using a known endpoint route string and map each response to a custom array
-     *
-     * @param {object} octokit Octokit instance
-     * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-     * @param {function} mapFn Optional method to map each response to a custom array
-     */
-    <R extends keyof PaginatingEndpoints, M extends unknown[]>(octokit: Octokit, route: R, mapFn: MapFunction<PaginatingEndpoints[R]["response"], M>): Promise<M>;
-    /**
-     * Paginate a request using a known endpoint route string and parameters, and map each response to a custom array
-     *
-     * @param {object} octokit Octokit instance
-     * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-     * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     * @param {function} mapFn Optional method to map each response to a custom array
-     */
-    <R extends keyof PaginatingEndpoints, M extends unknown[]>(octokit: Octokit, route: R, parameters: PaginatingEndpoints[R]["parameters"], mapFn: MapFunction<PaginatingEndpoints[R]["response"], M>): Promise<M>;
-    /**
-     * Paginate a request using an known endpoint route string
-     *
-     * @param {object} octokit Octokit instance
-     * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-     * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     */
-    <R extends keyof PaginatingEndpoints>(octokit: Octokit, route: R, parameters?: PaginatingEndpoints[R]["parameters"]): Promise<DataType<PaginatingEndpoints[R]["response"]>>;
-    /**
-     * Paginate a request using an unknown endpoint route string
-     *
-     * @param {object} octokit Octokit instance
-     * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-     * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     */
-    <T, R extends OctokitTypes.Route = OctokitTypes.Route>(octokit: Octokit, route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): Promise<T[]>;
-    /**
-     * Paginate a request using an endpoint method and a map function
-     *
-     * @param {object} octokit Octokit instance
-     * @param {string} request Request method (`octokit.request` or `@octokit/request`)
-     * @param {function} mapFn? Optional method to map each response to a custom array
-     */
-    <R extends OctokitTypes.RequestInterface, M extends unknown[]>(octokit: Octokit, request: R, mapFn: MapFunction<NormalizeResponse<OctokitTypes.GetResponseTypeFromEndpointMethod<R>>, M>): Promise<M>;
-    /**
-     * Paginate a request using an endpoint method, parameters, and a map function
-     *
-     * @param {object} octokit Octokit instance
-     * @param {string} request Request method (`octokit.request` or `@octokit/request`)
-     * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     * @param {function} mapFn? Optional method to map each response to a custom array
-     */
-    <R extends OctokitTypes.RequestInterface, M extends unknown[]>(octokit: Octokit, request: R, parameters: Parameters<R>[0], mapFn: MapFunction<NormalizeResponse<OctokitTypes.GetResponseTypeFromEndpointMethod<R>>, M>): Promise<M>;
-    /**
-     * Paginate a request using an endpoint method and parameters
-     *
-     * @param {object} octokit Octokit instance
-     * @param {string} request Request method (`octokit.request` or `@octokit/request`)
-     * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-     */
-    <R extends OctokitTypes.RequestInterface>(octokit: Octokit, request: R, parameters?: Parameters<R>[0]): Promise<NormalizeResponse<OctokitTypes.GetResponseTypeFromEndpointMethod<R>>["data"]>;
-    iterator: {
-        /**
-         * Get an async iterator to paginate a request using endpoint options
-         *
-         * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
-         *
-         * @param {object} octokit Octokit instance
-         * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-         */
-        <T>(octokit: Octokit, options: OctokitTypes.EndpointOptions): AsyncIterableIterator<OctokitTypes.OctokitResponse<PaginationResults<T>>>;
-        /**
-         * Get an async iterator to paginate a request using a known endpoint route string and optional parameters
-         *
-         * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
-         *
-         * @param {object} octokit Octokit instance
-         * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-         * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-         */
-        <R extends keyof PaginatingEndpoints>(octokit: Octokit, route: R, parameters?: PaginatingEndpoints[R]["parameters"]): AsyncIterableIterator<OctokitTypes.OctokitResponse<DataType<PaginatingEndpoints[R]["response"]>>>;
-        /**
-         * Get an async iterator to paginate a request using an unknown endpoint route string and optional parameters
-         *
-         * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
-         *
-         * @param {object} octokit Octokit instance
-         * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-         * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-         */
-        <T, R extends OctokitTypes.Route = OctokitTypes.Route>(octokit: Octokit, route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): AsyncIterableIterator<OctokitTypes.OctokitResponse<PaginationResults<T>>>;
-        /**
-         * Get an async iterator to paginate a request using a request method and optional parameters
-         *
-         * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
-         *
-         * @param {object} octokit Octokit instance
-         * @param {string} request `@octokit/request` or `octokit.request` method
-         * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
-         */
-        <R extends OctokitTypes.RequestInterface>(octokit: Octokit, request: R, parameters?: Parameters<R>[0]): AsyncIterableIterator<NormalizeResponse<OctokitTypes.GetResponseTypeFromEndpointMethod<R>>>;
-    };
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts
deleted file mode 100644
index dcf1709..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare const VERSION = "9.1.5";
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js
deleted file mode 100644
index 677e9c2..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js
+++ /dev/null
@@ -1,366 +0,0 @@
-// pkg/dist-src/version.js
-var VERSION = "9.1.5";
-
-// pkg/dist-src/normalize-paginated-list-response.js
-function normalizePaginatedListResponse(response) {
-  if (!response.data) {
-    return {
-      ...response,
-      data: []
-    };
-  }
-  const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
-  if (!responseNeedsNormalization)
-    return response;
-  const incompleteResults = response.data.incomplete_results;
-  const repositorySelection = response.data.repository_selection;
-  const totalCount = response.data.total_count;
-  delete response.data.incomplete_results;
-  delete response.data.repository_selection;
-  delete response.data.total_count;
-  const namespaceKey = Object.keys(response.data)[0];
-  const data = response.data[namespaceKey];
-  response.data = data;
-  if (typeof incompleteResults !== "undefined") {
-    response.data.incomplete_results = incompleteResults;
-  }
-  if (typeof repositorySelection !== "undefined") {
-    response.data.repository_selection = repositorySelection;
-  }
-  response.data.total_count = totalCount;
-  return response;
-}
-
-// pkg/dist-src/iterator.js
-function iterator(octokit, route, parameters) {
-  const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
-  const requestMethod = typeof route === "function" ? route : octokit.request;
-  const method = options.method;
-  const headers = options.headers;
-  let url = options.url;
-  return {
-    [Symbol.asyncIterator]: () => ({
-      async next() {
-        if (!url)
-          return { done: true };
-        try {
-          const response = await requestMethod({ method, url, headers });
-          const normalizedResponse = normalizePaginatedListResponse(response);
-          url = ((normalizedResponse.headers.link || "").match(
-            /<([^>]+)>;\s*rel="next"/
-          ) || [])[1];
-          return { value: normalizedResponse };
-        } catch (error) {
-          if (error.status !== 409)
-            throw error;
-          url = "";
-          return {
-            value: {
-              status: 200,
-              headers: {},
-              data: []
-            }
-          };
-        }
-      }
-    })
-  };
-}
-
-// pkg/dist-src/paginate.js
-function paginate(octokit, route, parameters, mapFn) {
-  if (typeof parameters === "function") {
-    mapFn = parameters;
-    parameters = void 0;
-  }
-  return gather(
-    octokit,
-    [],
-    iterator(octokit, route, parameters)[Symbol.asyncIterator](),
-    mapFn
-  );
-}
-function gather(octokit, results, iterator2, mapFn) {
-  return iterator2.next().then((result) => {
-    if (result.done) {
-      return results;
-    }
-    let earlyExit = false;
-    function done() {
-      earlyExit = true;
-    }
-    results = results.concat(
-      mapFn ? mapFn(result.value, done) : result.value.data
-    );
-    if (earlyExit) {
-      return results;
-    }
-    return gather(octokit, results, iterator2, mapFn);
-  });
-}
-
-// pkg/dist-src/compose-paginate.js
-var composePaginateRest = Object.assign(paginate, {
-  iterator
-});
-
-// pkg/dist-src/generated/paginating-endpoints.js
-var paginatingEndpoints = [
-  "GET /advisories",
-  "GET /app/hook/deliveries",
-  "GET /app/installation-requests",
-  "GET /app/installations",
-  "GET /assignments/{assignment_id}/accepted_assignments",
-  "GET /classrooms",
-  "GET /classrooms/{classroom_id}/assignments",
-  "GET /enterprises/{enterprise}/dependabot/alerts",
-  "GET /enterprises/{enterprise}/secret-scanning/alerts",
-  "GET /events",
-  "GET /gists",
-  "GET /gists/public",
-  "GET /gists/starred",
-  "GET /gists/{gist_id}/comments",
-  "GET /gists/{gist_id}/commits",
-  "GET /gists/{gist_id}/forks",
-  "GET /installation/repositories",
-  "GET /issues",
-  "GET /licenses",
-  "GET /marketplace_listing/plans",
-  "GET /marketplace_listing/plans/{plan_id}/accounts",
-  "GET /marketplace_listing/stubbed/plans",
-  "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts",
-  "GET /networks/{owner}/{repo}/events",
-  "GET /notifications",
-  "GET /organizations",
-  "GET /orgs/{org}/actions/cache/usage-by-repository",
-  "GET /orgs/{org}/actions/permissions/repositories",
-  "GET /orgs/{org}/actions/runners",
-  "GET /orgs/{org}/actions/secrets",
-  "GET /orgs/{org}/actions/secrets/{secret_name}/repositories",
-  "GET /orgs/{org}/actions/variables",
-  "GET /orgs/{org}/actions/variables/{name}/repositories",
-  "GET /orgs/{org}/blocks",
-  "GET /orgs/{org}/code-scanning/alerts",
-  "GET /orgs/{org}/codespaces",
-  "GET /orgs/{org}/codespaces/secrets",
-  "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories",
-  "GET /orgs/{org}/copilot/billing/seats",
-  "GET /orgs/{org}/dependabot/alerts",
-  "GET /orgs/{org}/dependabot/secrets",
-  "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories",
-  "GET /orgs/{org}/events",
-  "GET /orgs/{org}/failed_invitations",
-  "GET /orgs/{org}/hooks",
-  "GET /orgs/{org}/hooks/{hook_id}/deliveries",
-  "GET /orgs/{org}/installations",
-  "GET /orgs/{org}/invitations",
-  "GET /orgs/{org}/invitations/{invitation_id}/teams",
-  "GET /orgs/{org}/issues",
-  "GET /orgs/{org}/members",
-  "GET /orgs/{org}/members/{username}/codespaces",
-  "GET /orgs/{org}/migrations",
-  "GET /orgs/{org}/migrations/{migration_id}/repositories",
-  "GET /orgs/{org}/outside_collaborators",
-  "GET /orgs/{org}/packages",
-  "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
-  "GET /orgs/{org}/personal-access-token-requests",
-  "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories",
-  "GET /orgs/{org}/personal-access-tokens",
-  "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories",
-  "GET /orgs/{org}/projects",
-  "GET /orgs/{org}/properties/values",
-  "GET /orgs/{org}/public_members",
-  "GET /orgs/{org}/repos",
-  "GET /orgs/{org}/rulesets",
-  "GET /orgs/{org}/rulesets/rule-suites",
-  "GET /orgs/{org}/secret-scanning/alerts",
-  "GET /orgs/{org}/security-advisories",
-  "GET /orgs/{org}/teams",
-  "GET /orgs/{org}/teams/{team_slug}/discussions",
-  "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments",
-  "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions",
-  "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions",
-  "GET /orgs/{org}/teams/{team_slug}/invitations",
-  "GET /orgs/{org}/teams/{team_slug}/members",
-  "GET /orgs/{org}/teams/{team_slug}/projects",
-  "GET /orgs/{org}/teams/{team_slug}/repos",
-  "GET /orgs/{org}/teams/{team_slug}/teams",
-  "GET /projects/columns/{column_id}/cards",
-  "GET /projects/{project_id}/collaborators",
-  "GET /projects/{project_id}/columns",
-  "GET /repos/{owner}/{repo}/actions/artifacts",
-  "GET /repos/{owner}/{repo}/actions/caches",
-  "GET /repos/{owner}/{repo}/actions/organization-secrets",
-  "GET /repos/{owner}/{repo}/actions/organization-variables",
-  "GET /repos/{owner}/{repo}/actions/runners",
-  "GET /repos/{owner}/{repo}/actions/runs",
-  "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts",
-  "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs",
-  "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs",
-  "GET /repos/{owner}/{repo}/actions/secrets",
-  "GET /repos/{owner}/{repo}/actions/variables",
-  "GET /repos/{owner}/{repo}/actions/workflows",
-  "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs",
-  "GET /repos/{owner}/{repo}/activity",
-  "GET /repos/{owner}/{repo}/assignees",
-  "GET /repos/{owner}/{repo}/branches",
-  "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations",
-  "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs",
-  "GET /repos/{owner}/{repo}/code-scanning/alerts",
-  "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
-  "GET /repos/{owner}/{repo}/code-scanning/analyses",
-  "GET /repos/{owner}/{repo}/codespaces",
-  "GET /repos/{owner}/{repo}/codespaces/devcontainers",
-  "GET /repos/{owner}/{repo}/codespaces/secrets",
-  "GET /repos/{owner}/{repo}/collaborators",
-  "GET /repos/{owner}/{repo}/comments",
-  "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions",
-  "GET /repos/{owner}/{repo}/commits",
-  "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments",
-  "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls",
-  "GET /repos/{owner}/{repo}/commits/{ref}/check-runs",
-  "GET /repos/{owner}/{repo}/commits/{ref}/check-suites",
-  "GET /repos/{owner}/{repo}/commits/{ref}/status",
-  "GET /repos/{owner}/{repo}/commits/{ref}/statuses",
-  "GET /repos/{owner}/{repo}/contributors",
-  "GET /repos/{owner}/{repo}/dependabot/alerts",
-  "GET /repos/{owner}/{repo}/dependabot/secrets",
-  "GET /repos/{owner}/{repo}/deployments",
-  "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses",
-  "GET /repos/{owner}/{repo}/environments",
-  "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies",
-  "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps",
-  "GET /repos/{owner}/{repo}/events",
-  "GET /repos/{owner}/{repo}/forks",
-  "GET /repos/{owner}/{repo}/hooks",
-  "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries",
-  "GET /repos/{owner}/{repo}/invitations",
-  "GET /repos/{owner}/{repo}/issues",
-  "GET /repos/{owner}/{repo}/issues/comments",
-  "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions",
-  "GET /repos/{owner}/{repo}/issues/events",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/comments",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/events",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/labels",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions",
-  "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline",
-  "GET /repos/{owner}/{repo}/keys",
-  "GET /repos/{owner}/{repo}/labels",
-  "GET /repos/{owner}/{repo}/milestones",
-  "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels",
-  "GET /repos/{owner}/{repo}/notifications",
-  "GET /repos/{owner}/{repo}/pages/builds",
-  "GET /repos/{owner}/{repo}/projects",
-  "GET /repos/{owner}/{repo}/pulls",
-  "GET /repos/{owner}/{repo}/pulls/comments",
-  "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/files",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews",
-  "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments",
-  "GET /repos/{owner}/{repo}/releases",
-  "GET /repos/{owner}/{repo}/releases/{release_id}/assets",
-  "GET /repos/{owner}/{repo}/releases/{release_id}/reactions",
-  "GET /repos/{owner}/{repo}/rules/branches/{branch}",
-  "GET /repos/{owner}/{repo}/rulesets",
-  "GET /repos/{owner}/{repo}/rulesets/rule-suites",
-  "GET /repos/{owner}/{repo}/secret-scanning/alerts",
-  "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations",
-  "GET /repos/{owner}/{repo}/security-advisories",
-  "GET /repos/{owner}/{repo}/stargazers",
-  "GET /repos/{owner}/{repo}/subscribers",
-  "GET /repos/{owner}/{repo}/tags",
-  "GET /repos/{owner}/{repo}/teams",
-  "GET /repos/{owner}/{repo}/topics",
-  "GET /repositories",
-  "GET /repositories/{repository_id}/environments/{environment_name}/secrets",
-  "GET /repositories/{repository_id}/environments/{environment_name}/variables",
-  "GET /search/code",
-  "GET /search/commits",
-  "GET /search/issues",
-  "GET /search/labels",
-  "GET /search/repositories",
-  "GET /search/topics",
-  "GET /search/users",
-  "GET /teams/{team_id}/discussions",
-  "GET /teams/{team_id}/discussions/{discussion_number}/comments",
-  "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions",
-  "GET /teams/{team_id}/discussions/{discussion_number}/reactions",
-  "GET /teams/{team_id}/invitations",
-  "GET /teams/{team_id}/members",
-  "GET /teams/{team_id}/projects",
-  "GET /teams/{team_id}/repos",
-  "GET /teams/{team_id}/teams",
-  "GET /user/blocks",
-  "GET /user/codespaces",
-  "GET /user/codespaces/secrets",
-  "GET /user/emails",
-  "GET /user/followers",
-  "GET /user/following",
-  "GET /user/gpg_keys",
-  "GET /user/installations",
-  "GET /user/installations/{installation_id}/repositories",
-  "GET /user/issues",
-  "GET /user/keys",
-  "GET /user/marketplace_purchases",
-  "GET /user/marketplace_purchases/stubbed",
-  "GET /user/memberships/orgs",
-  "GET /user/migrations",
-  "GET /user/migrations/{migration_id}/repositories",
-  "GET /user/orgs",
-  "GET /user/packages",
-  "GET /user/packages/{package_type}/{package_name}/versions",
-  "GET /user/public_emails",
-  "GET /user/repos",
-  "GET /user/repository_invitations",
-  "GET /user/social_accounts",
-  "GET /user/ssh_signing_keys",
-  "GET /user/starred",
-  "GET /user/subscriptions",
-  "GET /user/teams",
-  "GET /users",
-  "GET /users/{username}/events",
-  "GET /users/{username}/events/orgs/{org}",
-  "GET /users/{username}/events/public",
-  "GET /users/{username}/followers",
-  "GET /users/{username}/following",
-  "GET /users/{username}/gists",
-  "GET /users/{username}/gpg_keys",
-  "GET /users/{username}/keys",
-  "GET /users/{username}/orgs",
-  "GET /users/{username}/packages",
-  "GET /users/{username}/projects",
-  "GET /users/{username}/received_events",
-  "GET /users/{username}/received_events/public",
-  "GET /users/{username}/repos",
-  "GET /users/{username}/social_accounts",
-  "GET /users/{username}/ssh_signing_keys",
-  "GET /users/{username}/starred",
-  "GET /users/{username}/subscriptions"
-];
-
-// pkg/dist-src/paginating-endpoints.js
-function isPaginatingEndpoint(arg) {
-  if (typeof arg === "string") {
-    return paginatingEndpoints.includes(arg);
-  } else {
-    return false;
-  }
-}
-
-// pkg/dist-src/index.js
-function paginateRest(octokit) {
-  return {
-    paginate: Object.assign(paginate.bind(null, octokit), {
-      iterator: iterator.bind(null, octokit)
-    })
-  };
-}
-paginateRest.VERSION = VERSION;
-export {
-  composePaginateRest,
-  isPaginatingEndpoint,
-  paginateRest,
-  paginatingEndpoints
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map
deleted file mode 100644
index f2b80a2..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/version.js", "../dist-src/normalize-paginated-list-response.js", "../dist-src/iterator.js", "../dist-src/paginate.js", "../dist-src/compose-paginate.js", "../dist-src/generated/paginating-endpoints.js", "../dist-src/paginating-endpoints.js", "../dist-src/index.js"],
-  "sourcesContent": ["const VERSION = \"9.1.5\";\nexport {\n  VERSION\n};\n", "function normalizePaginatedListResponse(response) {\n  if (!response.data) {\n    return {\n      ...response,\n      data: []\n    };\n  }\n  const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n  if (!responseNeedsNormalization)\n    return response;\n  const incompleteResults = response.data.incomplete_results;\n  const repositorySelection = response.data.repository_selection;\n  const totalCount = response.data.total_count;\n  delete response.data.incomplete_results;\n  delete response.data.repository_selection;\n  delete response.data.total_count;\n  const namespaceKey = Object.keys(response.data)[0];\n  const data = response.data[namespaceKey];\n  response.data = data;\n  if (typeof incompleteResults !== \"undefined\") {\n    response.data.incomplete_results = incompleteResults;\n  }\n  if (typeof repositorySelection !== \"undefined\") {\n    response.data.repository_selection = repositorySelection;\n  }\n  response.data.total_count = totalCount;\n  return response;\n}\nexport {\n  normalizePaginatedListResponse\n};\n", "import { normalizePaginatedListResponse } from \"./normalize-paginated-list-response.js\";\nfunction iterator(octokit, route, parameters) {\n  const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n  const requestMethod = typeof route === \"function\" ? route : octokit.request;\n  const method = options.method;\n  const headers = options.headers;\n  let url = options.url;\n  return {\n    [Symbol.asyncIterator]: () => ({\n      async next() {\n        if (!url)\n          return { done: true };\n        try {\n          const response = await requestMethod({ method, url, headers });\n          const normalizedResponse = normalizePaginatedListResponse(response);\n          url = ((normalizedResponse.headers.link || \"\").match(\n            /<([^>]+)>;\\s*rel=\"next\"/\n          ) || [])[1];\n          return { value: normalizedResponse };\n        } catch (error) {\n          if (error.status !== 409)\n            throw error;\n          url = \"\";\n          return {\n            value: {\n              status: 200,\n              headers: {},\n              data: []\n            }\n          };\n        }\n      }\n    })\n  };\n}\nexport {\n  iterator\n};\n", "import { iterator } from \"./iterator.js\";\nfunction paginate(octokit, route, parameters, mapFn) {\n  if (typeof parameters === \"function\") {\n    mapFn = parameters;\n    parameters = void 0;\n  }\n  return gather(\n    octokit,\n    [],\n    iterator(octokit, route, parameters)[Symbol.asyncIterator](),\n    mapFn\n  );\n}\nfunction gather(octokit, results, iterator2, mapFn) {\n  return iterator2.next().then((result) => {\n    if (result.done) {\n      return results;\n    }\n    let earlyExit = false;\n    function done() {\n      earlyExit = true;\n    }\n    results = results.concat(\n      mapFn ? mapFn(result.value, done) : result.value.data\n    );\n    if (earlyExit) {\n      return results;\n    }\n    return gather(octokit, results, iterator2, mapFn);\n  });\n}\nexport {\n  paginate\n};\n", "import { paginate } from \"./paginate.js\";\nimport { iterator } from \"./iterator.js\";\nconst composePaginateRest = Object.assign(paginate, {\n  iterator\n});\nexport {\n  composePaginateRest\n};\n", "const paginatingEndpoints = [\n  \"GET /advisories\",\n  \"GET /app/hook/deliveries\",\n  \"GET /app/installation-requests\",\n  \"GET /app/installations\",\n  \"GET /assignments/{assignment_id}/accepted_assignments\",\n  \"GET /classrooms\",\n  \"GET /classrooms/{classroom_id}/assignments\",\n  \"GET /enterprises/{enterprise}/dependabot/alerts\",\n  \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n  \"GET /events\",\n  \"GET /gists\",\n  \"GET /gists/public\",\n  \"GET /gists/starred\",\n  \"GET /gists/{gist_id}/comments\",\n  \"GET /gists/{gist_id}/commits\",\n  \"GET /gists/{gist_id}/forks\",\n  \"GET /installation/repositories\",\n  \"GET /issues\",\n  \"GET /licenses\",\n  \"GET /marketplace_listing/plans\",\n  \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n  \"GET /marketplace_listing/stubbed/plans\",\n  \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n  \"GET /networks/{owner}/{repo}/events\",\n  \"GET /notifications\",\n  \"GET /organizations\",\n  \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n  \"GET /orgs/{org}/actions/permissions/repositories\",\n  \"GET /orgs/{org}/actions/runners\",\n  \"GET /orgs/{org}/actions/secrets\",\n  \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n  \"GET /orgs/{org}/actions/variables\",\n  \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n  \"GET /orgs/{org}/blocks\",\n  \"GET /orgs/{org}/code-scanning/alerts\",\n  \"GET /orgs/{org}/codespaces\",\n  \"GET /orgs/{org}/codespaces/secrets\",\n  \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n  \"GET /orgs/{org}/copilot/billing/seats\",\n  \"GET /orgs/{org}/dependabot/alerts\",\n  \"GET /orgs/{org}/dependabot/secrets\",\n  \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n  \"GET /orgs/{org}/events\",\n  \"GET /orgs/{org}/failed_invitations\",\n  \"GET /orgs/{org}/hooks\",\n  \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n  \"GET /orgs/{org}/installations\",\n  \"GET /orgs/{org}/invitations\",\n  \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n  \"GET /orgs/{org}/issues\",\n  \"GET /orgs/{org}/members\",\n  \"GET /orgs/{org}/members/{username}/codespaces\",\n  \"GET /orgs/{org}/migrations\",\n  \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n  \"GET /orgs/{org}/outside_collaborators\",\n  \"GET /orgs/{org}/packages\",\n  \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n  \"GET /orgs/{org}/personal-access-token-requests\",\n  \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n  \"GET /orgs/{org}/personal-access-tokens\",\n  \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n  \"GET /orgs/{org}/projects\",\n  \"GET /orgs/{org}/properties/values\",\n  \"GET /orgs/{org}/public_members\",\n  \"GET /orgs/{org}/repos\",\n  \"GET /orgs/{org}/rulesets\",\n  \"GET /orgs/{org}/rulesets/rule-suites\",\n  \"GET /orgs/{org}/secret-scanning/alerts\",\n  \"GET /orgs/{org}/security-advisories\",\n  \"GET /orgs/{org}/teams\",\n  \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n  \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n  \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n  \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n  \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n  \"GET /orgs/{org}/teams/{team_slug}/members\",\n  \"GET /orgs/{org}/teams/{team_slug}/projects\",\n  \"GET /orgs/{org}/teams/{team_slug}/repos\",\n  \"GET /orgs/{org}/teams/{team_slug}/teams\",\n  \"GET /projects/columns/{column_id}/cards\",\n  \"GET /projects/{project_id}/collaborators\",\n  \"GET /projects/{project_id}/columns\",\n  \"GET /repos/{owner}/{repo}/actions/artifacts\",\n  \"GET /repos/{owner}/{repo}/actions/caches\",\n  \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n  \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n  \"GET /repos/{owner}/{repo}/actions/runners\",\n  \"GET /repos/{owner}/{repo}/actions/runs\",\n  \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n  \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n  \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n  \"GET /repos/{owner}/{repo}/actions/secrets\",\n  \"GET /repos/{owner}/{repo}/actions/variables\",\n  \"GET /repos/{owner}/{repo}/actions/workflows\",\n  \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n  \"GET /repos/{owner}/{repo}/activity\",\n  \"GET /repos/{owner}/{repo}/assignees\",\n  \"GET /repos/{owner}/{repo}/branches\",\n  \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n  \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n  \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n  \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n  \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n  \"GET /repos/{owner}/{repo}/codespaces\",\n  \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n  \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n  \"GET /repos/{owner}/{repo}/collaborators\",\n  \"GET /repos/{owner}/{repo}/comments\",\n  \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n  \"GET /repos/{owner}/{repo}/commits\",\n  \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n  \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n  \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n  \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n  \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n  \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n  \"GET /repos/{owner}/{repo}/contributors\",\n  \"GET /repos/{owner}/{repo}/dependabot/alerts\",\n  \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n  \"GET /repos/{owner}/{repo}/deployments\",\n  \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n  \"GET /repos/{owner}/{repo}/environments\",\n  \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n  \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n  \"GET /repos/{owner}/{repo}/events\",\n  \"GET /repos/{owner}/{repo}/forks\",\n  \"GET /repos/{owner}/{repo}/hooks\",\n  \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n  \"GET /repos/{owner}/{repo}/invitations\",\n  \"GET /repos/{owner}/{repo}/issues\",\n  \"GET /repos/{owner}/{repo}/issues/comments\",\n  \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n  \"GET /repos/{owner}/{repo}/issues/events\",\n  \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n  \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n  \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n  \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n  \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n  \"GET /repos/{owner}/{repo}/keys\",\n  \"GET /repos/{owner}/{repo}/labels\",\n  \"GET /repos/{owner}/{repo}/milestones\",\n  \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n  \"GET /repos/{owner}/{repo}/notifications\",\n  \"GET /repos/{owner}/{repo}/pages/builds\",\n  \"GET /repos/{owner}/{repo}/projects\",\n  \"GET /repos/{owner}/{repo}/pulls\",\n  \"GET /repos/{owner}/{repo}/pulls/comments\",\n  \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n  \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n  \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n  \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n  \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n  \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n  \"GET /repos/{owner}/{repo}/releases\",\n  \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n  \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n  \"GET /repos/{owner}/{repo}/rules/branches/{branch}\",\n  \"GET /repos/{owner}/{repo}/rulesets\",\n  \"GET /repos/{owner}/{repo}/rulesets/rule-suites\",\n  \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n  \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n  \"GET /repos/{owner}/{repo}/security-advisories\",\n  \"GET /repos/{owner}/{repo}/stargazers\",\n  \"GET /repos/{owner}/{repo}/subscribers\",\n  \"GET /repos/{owner}/{repo}/tags\",\n  \"GET /repos/{owner}/{repo}/teams\",\n  \"GET /repos/{owner}/{repo}/topics\",\n  \"GET /repositories\",\n  \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n  \"GET /repositories/{repository_id}/environments/{environment_name}/variables\",\n  \"GET /search/code\",\n  \"GET /search/commits\",\n  \"GET /search/issues\",\n  \"GET /search/labels\",\n  \"GET /search/repositories\",\n  \"GET /search/topics\",\n  \"GET /search/users\",\n  \"GET /teams/{team_id}/discussions\",\n  \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n  \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n  \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n  \"GET /teams/{team_id}/invitations\",\n  \"GET /teams/{team_id}/members\",\n  \"GET /teams/{team_id}/projects\",\n  \"GET /teams/{team_id}/repos\",\n  \"GET /teams/{team_id}/teams\",\n  \"GET /user/blocks\",\n  \"GET /user/codespaces\",\n  \"GET /user/codespaces/secrets\",\n  \"GET /user/emails\",\n  \"GET /user/followers\",\n  \"GET /user/following\",\n  \"GET /user/gpg_keys\",\n  \"GET /user/installations\",\n  \"GET /user/installations/{installation_id}/repositories\",\n  \"GET /user/issues\",\n  \"GET /user/keys\",\n  \"GET /user/marketplace_purchases\",\n  \"GET /user/marketplace_purchases/stubbed\",\n  \"GET /user/memberships/orgs\",\n  \"GET /user/migrations\",\n  \"GET /user/migrations/{migration_id}/repositories\",\n  \"GET /user/orgs\",\n  \"GET /user/packages\",\n  \"GET /user/packages/{package_type}/{package_name}/versions\",\n  \"GET /user/public_emails\",\n  \"GET /user/repos\",\n  \"GET /user/repository_invitations\",\n  \"GET /user/social_accounts\",\n  \"GET /user/ssh_signing_keys\",\n  \"GET /user/starred\",\n  \"GET /user/subscriptions\",\n  \"GET /user/teams\",\n  \"GET /users\",\n  \"GET /users/{username}/events\",\n  \"GET /users/{username}/events/orgs/{org}\",\n  \"GET /users/{username}/events/public\",\n  \"GET /users/{username}/followers\",\n  \"GET /users/{username}/following\",\n  \"GET /users/{username}/gists\",\n  \"GET /users/{username}/gpg_keys\",\n  \"GET /users/{username}/keys\",\n  \"GET /users/{username}/orgs\",\n  \"GET /users/{username}/packages\",\n  \"GET /users/{username}/projects\",\n  \"GET /users/{username}/received_events\",\n  \"GET /users/{username}/received_events/public\",\n  \"GET /users/{username}/repos\",\n  \"GET /users/{username}/social_accounts\",\n  \"GET /users/{username}/ssh_signing_keys\",\n  \"GET /users/{username}/starred\",\n  \"GET /users/{username}/subscriptions\"\n];\nexport {\n  paginatingEndpoints\n};\n", "import {\n  paginatingEndpoints\n} from \"./generated/paginating-endpoints.js\";\nimport { paginatingEndpoints as paginatingEndpoints2 } from \"./generated/paginating-endpoints.js\";\nfunction isPaginatingEndpoint(arg) {\n  if (typeof arg === \"string\") {\n    return paginatingEndpoints.includes(arg);\n  } else {\n    return false;\n  }\n}\nexport {\n  isPaginatingEndpoint,\n  paginatingEndpoints2 as paginatingEndpoints\n};\n", "import { VERSION } from \"./version.js\";\nimport { paginate } from \"./paginate.js\";\nimport { iterator } from \"./iterator.js\";\nimport { composePaginateRest } from \"./compose-paginate.js\";\nimport {\n  isPaginatingEndpoint,\n  paginatingEndpoints\n} from \"./paginating-endpoints.js\";\nfunction paginateRest(octokit) {\n  return {\n    paginate: Object.assign(paginate.bind(null, octokit), {\n      iterator: iterator.bind(null, octokit)\n    })\n  };\n}\npaginateRest.VERSION = VERSION;\nexport {\n  composePaginateRest,\n  isPaginatingEndpoint,\n  paginateRest,\n  paginatingEndpoints\n};\n"],
-  "mappings": ";AAAA,IAAM,UAAU;;;ACAhB,SAAS,+BAA+B,UAAU;AAChD,MAAI,CAAC,SAAS,MAAM;AAClB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,CAAC;AAAA,IACT;AAAA,EACF;AACA,QAAM,6BAA6B,iBAAiB,SAAS,QAAQ,EAAE,SAAS,SAAS;AACzF,MAAI,CAAC;AACH,WAAO;AACT,QAAM,oBAAoB,SAAS,KAAK;AACxC,QAAM,sBAAsB,SAAS,KAAK;AAC1C,QAAM,aAAa,SAAS,KAAK;AACjC,SAAO,SAAS,KAAK;AACrB,SAAO,SAAS,KAAK;AACrB,SAAO,SAAS,KAAK;AACrB,QAAM,eAAe,OAAO,KAAK,SAAS,IAAI,EAAE,CAAC;AACjD,QAAM,OAAO,SAAS,KAAK,YAAY;AACvC,WAAS,OAAO;AAChB,MAAI,OAAO,sBAAsB,aAAa;AAC5C,aAAS,KAAK,qBAAqB;AAAA,EACrC;AACA,MAAI,OAAO,wBAAwB,aAAa;AAC9C,aAAS,KAAK,uBAAuB;AAAA,EACvC;AACA,WAAS,KAAK,cAAc;AAC5B,SAAO;AACT;;;AC1BA,SAAS,SAAS,SAAS,OAAO,YAAY;AAC5C,QAAM,UAAU,OAAO,UAAU,aAAa,MAAM,SAAS,UAAU,IAAI,QAAQ,QAAQ,SAAS,OAAO,UAAU;AACrH,QAAM,gBAAgB,OAAO,UAAU,aAAa,QAAQ,QAAQ;AACpE,QAAM,SAAS,QAAQ;AACvB,QAAM,UAAU,QAAQ;AACxB,MAAI,MAAM,QAAQ;AAClB,SAAO;AAAA,IACL,CAAC,OAAO,aAAa,GAAG,OAAO;AAAA,MAC7B,MAAM,OAAO;AACX,YAAI,CAAC;AACH,iBAAO,EAAE,MAAM,KAAK;AACtB,YAAI;AACF,gBAAM,WAAW,MAAM,cAAc,EAAE,QAAQ,KAAK,QAAQ,CAAC;AAC7D,gBAAM,qBAAqB,+BAA+B,QAAQ;AAClE,kBAAQ,mBAAmB,QAAQ,QAAQ,IAAI;AAAA,YAC7C;AAAA,UACF,KAAK,CAAC,GAAG,CAAC;AACV,iBAAO,EAAE,OAAO,mBAAmB;AAAA,QACrC,SAAS,OAAO;AACd,cAAI,MAAM,WAAW;AACnB,kBAAM;AACR,gBAAM;AACN,iBAAO;AAAA,YACL,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,SAAS,CAAC;AAAA,cACV,MAAM,CAAC;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACjCA,SAAS,SAAS,SAAS,OAAO,YAAY,OAAO;AACnD,MAAI,OAAO,eAAe,YAAY;AACpC,YAAQ;AACR,iBAAa;AAAA,EACf;AACA,SAAO;AAAA,IACL;AAAA,IACA,CAAC;AAAA,IACD,SAAS,SAAS,OAAO,UAAU,EAAE,OAAO,aAAa,EAAE;AAAA,IAC3D;AAAA,EACF;AACF;AACA,SAAS,OAAO,SAAS,SAAS,WAAW,OAAO;AAClD,SAAO,UAAU,KAAK,EAAE,KAAK,CAAC,WAAW;AACvC,QAAI,OAAO,MAAM;AACf,aAAO;AAAA,IACT;AACA,QAAI,YAAY;AAChB,aAAS,OAAO;AACd,kBAAY;AAAA,IACd;AACA,cAAU,QAAQ;AAAA,MAChB,QAAQ,MAAM,OAAO,OAAO,IAAI,IAAI,OAAO,MAAM;AAAA,IACnD;AACA,QAAI,WAAW;AACb,aAAO;AAAA,IACT;AACA,WAAO,OAAO,SAAS,SAAS,WAAW,KAAK;AAAA,EAClD,CAAC;AACH;;;AC5BA,IAAM,sBAAsB,OAAO,OAAO,UAAU;AAAA,EAClD;AACF,CAAC;;;ACJD,IAAM,sBAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACrOA,SAAS,qBAAqB,KAAK;AACjC,MAAI,OAAO,QAAQ,UAAU;AAC3B,WAAO,oBAAoB,SAAS,GAAG;AAAA,EACzC,OAAO;AACL,WAAO;AAAA,EACT;AACF;;;ACFA,SAAS,aAAa,SAAS;AAC7B,SAAO;AAAA,IACL,UAAU,OAAO,OAAO,SAAS,KAAK,MAAM,OAAO,GAAG;AAAA,MACpD,UAAU,SAAS,KAAK,MAAM,OAAO;AAAA,IACvC,CAAC;AAAA,EACH;AACF;AACA,aAAa,UAAU;",
-  "names": []
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/package.json b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/package.json
deleted file mode 100644
index ee80c60..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-paginate-rest/package.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "name": "@octokit/plugin-paginate-rest",
-  "publishConfig": {
-    "access": "public"
-  },
-  "version": "9.1.5",
-  "description": "Octokit plugin to paginate REST API endpoint responses",
-  "repository": "github:octokit/plugin-paginate-rest.js",
-  "keywords": [
-    "github",
-    "api",
-    "sdk",
-    "toolkit"
-  ],
-  "license": "MIT",
-  "dependencies": {
-    "@octokit/types": "^12.4.0"
-  },
-  "peerDependencies": {
-    "@octokit/core": ">=5"
-  },
-  "devDependencies": {
-    "@octokit/core": "^5.0.0",
-    "@octokit/plugin-rest-endpoint-methods": "^10.0.0",
-    "@octokit/tsconfig": "^2.0.0",
-    "@types/fetch-mock": "^7.3.1",
-    "@types/jest": "^29.0.0",
-    "@types/node": "^20.0.0",
-    "esbuild": "^0.19.0",
-    "fetch-mock": "^9.0.0",
-    "github-openapi-graphql-query": "^4.0.0",
-    "glob": "^10.2.5",
-    "jest": "^29.0.0",
-    "npm-run-all": "^4.1.5",
-    "prettier": "3.1.0",
-    "semantic-release-plugin-update-version-in-files": "^1.0.0",
-    "ts-jest": "^29.0.0",
-    "typescript": "^5.0.0"
-  },
-  "engines": {
-    "node": ">= 18"
-  },
-  "files": [
-    "dist-*/**",
-    "bin/**"
-  ],
-  "main": "dist-node/index.js",
-  "module": "dist-web/index.js",
-  "types": "dist-types/index.d.ts",
-  "source": "dist-src/index.js",
-  "sideEffects": false
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE
deleted file mode 100644
index 57bee5f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE
+++ /dev/null
@@ -1,7 +0,0 @@
-MIT License Copyright (c) 2019 Octokit contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/README.md b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/README.md
deleted file mode 100644
index ee4f952..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# plugin-rest-endpoint-methods.js
-
-> Octokit plugin adding one method for all of api.github.com REST API endpoints
-
-[![@latest](https://img.shields.io/npm/v/@octokit/plugin-rest-endpoint-methods.svg)](https://www.npmjs.com/package/@octokit/plugin-rest-endpoint-methods)
-[![Build Status](https://github.com/octokit/plugin-rest-endpoint-methods.js/workflows/Test/badge.svg)](https://github.com/octokit/plugin-rest-endpoint-methods.js/actions?workflow=Test)
-
-## Usage
-
-<table>
-<tbody valign=top align=left>
-<tr><th>
-Browsers
-</th><td width=100%>
-
-Load `@octokit/plugin-rest-endpoint-methods` and [`@octokit/core`](https://github.com/octokit/core.js) (or core-compatible module) directly from [esm.sh](https://esm.sh)
-
-```html
-<script type="module">
-  import { Octokit } from "https://esm.sh/@octokit/core";
-  import { restEndpointMethods } from "https://esm.sh/@octokit/plugin-rest-endpoint-methods";
-</script>
-```
-
-</td></tr>
-<tr><th>
-Node
-</th><td>
-
-Install with `npm install @octokit/core @octokit/plugin-rest-endpoint-methods`. Optionally replace `@octokit/core` with a compatible module
-
-```js
-const { Octokit } = require("@octokit/core");
-const {
-  restEndpointMethods,
-} = require("@octokit/plugin-rest-endpoint-methods");
-```
-
-</td></tr>
-</tbody>
-</table>
-
-```js
-const MyOctokit = Octokit.plugin(restEndpointMethods);
-const octokit = new MyOctokit({ auth: "secret123" });
-
-// https://developer.github.com/v3/users/#get-the-authenticated-user
-octokit.rest.users.getAuthenticated();
-```
-
-There is one method for each REST API endpoint documented at [https://developer.github.com/v3](https://developer.github.com/v3). All endpoint methods are documented in the [docs/](docs/) folder, e.g. [docs/users/getAuthenticated.md](docs/users/getAuthenticated.md)
-
-## TypeScript
-
-Parameter and response types for all endpoint methods exported as `{ RestEndpointMethodTypes }`.
-
-Example
-
-```ts
-import { RestEndpointMethodTypes } from "@octokit/plugin-rest-endpoint-methods";
-
-type UpdateLabelParameters =
-  RestEndpointMethodTypes["issues"]["updateLabel"]["parameters"];
-type UpdateLabelResponse =
-  RestEndpointMethodTypes["issues"]["updateLabel"]["response"];
-```
-
-In order to get types beyond parameters and responses, check out [`@octokit/openapi-types`](https://github.com/octokit/openapi-types.ts/#readme), which is a direct transpilation from GitHub's official OpenAPI specification.
-
-## Contributing
-
-See [CONTRIBUTING.md](CONTRIBUTING.md)
-
-## License
-
-[MIT](LICENSE)
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js
deleted file mode 100644
index bf4b8c4..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js
+++ /dev/null
@@ -1,2106 +0,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
-  if (from && typeof from === "object" || typeof from === "function") {
-    for (let key of __getOwnPropNames(from))
-      if (!__hasOwnProp.call(to, key) && key !== except)
-        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
-  }
-  return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
-  legacyRestEndpointMethods: () => legacyRestEndpointMethods,
-  restEndpointMethods: () => restEndpointMethods
-});
-module.exports = __toCommonJS(dist_src_exports);
-
-// pkg/dist-src/version.js
-var VERSION = "10.2.0";
-
-// pkg/dist-src/generated/endpoints.js
-var Endpoints = {
-  actions: {
-    addCustomLabelsToSelfHostedRunnerForOrg: [
-      "POST /orgs/{org}/actions/runners/{runner_id}/labels"
-    ],
-    addCustomLabelsToSelfHostedRunnerForRepo: [
-      "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
-    ],
-    addSelectedRepoToOrgSecret: [
-      "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    addSelectedRepoToOrgVariable: [
-      "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"
-    ],
-    approveWorkflowRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"
-    ],
-    cancelWorkflowRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"
-    ],
-    createEnvironmentVariable: [
-      "POST /repositories/{repository_id}/environments/{environment_name}/variables"
-    ],
-    createOrUpdateEnvironmentSecret: [
-      "PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"
-    ],
-    createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
-    createOrUpdateRepoSecret: [
-      "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"
-    ],
-    createOrgVariable: ["POST /orgs/{org}/actions/variables"],
-    createRegistrationTokenForOrg: [
-      "POST /orgs/{org}/actions/runners/registration-token"
-    ],
-    createRegistrationTokenForRepo: [
-      "POST /repos/{owner}/{repo}/actions/runners/registration-token"
-    ],
-    createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"],
-    createRemoveTokenForRepo: [
-      "POST /repos/{owner}/{repo}/actions/runners/remove-token"
-    ],
-    createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"],
-    createWorkflowDispatch: [
-      "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"
-    ],
-    deleteActionsCacheById: [
-      "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"
-    ],
-    deleteActionsCacheByKey: [
-      "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"
-    ],
-    deleteArtifact: [
-      "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"
-    ],
-    deleteEnvironmentSecret: [
-      "DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"
-    ],
-    deleteEnvironmentVariable: [
-      "DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}"
-    ],
-    deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
-    deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"],
-    deleteRepoSecret: [
-      "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"
-    ],
-    deleteRepoVariable: [
-      "DELETE /repos/{owner}/{repo}/actions/variables/{name}"
-    ],
-    deleteSelfHostedRunnerFromOrg: [
-      "DELETE /orgs/{org}/actions/runners/{runner_id}"
-    ],
-    deleteSelfHostedRunnerFromRepo: [
-      "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"
-    ],
-    deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],
-    deleteWorkflowRunLogs: [
-      "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"
-    ],
-    disableSelectedRepositoryGithubActionsOrganization: [
-      "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"
-    ],
-    disableWorkflow: [
-      "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"
-    ],
-    downloadArtifact: [
-      "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"
-    ],
-    downloadJobLogsForWorkflowRun: [
-      "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"
-    ],
-    downloadWorkflowRunAttemptLogs: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"
-    ],
-    downloadWorkflowRunLogs: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"
-    ],
-    enableSelectedRepositoryGithubActionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"
-    ],
-    enableWorkflow: [
-      "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"
-    ],
-    forceCancelWorkflowRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"
-    ],
-    generateRunnerJitconfigForOrg: [
-      "POST /orgs/{org}/actions/runners/generate-jitconfig"
-    ],
-    generateRunnerJitconfigForRepo: [
-      "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"
-    ],
-    getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"],
-    getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"],
-    getActionsCacheUsageByRepoForOrg: [
-      "GET /orgs/{org}/actions/cache/usage-by-repository"
-    ],
-    getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"],
-    getAllowedActionsOrganization: [
-      "GET /orgs/{org}/actions/permissions/selected-actions"
-    ],
-    getAllowedActionsRepository: [
-      "GET /repos/{owner}/{repo}/actions/permissions/selected-actions"
-    ],
-    getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
-    getEnvironmentPublicKey: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"
-    ],
-    getEnvironmentSecret: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"
-    ],
-    getEnvironmentVariable: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}"
-    ],
-    getGithubActionsDefaultWorkflowPermissionsOrganization: [
-      "GET /orgs/{org}/actions/permissions/workflow"
-    ],
-    getGithubActionsDefaultWorkflowPermissionsRepository: [
-      "GET /repos/{owner}/{repo}/actions/permissions/workflow"
-    ],
-    getGithubActionsPermissionsOrganization: [
-      "GET /orgs/{org}/actions/permissions"
-    ],
-    getGithubActionsPermissionsRepository: [
-      "GET /repos/{owner}/{repo}/actions/permissions"
-    ],
-    getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
-    getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
-    getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
-    getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"],
-    getPendingDeploymentsForRun: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"
-    ],
-    getRepoPermissions: [
-      "GET /repos/{owner}/{repo}/actions/permissions",
-      {},
-      { renamed: ["actions", "getGithubActionsPermissionsRepository"] }
-    ],
-    getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
-    getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
-    getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"],
-    getReviewsForRun: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"
-    ],
-    getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
-    getSelfHostedRunnerForRepo: [
-      "GET /repos/{owner}/{repo}/actions/runners/{runner_id}"
-    ],
-    getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
-    getWorkflowAccessToRepository: [
-      "GET /repos/{owner}/{repo}/actions/permissions/access"
-    ],
-    getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],
-    getWorkflowRunAttempt: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"
-    ],
-    getWorkflowRunUsage: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"
-    ],
-    getWorkflowUsage: [
-      "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"
-    ],
-    listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
-    listEnvironmentSecrets: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/secrets"
-    ],
-    listEnvironmentVariables: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/variables"
-    ],
-    listJobsForWorkflowRun: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"
-    ],
-    listJobsForWorkflowRunAttempt: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"
-    ],
-    listLabelsForSelfHostedRunnerForOrg: [
-      "GET /orgs/{org}/actions/runners/{runner_id}/labels"
-    ],
-    listLabelsForSelfHostedRunnerForRepo: [
-      "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
-    ],
-    listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
-    listOrgVariables: ["GET /orgs/{org}/actions/variables"],
-    listRepoOrganizationSecrets: [
-      "GET /repos/{owner}/{repo}/actions/organization-secrets"
-    ],
-    listRepoOrganizationVariables: [
-      "GET /repos/{owner}/{repo}/actions/organization-variables"
-    ],
-    listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
-    listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"],
-    listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"],
-    listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"],
-    listRunnerApplicationsForRepo: [
-      "GET /repos/{owner}/{repo}/actions/runners/downloads"
-    ],
-    listSelectedReposForOrgSecret: [
-      "GET /orgs/{org}/actions/secrets/{secret_name}/repositories"
-    ],
-    listSelectedReposForOrgVariable: [
-      "GET /orgs/{org}/actions/variables/{name}/repositories"
-    ],
-    listSelectedRepositoriesEnabledGithubActionsOrganization: [
-      "GET /orgs/{org}/actions/permissions/repositories"
-    ],
-    listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"],
-    listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"],
-    listWorkflowRunArtifacts: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"
-    ],
-    listWorkflowRuns: [
-      "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"
-    ],
-    listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
-    reRunJobForWorkflowRun: [
-      "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"
-    ],
-    reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
-    reRunWorkflowFailedJobs: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"
-    ],
-    removeAllCustomLabelsFromSelfHostedRunnerForOrg: [
-      "DELETE /orgs/{org}/actions/runners/{runner_id}/labels"
-    ],
-    removeAllCustomLabelsFromSelfHostedRunnerForRepo: [
-      "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
-    ],
-    removeCustomLabelFromSelfHostedRunnerForOrg: [
-      "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"
-    ],
-    removeCustomLabelFromSelfHostedRunnerForRepo: [
-      "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"
-    ],
-    removeSelectedRepoFromOrgSecret: [
-      "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    removeSelectedRepoFromOrgVariable: [
-      "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"
-    ],
-    reviewCustomGatesForRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"
-    ],
-    reviewPendingDeploymentsForRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"
-    ],
-    setAllowedActionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions/selected-actions"
-    ],
-    setAllowedActionsRepository: [
-      "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"
-    ],
-    setCustomLabelsForSelfHostedRunnerForOrg: [
-      "PUT /orgs/{org}/actions/runners/{runner_id}/labels"
-    ],
-    setCustomLabelsForSelfHostedRunnerForRepo: [
-      "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
-    ],
-    setGithubActionsDefaultWorkflowPermissionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions/workflow"
-    ],
-    setGithubActionsDefaultWorkflowPermissionsRepository: [
-      "PUT /repos/{owner}/{repo}/actions/permissions/workflow"
-    ],
-    setGithubActionsPermissionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions"
-    ],
-    setGithubActionsPermissionsRepository: [
-      "PUT /repos/{owner}/{repo}/actions/permissions"
-    ],
-    setSelectedReposForOrgSecret: [
-      "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"
-    ],
-    setSelectedReposForOrgVariable: [
-      "PUT /orgs/{org}/actions/variables/{name}/repositories"
-    ],
-    setSelectedRepositoriesEnabledGithubActionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions/repositories"
-    ],
-    setWorkflowAccessToRepository: [
-      "PUT /repos/{owner}/{repo}/actions/permissions/access"
-    ],
-    updateEnvironmentVariable: [
-      "PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}"
-    ],
-    updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"],
-    updateRepoVariable: [
-      "PATCH /repos/{owner}/{repo}/actions/variables/{name}"
-    ]
-  },
-  activity: {
-    checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"],
-    deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"],
-    deleteThreadSubscription: [
-      "DELETE /notifications/threads/{thread_id}/subscription"
-    ],
-    getFeeds: ["GET /feeds"],
-    getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"],
-    getThread: ["GET /notifications/threads/{thread_id}"],
-    getThreadSubscriptionForAuthenticatedUser: [
-      "GET /notifications/threads/{thread_id}/subscription"
-    ],
-    listEventsForAuthenticatedUser: ["GET /users/{username}/events"],
-    listNotificationsForAuthenticatedUser: ["GET /notifications"],
-    listOrgEventsForAuthenticatedUser: [
-      "GET /users/{username}/events/orgs/{org}"
-    ],
-    listPublicEvents: ["GET /events"],
-    listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"],
-    listPublicEventsForUser: ["GET /users/{username}/events/public"],
-    listPublicOrgEvents: ["GET /orgs/{org}/events"],
-    listReceivedEventsForUser: ["GET /users/{username}/received_events"],
-    listReceivedPublicEventsForUser: [
-      "GET /users/{username}/received_events/public"
-    ],
-    listRepoEvents: ["GET /repos/{owner}/{repo}/events"],
-    listRepoNotificationsForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/notifications"
-    ],
-    listReposStarredByAuthenticatedUser: ["GET /user/starred"],
-    listReposStarredByUser: ["GET /users/{username}/starred"],
-    listReposWatchedByUser: ["GET /users/{username}/subscriptions"],
-    listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"],
-    listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"],
-    listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"],
-    markNotificationsAsRead: ["PUT /notifications"],
-    markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"],
-    markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"],
-    setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"],
-    setThreadSubscription: [
-      "PUT /notifications/threads/{thread_id}/subscription"
-    ],
-    starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"],
-    unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"]
-  },
-  apps: {
-    addRepoToInstallation: [
-      "PUT /user/installations/{installation_id}/repositories/{repository_id}",
-      {},
-      { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] }
-    ],
-    addRepoToInstallationForAuthenticatedUser: [
-      "PUT /user/installations/{installation_id}/repositories/{repository_id}"
-    ],
-    checkToken: ["POST /applications/{client_id}/token"],
-    createFromManifest: ["POST /app-manifests/{code}/conversions"],
-    createInstallationAccessToken: [
-      "POST /app/installations/{installation_id}/access_tokens"
-    ],
-    deleteAuthorization: ["DELETE /applications/{client_id}/grant"],
-    deleteInstallation: ["DELETE /app/installations/{installation_id}"],
-    deleteToken: ["DELETE /applications/{client_id}/token"],
-    getAuthenticated: ["GET /app"],
-    getBySlug: ["GET /apps/{app_slug}"],
-    getInstallation: ["GET /app/installations/{installation_id}"],
-    getOrgInstallation: ["GET /orgs/{org}/installation"],
-    getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"],
-    getSubscriptionPlanForAccount: [
-      "GET /marketplace_listing/accounts/{account_id}"
-    ],
-    getSubscriptionPlanForAccountStubbed: [
-      "GET /marketplace_listing/stubbed/accounts/{account_id}"
-    ],
-    getUserInstallation: ["GET /users/{username}/installation"],
-    getWebhookConfigForApp: ["GET /app/hook/config"],
-    getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"],
-    listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"],
-    listAccountsForPlanStubbed: [
-      "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"
-    ],
-    listInstallationReposForAuthenticatedUser: [
-      "GET /user/installations/{installation_id}/repositories"
-    ],
-    listInstallationRequestsForAuthenticatedApp: [
-      "GET /app/installation-requests"
-    ],
-    listInstallations: ["GET /app/installations"],
-    listInstallationsForAuthenticatedUser: ["GET /user/installations"],
-    listPlans: ["GET /marketplace_listing/plans"],
-    listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"],
-    listReposAccessibleToInstallation: ["GET /installation/repositories"],
-    listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"],
-    listSubscriptionsForAuthenticatedUserStubbed: [
-      "GET /user/marketplace_purchases/stubbed"
-    ],
-    listWebhookDeliveries: ["GET /app/hook/deliveries"],
-    redeliverWebhookDelivery: [
-      "POST /app/hook/deliveries/{delivery_id}/attempts"
-    ],
-    removeRepoFromInstallation: [
-      "DELETE /user/installations/{installation_id}/repositories/{repository_id}",
-      {},
-      { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] }
-    ],
-    removeRepoFromInstallationForAuthenticatedUser: [
-      "DELETE /user/installations/{installation_id}/repositories/{repository_id}"
-    ],
-    resetToken: ["PATCH /applications/{client_id}/token"],
-    revokeInstallationAccessToken: ["DELETE /installation/token"],
-    scopeToken: ["POST /applications/{client_id}/token/scoped"],
-    suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"],
-    unsuspendInstallation: [
-      "DELETE /app/installations/{installation_id}/suspended"
-    ],
-    updateWebhookConfigForApp: ["PATCH /app/hook/config"]
-  },
-  billing: {
-    getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"],
-    getGithubActionsBillingUser: [
-      "GET /users/{username}/settings/billing/actions"
-    ],
-    getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"],
-    getGithubPackagesBillingUser: [
-      "GET /users/{username}/settings/billing/packages"
-    ],
-    getSharedStorageBillingOrg: [
-      "GET /orgs/{org}/settings/billing/shared-storage"
-    ],
-    getSharedStorageBillingUser: [
-      "GET /users/{username}/settings/billing/shared-storage"
-    ]
-  },
-  checks: {
-    create: ["POST /repos/{owner}/{repo}/check-runs"],
-    createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
-    get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],
-    getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],
-    listAnnotations: [
-      "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"
-    ],
-    listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],
-    listForSuite: [
-      "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"
-    ],
-    listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],
-    rerequestRun: [
-      "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"
-    ],
-    rerequestSuite: [
-      "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"
-    ],
-    setSuitesPreferences: [
-      "PATCH /repos/{owner}/{repo}/check-suites/preferences"
-    ],
-    update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]
-  },
-  codeScanning: {
-    deleteAnalysis: [
-      "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"
-    ],
-    getAlert: [
-      "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",
-      {},
-      { renamedParameters: { alert_id: "alert_number" } }
-    ],
-    getAnalysis: [
-      "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"
-    ],
-    getCodeqlDatabase: [
-      "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"
-    ],
-    getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"],
-    getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],
-    listAlertInstances: [
-      "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"
-    ],
-    listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"],
-    listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"],
-    listAlertsInstances: [
-      "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
-      {},
-      { renamed: ["codeScanning", "listAlertInstances"] }
-    ],
-    listCodeqlDatabases: [
-      "GET /repos/{owner}/{repo}/code-scanning/codeql/databases"
-    ],
-    listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"],
-    updateAlert: [
-      "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"
-    ],
-    updateDefaultSetup: [
-      "PATCH /repos/{owner}/{repo}/code-scanning/default-setup"
-    ],
-    uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"]
-  },
-  codesOfConduct: {
-    getAllCodesOfConduct: ["GET /codes_of_conduct"],
-    getConductCode: ["GET /codes_of_conduct/{key}"]
-  },
-  codespaces: {
-    addRepositoryForSecretForAuthenticatedUser: [
-      "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    addSelectedRepoToOrgSecret: [
-      "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    checkPermissionsForDevcontainer: [
-      "GET /repos/{owner}/{repo}/codespaces/permissions_check"
-    ],
-    codespaceMachinesForAuthenticatedUser: [
-      "GET /user/codespaces/{codespace_name}/machines"
-    ],
-    createForAuthenticatedUser: ["POST /user/codespaces"],
-    createOrUpdateOrgSecret: [
-      "PUT /orgs/{org}/codespaces/secrets/{secret_name}"
-    ],
-    createOrUpdateRepoSecret: [
-      "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
-    ],
-    createOrUpdateSecretForAuthenticatedUser: [
-      "PUT /user/codespaces/secrets/{secret_name}"
-    ],
-    createWithPrForAuthenticatedUser: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"
-    ],
-    createWithRepoForAuthenticatedUser: [
-      "POST /repos/{owner}/{repo}/codespaces"
-    ],
-    deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"],
-    deleteFromOrganization: [
-      "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"
-    ],
-    deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],
-    deleteRepoSecret: [
-      "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
-    ],
-    deleteSecretForAuthenticatedUser: [
-      "DELETE /user/codespaces/secrets/{secret_name}"
-    ],
-    exportForAuthenticatedUser: [
-      "POST /user/codespaces/{codespace_name}/exports"
-    ],
-    getCodespacesForUserInOrg: [
-      "GET /orgs/{org}/members/{username}/codespaces"
-    ],
-    getExportDetailsForAuthenticatedUser: [
-      "GET /user/codespaces/{codespace_name}/exports/{export_id}"
-    ],
-    getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"],
-    getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"],
-    getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"],
-    getPublicKeyForAuthenticatedUser: [
-      "GET /user/codespaces/secrets/public-key"
-    ],
-    getRepoPublicKey: [
-      "GET /repos/{owner}/{repo}/codespaces/secrets/public-key"
-    ],
-    getRepoSecret: [
-      "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
-    ],
-    getSecretForAuthenticatedUser: [
-      "GET /user/codespaces/secrets/{secret_name}"
-    ],
-    listDevcontainersInRepositoryForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/codespaces/devcontainers"
-    ],
-    listForAuthenticatedUser: ["GET /user/codespaces"],
-    listInOrganization: [
-      "GET /orgs/{org}/codespaces",
-      {},
-      { renamedParameters: { org_id: "org" } }
-    ],
-    listInRepositoryForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/codespaces"
-    ],
-    listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"],
-    listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
-    listRepositoriesForSecretForAuthenticatedUser: [
-      "GET /user/codespaces/secrets/{secret_name}/repositories"
-    ],
-    listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"],
-    listSelectedReposForOrgSecret: [
-      "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"
-    ],
-    preFlightWithRepoForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/codespaces/new"
-    ],
-    publishForAuthenticatedUser: [
-      "POST /user/codespaces/{codespace_name}/publish"
-    ],
-    removeRepositoryForSecretForAuthenticatedUser: [
-      "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    removeSelectedRepoFromOrgSecret: [
-      "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    repoMachinesForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/codespaces/machines"
-    ],
-    setRepositoriesForSecretForAuthenticatedUser: [
-      "PUT /user/codespaces/secrets/{secret_name}/repositories"
-    ],
-    setSelectedReposForOrgSecret: [
-      "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"
-    ],
-    startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"],
-    stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"],
-    stopInOrganization: [
-      "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"
-    ],
-    updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
-  },
-  copilot: {
-    addCopilotForBusinessSeatsForTeams: [
-      "POST /orgs/{org}/copilot/billing/selected_teams"
-    ],
-    addCopilotForBusinessSeatsForUsers: [
-      "POST /orgs/{org}/copilot/billing/selected_users"
-    ],
-    cancelCopilotSeatAssignmentForTeams: [
-      "DELETE /orgs/{org}/copilot/billing/selected_teams"
-    ],
-    cancelCopilotSeatAssignmentForUsers: [
-      "DELETE /orgs/{org}/copilot/billing/selected_users"
-    ],
-    getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"],
-    getCopilotSeatDetailsForUser: [
-      "GET /orgs/{org}/members/{username}/copilot"
-    ],
-    listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"]
-  },
-  dependabot: {
-    addSelectedRepoToOrgSecret: [
-      "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    createOrUpdateOrgSecret: [
-      "PUT /orgs/{org}/dependabot/secrets/{secret_name}"
-    ],
-    createOrUpdateRepoSecret: [
-      "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
-    ],
-    deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],
-    deleteRepoSecret: [
-      "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
-    ],
-    getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],
-    getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"],
-    getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"],
-    getRepoPublicKey: [
-      "GET /repos/{owner}/{repo}/dependabot/secrets/public-key"
-    ],
-    getRepoSecret: [
-      "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
-    ],
-    listAlertsForEnterprise: [
-      "GET /enterprises/{enterprise}/dependabot/alerts"
-    ],
-    listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"],
-    listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"],
-    listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"],
-    listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"],
-    listSelectedReposForOrgSecret: [
-      "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"
-    ],
-    removeSelectedRepoFromOrgSecret: [
-      "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    setSelectedReposForOrgSecret: [
-      "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"
-    ],
-    updateAlert: [
-      "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"
-    ]
-  },
-  dependencyGraph: {
-    createRepositorySnapshot: [
-      "POST /repos/{owner}/{repo}/dependency-graph/snapshots"
-    ],
-    diffRange: [
-      "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"
-    ],
-    exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"]
-  },
-  emojis: { get: ["GET /emojis"] },
-  gists: {
-    checkIsStarred: ["GET /gists/{gist_id}/star"],
-    create: ["POST /gists"],
-    createComment: ["POST /gists/{gist_id}/comments"],
-    delete: ["DELETE /gists/{gist_id}"],
-    deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"],
-    fork: ["POST /gists/{gist_id}/forks"],
-    get: ["GET /gists/{gist_id}"],
-    getComment: ["GET /gists/{gist_id}/comments/{comment_id}"],
-    getRevision: ["GET /gists/{gist_id}/{sha}"],
-    list: ["GET /gists"],
-    listComments: ["GET /gists/{gist_id}/comments"],
-    listCommits: ["GET /gists/{gist_id}/commits"],
-    listForUser: ["GET /users/{username}/gists"],
-    listForks: ["GET /gists/{gist_id}/forks"],
-    listPublic: ["GET /gists/public"],
-    listStarred: ["GET /gists/starred"],
-    star: ["PUT /gists/{gist_id}/star"],
-    unstar: ["DELETE /gists/{gist_id}/star"],
-    update: ["PATCH /gists/{gist_id}"],
-    updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"]
-  },
-  git: {
-    createBlob: ["POST /repos/{owner}/{repo}/git/blobs"],
-    createCommit: ["POST /repos/{owner}/{repo}/git/commits"],
-    createRef: ["POST /repos/{owner}/{repo}/git/refs"],
-    createTag: ["POST /repos/{owner}/{repo}/git/tags"],
-    createTree: ["POST /repos/{owner}/{repo}/git/trees"],
-    deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],
-    getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],
-    getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],
-    getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"],
-    getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],
-    getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],
-    listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],
-    updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]
-  },
-  gitignore: {
-    getAllTemplates: ["GET /gitignore/templates"],
-    getTemplate: ["GET /gitignore/templates/{name}"]
-  },
-  interactions: {
-    getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
-    getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
-    getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"],
-    getRestrictionsForYourPublicRepos: [
-      "GET /user/interaction-limits",
-      {},
-      { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] }
-    ],
-    removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"],
-    removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"],
-    removeRestrictionsForRepo: [
-      "DELETE /repos/{owner}/{repo}/interaction-limits"
-    ],
-    removeRestrictionsForYourPublicRepos: [
-      "DELETE /user/interaction-limits",
-      {},
-      { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] }
-    ],
-    setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"],
-    setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"],
-    setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"],
-    setRestrictionsForYourPublicRepos: [
-      "PUT /user/interaction-limits",
-      {},
-      { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] }
-    ]
-  },
-  issues: {
-    addAssignees: [
-      "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"
-    ],
-    addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],
-    checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"],
-    checkUserCanBeAssignedToIssue: [
-      "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"
-    ],
-    create: ["POST /repos/{owner}/{repo}/issues"],
-    createComment: [
-      "POST /repos/{owner}/{repo}/issues/{issue_number}/comments"
-    ],
-    createLabel: ["POST /repos/{owner}/{repo}/labels"],
-    createMilestone: ["POST /repos/{owner}/{repo}/milestones"],
-    deleteComment: [
-      "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"
-    ],
-    deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"],
-    deleteMilestone: [
-      "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"
-    ],
-    get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"],
-    getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],
-    getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"],
-    getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"],
-    getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],
-    list: ["GET /issues"],
-    listAssignees: ["GET /repos/{owner}/{repo}/assignees"],
-    listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],
-    listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"],
-    listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],
-    listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"],
-    listEventsForTimeline: [
-      "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"
-    ],
-    listForAuthenticatedUser: ["GET /user/issues"],
-    listForOrg: ["GET /orgs/{org}/issues"],
-    listForRepo: ["GET /repos/{owner}/{repo}/issues"],
-    listLabelsForMilestone: [
-      "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"
-    ],
-    listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"],
-    listLabelsOnIssue: [
-      "GET /repos/{owner}/{repo}/issues/{issue_number}/labels"
-    ],
-    listMilestones: ["GET /repos/{owner}/{repo}/milestones"],
-    lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],
-    removeAllLabels: [
-      "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"
-    ],
-    removeAssignees: [
-      "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"
-    ],
-    removeLabel: [
-      "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"
-    ],
-    setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],
-    unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],
-    update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],
-    updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],
-    updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"],
-    updateMilestone: [
-      "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"
-    ]
-  },
-  licenses: {
-    get: ["GET /licenses/{license}"],
-    getAllCommonlyUsed: ["GET /licenses"],
-    getForRepo: ["GET /repos/{owner}/{repo}/license"]
-  },
-  markdown: {
-    render: ["POST /markdown"],
-    renderRaw: [
-      "POST /markdown/raw",
-      { headers: { "content-type": "text/plain; charset=utf-8" } }
-    ]
-  },
-  meta: {
-    get: ["GET /meta"],
-    getAllVersions: ["GET /versions"],
-    getOctocat: ["GET /octocat"],
-    getZen: ["GET /zen"],
-    root: ["GET /"]
-  },
-  migrations: {
-    cancelImport: [
-      "DELETE /repos/{owner}/{repo}/import",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import"
-      }
-    ],
-    deleteArchiveForAuthenticatedUser: [
-      "DELETE /user/migrations/{migration_id}/archive"
-    ],
-    deleteArchiveForOrg: [
-      "DELETE /orgs/{org}/migrations/{migration_id}/archive"
-    ],
-    downloadArchiveForOrg: [
-      "GET /orgs/{org}/migrations/{migration_id}/archive"
-    ],
-    getArchiveForAuthenticatedUser: [
-      "GET /user/migrations/{migration_id}/archive"
-    ],
-    getCommitAuthors: [
-      "GET /repos/{owner}/{repo}/import/authors",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors"
-      }
-    ],
-    getImportStatus: [
-      "GET /repos/{owner}/{repo}/import",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status"
-      }
-    ],
-    getLargeFiles: [
-      "GET /repos/{owner}/{repo}/import/large_files",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files"
-      }
-    ],
-    getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"],
-    getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"],
-    listForAuthenticatedUser: ["GET /user/migrations"],
-    listForOrg: ["GET /orgs/{org}/migrations"],
-    listReposForAuthenticatedUser: [
-      "GET /user/migrations/{migration_id}/repositories"
-    ],
-    listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"],
-    listReposForUser: [
-      "GET /user/migrations/{migration_id}/repositories",
-      {},
-      { renamed: ["migrations", "listReposForAuthenticatedUser"] }
-    ],
-    mapCommitAuthor: [
-      "PATCH /repos/{owner}/{repo}/import/authors/{author_id}",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author"
-      }
-    ],
-    setLfsPreference: [
-      "PATCH /repos/{owner}/{repo}/import/lfs",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference"
-      }
-    ],
-    startForAuthenticatedUser: ["POST /user/migrations"],
-    startForOrg: ["POST /orgs/{org}/migrations"],
-    startImport: [
-      "PUT /repos/{owner}/{repo}/import",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import"
-      }
-    ],
-    unlockRepoForAuthenticatedUser: [
-      "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"
-    ],
-    unlockRepoForOrg: [
-      "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"
-    ],
-    updateImport: [
-      "PATCH /repos/{owner}/{repo}/import",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import"
-      }
-    ]
-  },
-  orgs: {
-    addSecurityManagerTeam: [
-      "PUT /orgs/{org}/security-managers/teams/{team_slug}"
-    ],
-    blockUser: ["PUT /orgs/{org}/blocks/{username}"],
-    cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"],
-    checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"],
-    checkMembershipForUser: ["GET /orgs/{org}/members/{username}"],
-    checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"],
-    convertMemberToOutsideCollaborator: [
-      "PUT /orgs/{org}/outside_collaborators/{username}"
-    ],
-    createInvitation: ["POST /orgs/{org}/invitations"],
-    createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"],
-    createOrUpdateCustomPropertiesValuesForRepos: [
-      "PATCH /orgs/{org}/properties/values"
-    ],
-    createOrUpdateCustomProperty: [
-      "PUT /orgs/{org}/properties/schema/{custom_property_name}"
-    ],
-    createWebhook: ["POST /orgs/{org}/hooks"],
-    delete: ["DELETE /orgs/{org}"],
-    deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
-    enableOrDisableSecurityProductOnAllOrgRepos: [
-      "POST /orgs/{org}/{security_product}/{enablement}"
-    ],
-    get: ["GET /orgs/{org}"],
-    getAllCustomProperties: ["GET /orgs/{org}/properties/schema"],
-    getCustomProperty: [
-      "GET /orgs/{org}/properties/schema/{custom_property_name}"
-    ],
-    getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
-    getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
-    getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
-    getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
-    getWebhookDelivery: [
-      "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"
-    ],
-    list: ["GET /organizations"],
-    listAppInstallations: ["GET /orgs/{org}/installations"],
-    listBlockedUsers: ["GET /orgs/{org}/blocks"],
-    listCustomPropertiesValuesForRepos: ["GET /orgs/{org}/properties/values"],
-    listFailedInvitations: ["GET /orgs/{org}/failed_invitations"],
-    listForAuthenticatedUser: ["GET /user/orgs"],
-    listForUser: ["GET /users/{username}/orgs"],
-    listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
-    listMembers: ["GET /orgs/{org}/members"],
-    listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
-    listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"],
-    listPatGrantRepositories: [
-      "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"
-    ],
-    listPatGrantRequestRepositories: [
-      "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"
-    ],
-    listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"],
-    listPatGrants: ["GET /orgs/{org}/personal-access-tokens"],
-    listPendingInvitations: ["GET /orgs/{org}/invitations"],
-    listPublicMembers: ["GET /orgs/{org}/public_members"],
-    listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"],
-    listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"],
-    listWebhooks: ["GET /orgs/{org}/hooks"],
-    pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"],
-    redeliverWebhookDelivery: [
-      "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
-    ],
-    removeCustomProperty: [
-      "DELETE /orgs/{org}/properties/schema/{custom_property_name}"
-    ],
-    removeMember: ["DELETE /orgs/{org}/members/{username}"],
-    removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"],
-    removeOutsideCollaborator: [
-      "DELETE /orgs/{org}/outside_collaborators/{username}"
-    ],
-    removePublicMembershipForAuthenticatedUser: [
-      "DELETE /orgs/{org}/public_members/{username}"
-    ],
-    removeSecurityManagerTeam: [
-      "DELETE /orgs/{org}/security-managers/teams/{team_slug}"
-    ],
-    reviewPatGrantRequest: [
-      "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"
-    ],
-    reviewPatGrantRequestsInBulk: [
-      "POST /orgs/{org}/personal-access-token-requests"
-    ],
-    setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"],
-    setPublicMembershipForAuthenticatedUser: [
-      "PUT /orgs/{org}/public_members/{username}"
-    ],
-    unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
-    update: ["PATCH /orgs/{org}"],
-    updateMembershipForAuthenticatedUser: [
-      "PATCH /user/memberships/orgs/{org}"
-    ],
-    updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"],
-    updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"],
-    updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"],
-    updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"]
-  },
-  packages: {
-    deletePackageForAuthenticatedUser: [
-      "DELETE /user/packages/{package_type}/{package_name}"
-    ],
-    deletePackageForOrg: [
-      "DELETE /orgs/{org}/packages/{package_type}/{package_name}"
-    ],
-    deletePackageForUser: [
-      "DELETE /users/{username}/packages/{package_type}/{package_name}"
-    ],
-    deletePackageVersionForAuthenticatedUser: [
-      "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    deletePackageVersionForOrg: [
-      "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    deletePackageVersionForUser: [
-      "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    getAllPackageVersionsForAPackageOwnedByAnOrg: [
-      "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
-      {},
-      { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] }
-    ],
-    getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [
-      "GET /user/packages/{package_type}/{package_name}/versions",
-      {},
-      {
-        renamed: [
-          "packages",
-          "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"
-        ]
-      }
-    ],
-    getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [
-      "GET /user/packages/{package_type}/{package_name}/versions"
-    ],
-    getAllPackageVersionsForPackageOwnedByOrg: [
-      "GET /orgs/{org}/packages/{package_type}/{package_name}/versions"
-    ],
-    getAllPackageVersionsForPackageOwnedByUser: [
-      "GET /users/{username}/packages/{package_type}/{package_name}/versions"
-    ],
-    getPackageForAuthenticatedUser: [
-      "GET /user/packages/{package_type}/{package_name}"
-    ],
-    getPackageForOrganization: [
-      "GET /orgs/{org}/packages/{package_type}/{package_name}"
-    ],
-    getPackageForUser: [
-      "GET /users/{username}/packages/{package_type}/{package_name}"
-    ],
-    getPackageVersionForAuthenticatedUser: [
-      "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    getPackageVersionForOrganization: [
-      "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    getPackageVersionForUser: [
-      "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    listDockerMigrationConflictingPackagesForAuthenticatedUser: [
-      "GET /user/docker/conflicts"
-    ],
-    listDockerMigrationConflictingPackagesForOrganization: [
-      "GET /orgs/{org}/docker/conflicts"
-    ],
-    listDockerMigrationConflictingPackagesForUser: [
-      "GET /users/{username}/docker/conflicts"
-    ],
-    listPackagesForAuthenticatedUser: ["GET /user/packages"],
-    listPackagesForOrganization: ["GET /orgs/{org}/packages"],
-    listPackagesForUser: ["GET /users/{username}/packages"],
-    restorePackageForAuthenticatedUser: [
-      "POST /user/packages/{package_type}/{package_name}/restore{?token}"
-    ],
-    restorePackageForOrg: [
-      "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"
-    ],
-    restorePackageForUser: [
-      "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"
-    ],
-    restorePackageVersionForAuthenticatedUser: [
-      "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
-    ],
-    restorePackageVersionForOrg: [
-      "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
-    ],
-    restorePackageVersionForUser: [
-      "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
-    ]
-  },
-  projects: {
-    addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"],
-    createCard: ["POST /projects/columns/{column_id}/cards"],
-    createColumn: ["POST /projects/{project_id}/columns"],
-    createForAuthenticatedUser: ["POST /user/projects"],
-    createForOrg: ["POST /orgs/{org}/projects"],
-    createForRepo: ["POST /repos/{owner}/{repo}/projects"],
-    delete: ["DELETE /projects/{project_id}"],
-    deleteCard: ["DELETE /projects/columns/cards/{card_id}"],
-    deleteColumn: ["DELETE /projects/columns/{column_id}"],
-    get: ["GET /projects/{project_id}"],
-    getCard: ["GET /projects/columns/cards/{card_id}"],
-    getColumn: ["GET /projects/columns/{column_id}"],
-    getPermissionForUser: [
-      "GET /projects/{project_id}/collaborators/{username}/permission"
-    ],
-    listCards: ["GET /projects/columns/{column_id}/cards"],
-    listCollaborators: ["GET /projects/{project_id}/collaborators"],
-    listColumns: ["GET /projects/{project_id}/columns"],
-    listForOrg: ["GET /orgs/{org}/projects"],
-    listForRepo: ["GET /repos/{owner}/{repo}/projects"],
-    listForUser: ["GET /users/{username}/projects"],
-    moveCard: ["POST /projects/columns/cards/{card_id}/moves"],
-    moveColumn: ["POST /projects/columns/{column_id}/moves"],
-    removeCollaborator: [
-      "DELETE /projects/{project_id}/collaborators/{username}"
-    ],
-    update: ["PATCH /projects/{project_id}"],
-    updateCard: ["PATCH /projects/columns/cards/{card_id}"],
-    updateColumn: ["PATCH /projects/columns/{column_id}"]
-  },
-  pulls: {
-    checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
-    create: ["POST /repos/{owner}/{repo}/pulls"],
-    createReplyForReviewComment: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"
-    ],
-    createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
-    createReviewComment: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"
-    ],
-    deletePendingReview: [
-      "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
-    ],
-    deleteReviewComment: [
-      "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"
-    ],
-    dismissReview: [
-      "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"
-    ],
-    get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"],
-    getReview: [
-      "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
-    ],
-    getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
-    list: ["GET /repos/{owner}/{repo}/pulls"],
-    listCommentsForReview: [
-      "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"
-    ],
-    listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],
-    listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],
-    listRequestedReviewers: [
-      "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
-    ],
-    listReviewComments: [
-      "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"
-    ],
-    listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"],
-    listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
-    merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
-    removeRequestedReviewers: [
-      "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
-    ],
-    requestReviewers: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
-    ],
-    submitReview: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"
-    ],
-    update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],
-    updateBranch: [
-      "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"
-    ],
-    updateReview: [
-      "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
-    ],
-    updateReviewComment: [
-      "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"
-    ]
-  },
-  rateLimit: { get: ["GET /rate_limit"] },
-  reactions: {
-    createForCommitComment: [
-      "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"
-    ],
-    createForIssue: [
-      "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"
-    ],
-    createForIssueComment: [
-      "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"
-    ],
-    createForPullRequestReviewComment: [
-      "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"
-    ],
-    createForRelease: [
-      "POST /repos/{owner}/{repo}/releases/{release_id}/reactions"
-    ],
-    createForTeamDiscussionCommentInOrg: [
-      "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"
-    ],
-    createForTeamDiscussionInOrg: [
-      "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"
-    ],
-    deleteForCommitComment: [
-      "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"
-    ],
-    deleteForIssue: [
-      "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"
-    ],
-    deleteForIssueComment: [
-      "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"
-    ],
-    deleteForPullRequestComment: [
-      "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"
-    ],
-    deleteForRelease: [
-      "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"
-    ],
-    deleteForTeamDiscussion: [
-      "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"
-    ],
-    deleteForTeamDiscussionComment: [
-      "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"
-    ],
-    listForCommitComment: [
-      "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"
-    ],
-    listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
-    listForIssueComment: [
-      "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"
-    ],
-    listForPullRequestReviewComment: [
-      "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"
-    ],
-    listForRelease: [
-      "GET /repos/{owner}/{repo}/releases/{release_id}/reactions"
-    ],
-    listForTeamDiscussionCommentInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"
-    ],
-    listForTeamDiscussionInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"
-    ]
-  },
-  repos: {
-    acceptInvitation: [
-      "PATCH /user/repository_invitations/{invitation_id}",
-      {},
-      { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] }
-    ],
-    acceptInvitationForAuthenticatedUser: [
-      "PATCH /user/repository_invitations/{invitation_id}"
-    ],
-    addAppAccessRestrictions: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
-      {},
-      { mapToData: "apps" }
-    ],
-    addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"],
-    addStatusCheckContexts: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
-      {},
-      { mapToData: "contexts" }
-    ],
-    addTeamAccessRestrictions: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
-      {},
-      { mapToData: "teams" }
-    ],
-    addUserAccessRestrictions: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
-      {},
-      { mapToData: "users" }
-    ],
-    checkAutomatedSecurityFixes: [
-      "GET /repos/{owner}/{repo}/automated-security-fixes"
-    ],
-    checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"],
-    checkVulnerabilityAlerts: [
-      "GET /repos/{owner}/{repo}/vulnerability-alerts"
-    ],
-    codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"],
-    compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"],
-    compareCommitsWithBasehead: [
-      "GET /repos/{owner}/{repo}/compare/{basehead}"
-    ],
-    createAutolink: ["POST /repos/{owner}/{repo}/autolinks"],
-    createCommitComment: [
-      "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"
-    ],
-    createCommitSignatureProtection: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
-    ],
-    createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"],
-    createDeployKey: ["POST /repos/{owner}/{repo}/keys"],
-    createDeployment: ["POST /repos/{owner}/{repo}/deployments"],
-    createDeploymentBranchPolicy: [
-      "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"
-    ],
-    createDeploymentProtectionRule: [
-      "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"
-    ],
-    createDeploymentStatus: [
-      "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"
-    ],
-    createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"],
-    createForAuthenticatedUser: ["POST /user/repos"],
-    createFork: ["POST /repos/{owner}/{repo}/forks"],
-    createInOrg: ["POST /orgs/{org}/repos"],
-    createOrUpdateEnvironment: [
-      "PUT /repos/{owner}/{repo}/environments/{environment_name}"
-    ],
-    createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
-    createOrgRuleset: ["POST /orgs/{org}/rulesets"],
-    createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"],
-    createPagesSite: ["POST /repos/{owner}/{repo}/pages"],
-    createRelease: ["POST /repos/{owner}/{repo}/releases"],
-    createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"],
-    createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"],
-    createUsingTemplate: [
-      "POST /repos/{template_owner}/{template_repo}/generate"
-    ],
-    createWebhook: ["POST /repos/{owner}/{repo}/hooks"],
-    declineInvitation: [
-      "DELETE /user/repository_invitations/{invitation_id}",
-      {},
-      { renamed: ["repos", "declineInvitationForAuthenticatedUser"] }
-    ],
-    declineInvitationForAuthenticatedUser: [
-      "DELETE /user/repository_invitations/{invitation_id}"
-    ],
-    delete: ["DELETE /repos/{owner}/{repo}"],
-    deleteAccessRestrictions: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"
-    ],
-    deleteAdminBranchProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
-    ],
-    deleteAnEnvironment: [
-      "DELETE /repos/{owner}/{repo}/environments/{environment_name}"
-    ],
-    deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],
-    deleteBranchProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection"
-    ],
-    deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
-    deleteCommitSignatureProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
-    ],
-    deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"],
-    deleteDeployment: [
-      "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"
-    ],
-    deleteDeploymentBranchPolicy: [
-      "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
-    ],
-    deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"],
-    deleteInvitation: [
-      "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"
-    ],
-    deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"],
-    deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"],
-    deletePullRequestReviewProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
-    ],
-    deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"],
-    deleteReleaseAsset: [
-      "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"
-    ],
-    deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
-    deleteTagProtection: [
-      "DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"
-    ],
-    deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],
-    disableAutomatedSecurityFixes: [
-      "DELETE /repos/{owner}/{repo}/automated-security-fixes"
-    ],
-    disableDeploymentProtectionRule: [
-      "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"
-    ],
-    disablePrivateVulnerabilityReporting: [
-      "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"
-    ],
-    disableVulnerabilityAlerts: [
-      "DELETE /repos/{owner}/{repo}/vulnerability-alerts"
-    ],
-    downloadArchive: [
-      "GET /repos/{owner}/{repo}/zipball/{ref}",
-      {},
-      { renamed: ["repos", "downloadZipballArchive"] }
-    ],
-    downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"],
-    downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"],
-    enableAutomatedSecurityFixes: [
-      "PUT /repos/{owner}/{repo}/automated-security-fixes"
-    ],
-    enablePrivateVulnerabilityReporting: [
-      "PUT /repos/{owner}/{repo}/private-vulnerability-reporting"
-    ],
-    enableVulnerabilityAlerts: [
-      "PUT /repos/{owner}/{repo}/vulnerability-alerts"
-    ],
-    generateReleaseNotes: [
-      "POST /repos/{owner}/{repo}/releases/generate-notes"
-    ],
-    get: ["GET /repos/{owner}/{repo}"],
-    getAccessRestrictions: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"
-    ],
-    getAdminBranchProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
-    ],
-    getAllDeploymentProtectionRules: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"
-    ],
-    getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"],
-    getAllStatusCheckContexts: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"
-    ],
-    getAllTopics: ["GET /repos/{owner}/{repo}/topics"],
-    getAppsWithAccessToProtectedBranch: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"
-    ],
-    getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],
-    getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"],
-    getBranchProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection"
-    ],
-    getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"],
-    getClones: ["GET /repos/{owner}/{repo}/traffic/clones"],
-    getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"],
-    getCollaboratorPermissionLevel: [
-      "GET /repos/{owner}/{repo}/collaborators/{username}/permission"
-    ],
-    getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"],
-    getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"],
-    getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"],
-    getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"],
-    getCommitSignatureProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
-    ],
-    getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"],
-    getContent: ["GET /repos/{owner}/{repo}/contents/{path}"],
-    getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"],
-    getCustomDeploymentProtectionRule: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"
-    ],
-    getCustomPropertiesValues: ["GET /repos/{owner}/{repo}/properties/values"],
-    getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
-    getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
-    getDeploymentBranchPolicy: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
-    ],
-    getDeploymentStatus: [
-      "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"
-    ],
-    getEnvironment: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}"
-    ],
-    getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
-    getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
-    getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],
-    getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"],
-    getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"],
-    getOrgRulesets: ["GET /orgs/{org}/rulesets"],
-    getPages: ["GET /repos/{owner}/{repo}/pages"],
-    getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],
-    getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"],
-    getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"],
-    getPullRequestReviewProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
-    ],
-    getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"],
-    getReadme: ["GET /repos/{owner}/{repo}/readme"],
-    getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"],
-    getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"],
-    getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],
-    getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"],
-    getRepoRuleSuite: [
-      "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"
-    ],
-    getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"],
-    getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
-    getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"],
-    getStatusChecksProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
-    ],
-    getTeamsWithAccessToProtectedBranch: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"
-    ],
-    getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"],
-    getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"],
-    getUsersWithAccessToProtectedBranch: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"
-    ],
-    getViews: ["GET /repos/{owner}/{repo}/traffic/views"],
-    getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"],
-    getWebhookConfigForRepo: [
-      "GET /repos/{owner}/{repo}/hooks/{hook_id}/config"
-    ],
-    getWebhookDelivery: [
-      "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"
-    ],
-    listActivities: ["GET /repos/{owner}/{repo}/activity"],
-    listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"],
-    listBranches: ["GET /repos/{owner}/{repo}/branches"],
-    listBranchesForHeadCommit: [
-      "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"
-    ],
-    listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"],
-    listCommentsForCommit: [
-      "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"
-    ],
-    listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"],
-    listCommitStatusesForRef: [
-      "GET /repos/{owner}/{repo}/commits/{ref}/statuses"
-    ],
-    listCommits: ["GET /repos/{owner}/{repo}/commits"],
-    listContributors: ["GET /repos/{owner}/{repo}/contributors"],
-    listCustomDeploymentRuleIntegrations: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"
-    ],
-    listDeployKeys: ["GET /repos/{owner}/{repo}/keys"],
-    listDeploymentBranchPolicies: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"
-    ],
-    listDeploymentStatuses: [
-      "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"
-    ],
-    listDeployments: ["GET /repos/{owner}/{repo}/deployments"],
-    listForAuthenticatedUser: ["GET /user/repos"],
-    listForOrg: ["GET /orgs/{org}/repos"],
-    listForUser: ["GET /users/{username}/repos"],
-    listForks: ["GET /repos/{owner}/{repo}/forks"],
-    listInvitations: ["GET /repos/{owner}/{repo}/invitations"],
-    listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"],
-    listLanguages: ["GET /repos/{owner}/{repo}/languages"],
-    listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"],
-    listPublic: ["GET /repositories"],
-    listPullRequestsAssociatedWithCommit: [
-      "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"
-    ],
-    listReleaseAssets: [
-      "GET /repos/{owner}/{repo}/releases/{release_id}/assets"
-    ],
-    listReleases: ["GET /repos/{owner}/{repo}/releases"],
-    listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"],
-    listTags: ["GET /repos/{owner}/{repo}/tags"],
-    listTeams: ["GET /repos/{owner}/{repo}/teams"],
-    listWebhookDeliveries: [
-      "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"
-    ],
-    listWebhooks: ["GET /repos/{owner}/{repo}/hooks"],
-    merge: ["POST /repos/{owner}/{repo}/merges"],
-    mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"],
-    pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],
-    redeliverWebhookDelivery: [
-      "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
-    ],
-    removeAppAccessRestrictions: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
-      {},
-      { mapToData: "apps" }
-    ],
-    removeCollaborator: [
-      "DELETE /repos/{owner}/{repo}/collaborators/{username}"
-    ],
-    removeStatusCheckContexts: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
-      {},
-      { mapToData: "contexts" }
-    ],
-    removeStatusCheckProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
-    ],
-    removeTeamAccessRestrictions: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
-      {},
-      { mapToData: "teams" }
-    ],
-    removeUserAccessRestrictions: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
-      {},
-      { mapToData: "users" }
-    ],
-    renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"],
-    replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"],
-    requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"],
-    setAdminBranchProtection: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
-    ],
-    setAppAccessRestrictions: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
-      {},
-      { mapToData: "apps" }
-    ],
-    setStatusCheckContexts: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
-      {},
-      { mapToData: "contexts" }
-    ],
-    setTeamAccessRestrictions: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
-      {},
-      { mapToData: "teams" }
-    ],
-    setUserAccessRestrictions: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
-      {},
-      { mapToData: "users" }
-    ],
-    testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],
-    transfer: ["POST /repos/{owner}/{repo}/transfer"],
-    update: ["PATCH /repos/{owner}/{repo}"],
-    updateBranchProtection: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection"
-    ],
-    updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],
-    updateDeploymentBranchPolicy: [
-      "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
-    ],
-    updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"],
-    updateInvitation: [
-      "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"
-    ],
-    updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"],
-    updatePullRequestReviewProtection: [
-      "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
-    ],
-    updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"],
-    updateReleaseAsset: [
-      "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"
-    ],
-    updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
-    updateStatusCheckPotection: [
-      "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",
-      {},
-      { renamed: ["repos", "updateStatusCheckProtection"] }
-    ],
-    updateStatusCheckProtection: [
-      "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
-    ],
-    updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],
-    updateWebhookConfigForRepo: [
-      "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"
-    ],
-    uploadReleaseAsset: [
-      "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",
-      { baseUrl: "https://uploads.github.com" }
-    ]
-  },
-  search: {
-    code: ["GET /search/code"],
-    commits: ["GET /search/commits"],
-    issuesAndPullRequests: ["GET /search/issues"],
-    labels: ["GET /search/labels"],
-    repos: ["GET /search/repositories"],
-    topics: ["GET /search/topics"],
-    users: ["GET /search/users"]
-  },
-  secretScanning: {
-    getAlert: [
-      "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"
-    ],
-    listAlertsForEnterprise: [
-      "GET /enterprises/{enterprise}/secret-scanning/alerts"
-    ],
-    listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"],
-    listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"],
-    listLocationsForAlert: [
-      "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"
-    ],
-    updateAlert: [
-      "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"
-    ]
-  },
-  securityAdvisories: {
-    createPrivateVulnerabilityReport: [
-      "POST /repos/{owner}/{repo}/security-advisories/reports"
-    ],
-    createRepositoryAdvisory: [
-      "POST /repos/{owner}/{repo}/security-advisories"
-    ],
-    createRepositoryAdvisoryCveRequest: [
-      "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"
-    ],
-    getGlobalAdvisory: ["GET /advisories/{ghsa_id}"],
-    getRepositoryAdvisory: [
-      "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"
-    ],
-    listGlobalAdvisories: ["GET /advisories"],
-    listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"],
-    listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"],
-    updateRepositoryAdvisory: [
-      "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"
-    ]
-  },
-  teams: {
-    addOrUpdateMembershipForUserInOrg: [
-      "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"
-    ],
-    addOrUpdateProjectPermissionsInOrg: [
-      "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"
-    ],
-    addOrUpdateRepoPermissionsInOrg: [
-      "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
-    ],
-    checkPermissionsForProjectInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"
-    ],
-    checkPermissionsForRepoInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
-    ],
-    create: ["POST /orgs/{org}/teams"],
-    createDiscussionCommentInOrg: [
-      "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"
-    ],
-    createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"],
-    deleteDiscussionCommentInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
-    ],
-    deleteDiscussionInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
-    ],
-    deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"],
-    getByName: ["GET /orgs/{org}/teams/{team_slug}"],
-    getDiscussionCommentInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
-    ],
-    getDiscussionInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
-    ],
-    getMembershipForUserInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/memberships/{username}"
-    ],
-    list: ["GET /orgs/{org}/teams"],
-    listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"],
-    listDiscussionCommentsInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"
-    ],
-    listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"],
-    listForAuthenticatedUser: ["GET /user/teams"],
-    listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"],
-    listPendingInvitationsInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/invitations"
-    ],
-    listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"],
-    listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
-    removeMembershipForUserInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"
-    ],
-    removeProjectInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"
-    ],
-    removeRepoInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
-    ],
-    updateDiscussionCommentInOrg: [
-      "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
-    ],
-    updateDiscussionInOrg: [
-      "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
-    ],
-    updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"]
-  },
-  users: {
-    addEmailForAuthenticated: [
-      "POST /user/emails",
-      {},
-      { renamed: ["users", "addEmailForAuthenticatedUser"] }
-    ],
-    addEmailForAuthenticatedUser: ["POST /user/emails"],
-    addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"],
-    block: ["PUT /user/blocks/{username}"],
-    checkBlocked: ["GET /user/blocks/{username}"],
-    checkFollowingForUser: ["GET /users/{username}/following/{target_user}"],
-    checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"],
-    createGpgKeyForAuthenticated: [
-      "POST /user/gpg_keys",
-      {},
-      { renamed: ["users", "createGpgKeyForAuthenticatedUser"] }
-    ],
-    createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"],
-    createPublicSshKeyForAuthenticated: [
-      "POST /user/keys",
-      {},
-      { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] }
-    ],
-    createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"],
-    createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"],
-    deleteEmailForAuthenticated: [
-      "DELETE /user/emails",
-      {},
-      { renamed: ["users", "deleteEmailForAuthenticatedUser"] }
-    ],
-    deleteEmailForAuthenticatedUser: ["DELETE /user/emails"],
-    deleteGpgKeyForAuthenticated: [
-      "DELETE /user/gpg_keys/{gpg_key_id}",
-      {},
-      { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] }
-    ],
-    deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"],
-    deletePublicSshKeyForAuthenticated: [
-      "DELETE /user/keys/{key_id}",
-      {},
-      { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] }
-    ],
-    deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"],
-    deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"],
-    deleteSshSigningKeyForAuthenticatedUser: [
-      "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"
-    ],
-    follow: ["PUT /user/following/{username}"],
-    getAuthenticated: ["GET /user"],
-    getByUsername: ["GET /users/{username}"],
-    getContextForUser: ["GET /users/{username}/hovercard"],
-    getGpgKeyForAuthenticated: [
-      "GET /user/gpg_keys/{gpg_key_id}",
-      {},
-      { renamed: ["users", "getGpgKeyForAuthenticatedUser"] }
-    ],
-    getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"],
-    getPublicSshKeyForAuthenticated: [
-      "GET /user/keys/{key_id}",
-      {},
-      { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] }
-    ],
-    getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"],
-    getSshSigningKeyForAuthenticatedUser: [
-      "GET /user/ssh_signing_keys/{ssh_signing_key_id}"
-    ],
-    list: ["GET /users"],
-    listBlockedByAuthenticated: [
-      "GET /user/blocks",
-      {},
-      { renamed: ["users", "listBlockedByAuthenticatedUser"] }
-    ],
-    listBlockedByAuthenticatedUser: ["GET /user/blocks"],
-    listEmailsForAuthenticated: [
-      "GET /user/emails",
-      {},
-      { renamed: ["users", "listEmailsForAuthenticatedUser"] }
-    ],
-    listEmailsForAuthenticatedUser: ["GET /user/emails"],
-    listFollowedByAuthenticated: [
-      "GET /user/following",
-      {},
-      { renamed: ["users", "listFollowedByAuthenticatedUser"] }
-    ],
-    listFollowedByAuthenticatedUser: ["GET /user/following"],
-    listFollowersForAuthenticatedUser: ["GET /user/followers"],
-    listFollowersForUser: ["GET /users/{username}/followers"],
-    listFollowingForUser: ["GET /users/{username}/following"],
-    listGpgKeysForAuthenticated: [
-      "GET /user/gpg_keys",
-      {},
-      { renamed: ["users", "listGpgKeysForAuthenticatedUser"] }
-    ],
-    listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"],
-    listGpgKeysForUser: ["GET /users/{username}/gpg_keys"],
-    listPublicEmailsForAuthenticated: [
-      "GET /user/public_emails",
-      {},
-      { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] }
-    ],
-    listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"],
-    listPublicKeysForUser: ["GET /users/{username}/keys"],
-    listPublicSshKeysForAuthenticated: [
-      "GET /user/keys",
-      {},
-      { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] }
-    ],
-    listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"],
-    listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"],
-    listSocialAccountsForUser: ["GET /users/{username}/social_accounts"],
-    listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"],
-    listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"],
-    setPrimaryEmailVisibilityForAuthenticated: [
-      "PATCH /user/email/visibility",
-      {},
-      { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] }
-    ],
-    setPrimaryEmailVisibilityForAuthenticatedUser: [
-      "PATCH /user/email/visibility"
-    ],
-    unblock: ["DELETE /user/blocks/{username}"],
-    unfollow: ["DELETE /user/following/{username}"],
-    updateAuthenticated: ["PATCH /user"]
-  }
-};
-var endpoints_default = Endpoints;
-
-// pkg/dist-src/endpoints-to-methods.js
-var endpointMethodsMap = /* @__PURE__ */ new Map();
-for (const [scope, endpoints] of Object.entries(endpoints_default)) {
-  for (const [methodName, endpoint] of Object.entries(endpoints)) {
-    const [route, defaults, decorations] = endpoint;
-    const [method, url] = route.split(/ /);
-    const endpointDefaults = Object.assign(
-      {
-        method,
-        url
-      },
-      defaults
-    );
-    if (!endpointMethodsMap.has(scope)) {
-      endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());
-    }
-    endpointMethodsMap.get(scope).set(methodName, {
-      scope,
-      methodName,
-      endpointDefaults,
-      decorations
-    });
-  }
-}
-var handler = {
-  has({ scope }, methodName) {
-    return endpointMethodsMap.get(scope).has(methodName);
-  },
-  getOwnPropertyDescriptor(target, methodName) {
-    return {
-      value: this.get(target, methodName),
-      // ensures method is in the cache
-      configurable: true,
-      writable: true,
-      enumerable: true
-    };
-  },
-  defineProperty(target, methodName, descriptor) {
-    Object.defineProperty(target.cache, methodName, descriptor);
-    return true;
-  },
-  deleteProperty(target, methodName) {
-    delete target.cache[methodName];
-    return true;
-  },
-  ownKeys({ scope }) {
-    return [...endpointMethodsMap.get(scope).keys()];
-  },
-  set(target, methodName, value) {
-    return target.cache[methodName] = value;
-  },
-  get({ octokit, scope, cache }, methodName) {
-    if (cache[methodName]) {
-      return cache[methodName];
-    }
-    const method = endpointMethodsMap.get(scope).get(methodName);
-    if (!method) {
-      return void 0;
-    }
-    const { endpointDefaults, decorations } = method;
-    if (decorations) {
-      cache[methodName] = decorate(
-        octokit,
-        scope,
-        methodName,
-        endpointDefaults,
-        decorations
-      );
-    } else {
-      cache[methodName] = octokit.request.defaults(endpointDefaults);
-    }
-    return cache[methodName];
-  }
-};
-function endpointsToMethods(octokit) {
-  const newMethods = {};
-  for (const scope of endpointMethodsMap.keys()) {
-    newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);
-  }
-  return newMethods;
-}
-function decorate(octokit, scope, methodName, defaults, decorations) {
-  const requestWithDefaults = octokit.request.defaults(defaults);
-  function withDecorations(...args) {
-    let options = requestWithDefaults.endpoint.merge(...args);
-    if (decorations.mapToData) {
-      options = Object.assign({}, options, {
-        data: options[decorations.mapToData],
-        [decorations.mapToData]: void 0
-      });
-      return requestWithDefaults(options);
-    }
-    if (decorations.renamed) {
-      const [newScope, newMethodName] = decorations.renamed;
-      octokit.log.warn(
-        `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`
-      );
-    }
-    if (decorations.deprecated) {
-      octokit.log.warn(decorations.deprecated);
-    }
-    if (decorations.renamedParameters) {
-      const options2 = requestWithDefaults.endpoint.merge(...args);
-      for (const [name, alias] of Object.entries(
-        decorations.renamedParameters
-      )) {
-        if (name in options2) {
-          octokit.log.warn(
-            `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`
-          );
-          if (!(alias in options2)) {
-            options2[alias] = options2[name];
-          }
-          delete options2[name];
-        }
-      }
-      return requestWithDefaults(options2);
-    }
-    return requestWithDefaults(...args);
-  }
-  return Object.assign(withDecorations, requestWithDefaults);
-}
-
-// pkg/dist-src/index.js
-function restEndpointMethods(octokit) {
-  const api = endpointsToMethods(octokit);
-  return {
-    rest: api
-  };
-}
-restEndpointMethods.VERSION = VERSION;
-function legacyRestEndpointMethods(octokit) {
-  const api = endpointsToMethods(octokit);
-  return {
-    ...api,
-    rest: api
-  };
-}
-legacyRestEndpointMethods.VERSION = VERSION;
-// Annotate the CommonJS export names for ESM import in node:
-0 && (module.exports = {
-  legacyRestEndpointMethods,
-  restEndpointMethods
-});
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map
deleted file mode 100644
index a5a8265..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/index.js", "../dist-src/version.js", "../dist-src/generated/endpoints.js", "../dist-src/endpoints-to-methods.js"],
-  "sourcesContent": ["import { VERSION } from \"./version.js\";\nimport { endpointsToMethods } from \"./endpoints-to-methods.js\";\nfunction restEndpointMethods(octokit) {\n  const api = endpointsToMethods(octokit);\n  return {\n    rest: api\n  };\n}\nrestEndpointMethods.VERSION = VERSION;\nfunction legacyRestEndpointMethods(octokit) {\n  const api = endpointsToMethods(octokit);\n  return {\n    ...api,\n    rest: api\n  };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\nexport {\n  legacyRestEndpointMethods,\n  restEndpointMethods\n};\n", "const VERSION = \"10.2.0\";\nexport {\n  VERSION\n};\n", "const Endpoints = {\n  actions: {\n    addCustomLabelsToSelfHostedRunnerForOrg: [\n      \"POST /orgs/{org}/actions/runners/{runner_id}/labels\"\n    ],\n    addCustomLabelsToSelfHostedRunnerForRepo: [\n      \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n    ],\n    addSelectedRepoToOrgSecret: [\n      \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    addSelectedRepoToOrgVariable: [\n      \"PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n    ],\n    approveWorkflowRun: [\n      \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\"\n    ],\n    cancelWorkflowRun: [\n      \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\"\n    ],\n    createEnvironmentVariable: [\n      \"POST /repositories/{repository_id}/environments/{environment_name}/variables\"\n    ],\n    createOrUpdateEnvironmentSecret: [\n      \"PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n    ],\n    createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n    createOrUpdateRepoSecret: [\n      \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n    ],\n    createOrgVariable: [\"POST /orgs/{org}/actions/variables\"],\n    createRegistrationTokenForOrg: [\n      \"POST /orgs/{org}/actions/runners/registration-token\"\n    ],\n    createRegistrationTokenForRepo: [\n      \"POST /repos/{owner}/{repo}/actions/runners/registration-token\"\n    ],\n    createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n    createRemoveTokenForRepo: [\n      \"POST /repos/{owner}/{repo}/actions/runners/remove-token\"\n    ],\n    createRepoVariable: [\"POST /repos/{owner}/{repo}/actions/variables\"],\n    createWorkflowDispatch: [\n      \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\"\n    ],\n    deleteActionsCacheById: [\n      \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\"\n    ],\n    deleteActionsCacheByKey: [\n      \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\"\n    ],\n    deleteArtifact: [\n      \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"\n    ],\n    deleteEnvironmentSecret: [\n      \"DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n    ],\n    deleteEnvironmentVariable: [\n      \"DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n    ],\n    deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n    deleteOrgVariable: [\"DELETE /orgs/{org}/actions/variables/{name}\"],\n    deleteRepoSecret: [\n      \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n    ],\n    deleteRepoVariable: [\n      \"DELETE /repos/{owner}/{repo}/actions/variables/{name}\"\n    ],\n    deleteSelfHostedRunnerFromOrg: [\n      \"DELETE /orgs/{org}/actions/runners/{runner_id}\"\n    ],\n    deleteSelfHostedRunnerFromRepo: [\n      \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n    ],\n    deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n    deleteWorkflowRunLogs: [\n      \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n    ],\n    disableSelectedRepositoryGithubActionsOrganization: [\n      \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n    ],\n    disableWorkflow: [\n      \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\"\n    ],\n    downloadArtifact: [\n      \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\"\n    ],\n    downloadJobLogsForWorkflowRun: [\n      \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\"\n    ],\n    downloadWorkflowRunAttemptLogs: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\"\n    ],\n    downloadWorkflowRunLogs: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n    ],\n    enableSelectedRepositoryGithubActionsOrganization: [\n      \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n    ],\n    enableWorkflow: [\n      \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\"\n    ],\n    forceCancelWorkflowRun: [\n      \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel\"\n    ],\n    generateRunnerJitconfigForOrg: [\n      \"POST /orgs/{org}/actions/runners/generate-jitconfig\"\n    ],\n    generateRunnerJitconfigForRepo: [\n      \"POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig\"\n    ],\n    getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n    getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n    getActionsCacheUsageByRepoForOrg: [\n      \"GET /orgs/{org}/actions/cache/usage-by-repository\"\n    ],\n    getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n    getAllowedActionsOrganization: [\n      \"GET /orgs/{org}/actions/permissions/selected-actions\"\n    ],\n    getAllowedActionsRepository: [\n      \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n    ],\n    getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n    getEnvironmentPublicKey: [\n      \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key\"\n    ],\n    getEnvironmentSecret: [\n      \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n    ],\n    getEnvironmentVariable: [\n      \"GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n    ],\n    getGithubActionsDefaultWorkflowPermissionsOrganization: [\n      \"GET /orgs/{org}/actions/permissions/workflow\"\n    ],\n    getGithubActionsDefaultWorkflowPermissionsRepository: [\n      \"GET /repos/{owner}/{repo}/actions/permissions/workflow\"\n    ],\n    getGithubActionsPermissionsOrganization: [\n      \"GET /orgs/{org}/actions/permissions\"\n    ],\n    getGithubActionsPermissionsRepository: [\n      \"GET /repos/{owner}/{repo}/actions/permissions\"\n    ],\n    getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n    getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n    getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n    getOrgVariable: [\"GET /orgs/{org}/actions/variables/{name}\"],\n    getPendingDeploymentsForRun: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n    ],\n    getRepoPermissions: [\n      \"GET /repos/{owner}/{repo}/actions/permissions\",\n      {},\n      { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] }\n    ],\n    getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n    getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n    getRepoVariable: [\"GET /repos/{owner}/{repo}/actions/variables/{name}\"],\n    getReviewsForRun: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\"\n    ],\n    getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n    getSelfHostedRunnerForRepo: [\n      \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n    ],\n    getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n    getWorkflowAccessToRepository: [\n      \"GET /repos/{owner}/{repo}/actions/permissions/access\"\n    ],\n    getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n    getWorkflowRunAttempt: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\"\n    ],\n    getWorkflowRunUsage: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\"\n    ],\n    getWorkflowUsage: [\n      \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\"\n    ],\n    listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n    listEnvironmentSecrets: [\n      \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\"\n    ],\n    listEnvironmentVariables: [\n      \"GET /repositories/{repository_id}/environments/{environment_name}/variables\"\n    ],\n    listJobsForWorkflowRun: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\"\n    ],\n    listJobsForWorkflowRunAttempt: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\"\n    ],\n    listLabelsForSelfHostedRunnerForOrg: [\n      \"GET /orgs/{org}/actions/runners/{runner_id}/labels\"\n    ],\n    listLabelsForSelfHostedRunnerForRepo: [\n      \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n    ],\n    listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n    listOrgVariables: [\"GET /orgs/{org}/actions/variables\"],\n    listRepoOrganizationSecrets: [\n      \"GET /repos/{owner}/{repo}/actions/organization-secrets\"\n    ],\n    listRepoOrganizationVariables: [\n      \"GET /repos/{owner}/{repo}/actions/organization-variables\"\n    ],\n    listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n    listRepoVariables: [\"GET /repos/{owner}/{repo}/actions/variables\"],\n    listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n    listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n    listRunnerApplicationsForRepo: [\n      \"GET /repos/{owner}/{repo}/actions/runners/downloads\"\n    ],\n    listSelectedReposForOrgSecret: [\n      \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n    ],\n    listSelectedReposForOrgVariable: [\n      \"GET /orgs/{org}/actions/variables/{name}/repositories\"\n    ],\n    listSelectedRepositoriesEnabledGithubActionsOrganization: [\n      \"GET /orgs/{org}/actions/permissions/repositories\"\n    ],\n    listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n    listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n    listWorkflowRunArtifacts: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\"\n    ],\n    listWorkflowRuns: [\n      \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\"\n    ],\n    listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n    reRunJobForWorkflowRun: [\n      \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\"\n    ],\n    reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n    reRunWorkflowFailedJobs: [\n      \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\"\n    ],\n    removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n      \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\"\n    ],\n    removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n      \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n    ],\n    removeCustomLabelFromSelfHostedRunnerForOrg: [\n      \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\"\n    ],\n    removeCustomLabelFromSelfHostedRunnerForRepo: [\n      \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\"\n    ],\n    removeSelectedRepoFromOrgSecret: [\n      \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    removeSelectedRepoFromOrgVariable: [\n      \"DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n    ],\n    reviewCustomGatesForRun: [\n      \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule\"\n    ],\n    reviewPendingDeploymentsForRun: [\n      \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n    ],\n    setAllowedActionsOrganization: [\n      \"PUT /orgs/{org}/actions/permissions/selected-actions\"\n    ],\n    setAllowedActionsRepository: [\n      \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n    ],\n    setCustomLabelsForSelfHostedRunnerForOrg: [\n      \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\"\n    ],\n    setCustomLabelsForSelfHostedRunnerForRepo: [\n      \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n    ],\n    setGithubActionsDefaultWorkflowPermissionsOrganization: [\n      \"PUT /orgs/{org}/actions/permissions/workflow\"\n    ],\n    setGithubActionsDefaultWorkflowPermissionsRepository: [\n      \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\"\n    ],\n    setGithubActionsPermissionsOrganization: [\n      \"PUT /orgs/{org}/actions/permissions\"\n    ],\n    setGithubActionsPermissionsRepository: [\n      \"PUT /repos/{owner}/{repo}/actions/permissions\"\n    ],\n    setSelectedReposForOrgSecret: [\n      \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n    ],\n    setSelectedReposForOrgVariable: [\n      \"PUT /orgs/{org}/actions/variables/{name}/repositories\"\n    ],\n    setSelectedRepositoriesEnabledGithubActionsOrganization: [\n      \"PUT /orgs/{org}/actions/permissions/repositories\"\n    ],\n    setWorkflowAccessToRepository: [\n      \"PUT /repos/{owner}/{repo}/actions/permissions/access\"\n    ],\n    updateEnvironmentVariable: [\n      \"PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n    ],\n    updateOrgVariable: [\"PATCH /orgs/{org}/actions/variables/{name}\"],\n    updateRepoVariable: [\n      \"PATCH /repos/{owner}/{repo}/actions/variables/{name}\"\n    ]\n  },\n  activity: {\n    checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n    deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n    deleteThreadSubscription: [\n      \"DELETE /notifications/threads/{thread_id}/subscription\"\n    ],\n    getFeeds: [\"GET /feeds\"],\n    getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n    getThread: [\"GET /notifications/threads/{thread_id}\"],\n    getThreadSubscriptionForAuthenticatedUser: [\n      \"GET /notifications/threads/{thread_id}/subscription\"\n    ],\n    listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n    listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n    listOrgEventsForAuthenticatedUser: [\n      \"GET /users/{username}/events/orgs/{org}\"\n    ],\n    listPublicEvents: [\"GET /events\"],\n    listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n    listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n    listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n    listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n    listReceivedPublicEventsForUser: [\n      \"GET /users/{username}/received_events/public\"\n    ],\n    listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n    listRepoNotificationsForAuthenticatedUser: [\n      \"GET /repos/{owner}/{repo}/notifications\"\n    ],\n    listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n    listReposStarredByUser: [\"GET /users/{username}/starred\"],\n    listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n    listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n    listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n    listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n    markNotificationsAsRead: [\"PUT /notifications\"],\n    markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n    markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n    setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n    setThreadSubscription: [\n      \"PUT /notifications/threads/{thread_id}/subscription\"\n    ],\n    starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n    unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"]\n  },\n  apps: {\n    addRepoToInstallation: [\n      \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n      {},\n      { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] }\n    ],\n    addRepoToInstallationForAuthenticatedUser: [\n      \"PUT /user/installations/{installation_id}/repositories/{repository_id}\"\n    ],\n    checkToken: [\"POST /applications/{client_id}/token\"],\n    createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n    createInstallationAccessToken: [\n      \"POST /app/installations/{installation_id}/access_tokens\"\n    ],\n    deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n    deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n    deleteToken: [\"DELETE /applications/{client_id}/token\"],\n    getAuthenticated: [\"GET /app\"],\n    getBySlug: [\"GET /apps/{app_slug}\"],\n    getInstallation: [\"GET /app/installations/{installation_id}\"],\n    getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n    getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n    getSubscriptionPlanForAccount: [\n      \"GET /marketplace_listing/accounts/{account_id}\"\n    ],\n    getSubscriptionPlanForAccountStubbed: [\n      \"GET /marketplace_listing/stubbed/accounts/{account_id}\"\n    ],\n    getUserInstallation: [\"GET /users/{username}/installation\"],\n    getWebhookConfigForApp: [\"GET /app/hook/config\"],\n    getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n    listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n    listAccountsForPlanStubbed: [\n      \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\"\n    ],\n    listInstallationReposForAuthenticatedUser: [\n      \"GET /user/installations/{installation_id}/repositories\"\n    ],\n    listInstallationRequestsForAuthenticatedApp: [\n      \"GET /app/installation-requests\"\n    ],\n    listInstallations: [\"GET /app/installations\"],\n    listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n    listPlans: [\"GET /marketplace_listing/plans\"],\n    listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n    listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n    listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n    listSubscriptionsForAuthenticatedUserStubbed: [\n      \"GET /user/marketplace_purchases/stubbed\"\n    ],\n    listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n    redeliverWebhookDelivery: [\n      \"POST /app/hook/deliveries/{delivery_id}/attempts\"\n    ],\n    removeRepoFromInstallation: [\n      \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n      {},\n      { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] }\n    ],\n    removeRepoFromInstallationForAuthenticatedUser: [\n      \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\"\n    ],\n    resetToken: [\"PATCH /applications/{client_id}/token\"],\n    revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n    scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n    suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n    unsuspendInstallation: [\n      \"DELETE /app/installations/{installation_id}/suspended\"\n    ],\n    updateWebhookConfigForApp: [\"PATCH /app/hook/config\"]\n  },\n  billing: {\n    getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n    getGithubActionsBillingUser: [\n      \"GET /users/{username}/settings/billing/actions\"\n    ],\n    getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n    getGithubPackagesBillingUser: [\n      \"GET /users/{username}/settings/billing/packages\"\n    ],\n    getSharedStorageBillingOrg: [\n      \"GET /orgs/{org}/settings/billing/shared-storage\"\n    ],\n    getSharedStorageBillingUser: [\n      \"GET /users/{username}/settings/billing/shared-storage\"\n    ]\n  },\n  checks: {\n    create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n    createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n    get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n    getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n    listAnnotations: [\n      \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\"\n    ],\n    listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n    listForSuite: [\n      \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\"\n    ],\n    listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n    rerequestRun: [\n      \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\"\n    ],\n    rerequestSuite: [\n      \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\"\n    ],\n    setSuitesPreferences: [\n      \"PATCH /repos/{owner}/{repo}/check-suites/preferences\"\n    ],\n    update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"]\n  },\n  codeScanning: {\n    deleteAnalysis: [\n      \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\"\n    ],\n    getAlert: [\n      \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n      {},\n      { renamedParameters: { alert_id: \"alert_number\" } }\n    ],\n    getAnalysis: [\n      \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\"\n    ],\n    getCodeqlDatabase: [\n      \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\"\n    ],\n    getDefaultSetup: [\"GET /repos/{owner}/{repo}/code-scanning/default-setup\"],\n    getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n    listAlertInstances: [\n      \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\"\n    ],\n    listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n    listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n    listAlertsInstances: [\n      \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n      {},\n      { renamed: [\"codeScanning\", \"listAlertInstances\"] }\n    ],\n    listCodeqlDatabases: [\n      \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases\"\n    ],\n    listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n    updateAlert: [\n      \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\"\n    ],\n    updateDefaultSetup: [\n      \"PATCH /repos/{owner}/{repo}/code-scanning/default-setup\"\n    ],\n    uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"]\n  },\n  codesOfConduct: {\n    getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n    getConductCode: [\"GET /codes_of_conduct/{key}\"]\n  },\n  codespaces: {\n    addRepositoryForSecretForAuthenticatedUser: [\n      \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    addSelectedRepoToOrgSecret: [\n      \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    checkPermissionsForDevcontainer: [\n      \"GET /repos/{owner}/{repo}/codespaces/permissions_check\"\n    ],\n    codespaceMachinesForAuthenticatedUser: [\n      \"GET /user/codespaces/{codespace_name}/machines\"\n    ],\n    createForAuthenticatedUser: [\"POST /user/codespaces\"],\n    createOrUpdateOrgSecret: [\n      \"PUT /orgs/{org}/codespaces/secrets/{secret_name}\"\n    ],\n    createOrUpdateRepoSecret: [\n      \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n    ],\n    createOrUpdateSecretForAuthenticatedUser: [\n      \"PUT /user/codespaces/secrets/{secret_name}\"\n    ],\n    createWithPrForAuthenticatedUser: [\n      \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\"\n    ],\n    createWithRepoForAuthenticatedUser: [\n      \"POST /repos/{owner}/{repo}/codespaces\"\n    ],\n    deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n    deleteFromOrganization: [\n      \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\"\n    ],\n    deleteOrgSecret: [\"DELETE /orgs/{org}/codespaces/secrets/{secret_name}\"],\n    deleteRepoSecret: [\n      \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n    ],\n    deleteSecretForAuthenticatedUser: [\n      \"DELETE /user/codespaces/secrets/{secret_name}\"\n    ],\n    exportForAuthenticatedUser: [\n      \"POST /user/codespaces/{codespace_name}/exports\"\n    ],\n    getCodespacesForUserInOrg: [\n      \"GET /orgs/{org}/members/{username}/codespaces\"\n    ],\n    getExportDetailsForAuthenticatedUser: [\n      \"GET /user/codespaces/{codespace_name}/exports/{export_id}\"\n    ],\n    getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n    getOrgPublicKey: [\"GET /orgs/{org}/codespaces/secrets/public-key\"],\n    getOrgSecret: [\"GET /orgs/{org}/codespaces/secrets/{secret_name}\"],\n    getPublicKeyForAuthenticatedUser: [\n      \"GET /user/codespaces/secrets/public-key\"\n    ],\n    getRepoPublicKey: [\n      \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\"\n    ],\n    getRepoSecret: [\n      \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n    ],\n    getSecretForAuthenticatedUser: [\n      \"GET /user/codespaces/secrets/{secret_name}\"\n    ],\n    listDevcontainersInRepositoryForAuthenticatedUser: [\n      \"GET /repos/{owner}/{repo}/codespaces/devcontainers\"\n    ],\n    listForAuthenticatedUser: [\"GET /user/codespaces\"],\n    listInOrganization: [\n      \"GET /orgs/{org}/codespaces\",\n      {},\n      { renamedParameters: { org_id: \"org\" } }\n    ],\n    listInRepositoryForAuthenticatedUser: [\n      \"GET /repos/{owner}/{repo}/codespaces\"\n    ],\n    listOrgSecrets: [\"GET /orgs/{org}/codespaces/secrets\"],\n    listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n    listRepositoriesForSecretForAuthenticatedUser: [\n      \"GET /user/codespaces/secrets/{secret_name}/repositories\"\n    ],\n    listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n    listSelectedReposForOrgSecret: [\n      \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n    ],\n    preFlightWithRepoForAuthenticatedUser: [\n      \"GET /repos/{owner}/{repo}/codespaces/new\"\n    ],\n    publishForAuthenticatedUser: [\n      \"POST /user/codespaces/{codespace_name}/publish\"\n    ],\n    removeRepositoryForSecretForAuthenticatedUser: [\n      \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    removeSelectedRepoFromOrgSecret: [\n      \"DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    repoMachinesForAuthenticatedUser: [\n      \"GET /repos/{owner}/{repo}/codespaces/machines\"\n    ],\n    setRepositoriesForSecretForAuthenticatedUser: [\n      \"PUT /user/codespaces/secrets/{secret_name}/repositories\"\n    ],\n    setSelectedReposForOrgSecret: [\n      \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n    ],\n    startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n    stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n    stopInOrganization: [\n      \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\"\n    ],\n    updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"]\n  },\n  copilot: {\n    addCopilotForBusinessSeatsForTeams: [\n      \"POST /orgs/{org}/copilot/billing/selected_teams\"\n    ],\n    addCopilotForBusinessSeatsForUsers: [\n      \"POST /orgs/{org}/copilot/billing/selected_users\"\n    ],\n    cancelCopilotSeatAssignmentForTeams: [\n      \"DELETE /orgs/{org}/copilot/billing/selected_teams\"\n    ],\n    cancelCopilotSeatAssignmentForUsers: [\n      \"DELETE /orgs/{org}/copilot/billing/selected_users\"\n    ],\n    getCopilotOrganizationDetails: [\"GET /orgs/{org}/copilot/billing\"],\n    getCopilotSeatDetailsForUser: [\n      \"GET /orgs/{org}/members/{username}/copilot\"\n    ],\n    listCopilotSeats: [\"GET /orgs/{org}/copilot/billing/seats\"]\n  },\n  dependabot: {\n    addSelectedRepoToOrgSecret: [\n      \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    createOrUpdateOrgSecret: [\n      \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\"\n    ],\n    createOrUpdateRepoSecret: [\n      \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n    ],\n    deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n    deleteRepoSecret: [\n      \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n    ],\n    getAlert: [\"GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"],\n    getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n    getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n    getRepoPublicKey: [\n      \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\"\n    ],\n    getRepoSecret: [\n      \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n    ],\n    listAlertsForEnterprise: [\n      \"GET /enterprises/{enterprise}/dependabot/alerts\"\n    ],\n    listAlertsForOrg: [\"GET /orgs/{org}/dependabot/alerts\"],\n    listAlertsForRepo: [\"GET /repos/{owner}/{repo}/dependabot/alerts\"],\n    listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n    listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n    listSelectedReposForOrgSecret: [\n      \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n    ],\n    removeSelectedRepoFromOrgSecret: [\n      \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    setSelectedReposForOrgSecret: [\n      \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n    ],\n    updateAlert: [\n      \"PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"\n    ]\n  },\n  dependencyGraph: {\n    createRepositorySnapshot: [\n      \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\"\n    ],\n    diffRange: [\n      \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\"\n    ],\n    exportSbom: [\"GET /repos/{owner}/{repo}/dependency-graph/sbom\"]\n  },\n  emojis: { get: [\"GET /emojis\"] },\n  gists: {\n    checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n    create: [\"POST /gists\"],\n    createComment: [\"POST /gists/{gist_id}/comments\"],\n    delete: [\"DELETE /gists/{gist_id}\"],\n    deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n    fork: [\"POST /gists/{gist_id}/forks\"],\n    get: [\"GET /gists/{gist_id}\"],\n    getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n    getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n    list: [\"GET /gists\"],\n    listComments: [\"GET /gists/{gist_id}/comments\"],\n    listCommits: [\"GET /gists/{gist_id}/commits\"],\n    listForUser: [\"GET /users/{username}/gists\"],\n    listForks: [\"GET /gists/{gist_id}/forks\"],\n    listPublic: [\"GET /gists/public\"],\n    listStarred: [\"GET /gists/starred\"],\n    star: [\"PUT /gists/{gist_id}/star\"],\n    unstar: [\"DELETE /gists/{gist_id}/star\"],\n    update: [\"PATCH /gists/{gist_id}\"],\n    updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"]\n  },\n  git: {\n    createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n    createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n    createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n    createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n    createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n    deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n    getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n    getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n    getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n    getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n    getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n    listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n    updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"]\n  },\n  gitignore: {\n    getAllTemplates: [\"GET /gitignore/templates\"],\n    getTemplate: [\"GET /gitignore/templates/{name}\"]\n  },\n  interactions: {\n    getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n    getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n    getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n    getRestrictionsForYourPublicRepos: [\n      \"GET /user/interaction-limits\",\n      {},\n      { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] }\n    ],\n    removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n    removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n    removeRestrictionsForRepo: [\n      \"DELETE /repos/{owner}/{repo}/interaction-limits\"\n    ],\n    removeRestrictionsForYourPublicRepos: [\n      \"DELETE /user/interaction-limits\",\n      {},\n      { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] }\n    ],\n    setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n    setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n    setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n    setRestrictionsForYourPublicRepos: [\n      \"PUT /user/interaction-limits\",\n      {},\n      { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] }\n    ]\n  },\n  issues: {\n    addAssignees: [\n      \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n    ],\n    addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n    checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n    checkUserCanBeAssignedToIssue: [\n      \"GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}\"\n    ],\n    create: [\"POST /repos/{owner}/{repo}/issues\"],\n    createComment: [\n      \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\"\n    ],\n    createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n    createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n    deleteComment: [\n      \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\"\n    ],\n    deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n    deleteMilestone: [\n      \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\"\n    ],\n    get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n    getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n    getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n    getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n    getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n    list: [\"GET /issues\"],\n    listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n    listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n    listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n    listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n    listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n    listEventsForTimeline: [\n      \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\"\n    ],\n    listForAuthenticatedUser: [\"GET /user/issues\"],\n    listForOrg: [\"GET /orgs/{org}/issues\"],\n    listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n    listLabelsForMilestone: [\n      \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\"\n    ],\n    listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n    listLabelsOnIssue: [\n      \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n    ],\n    listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n    lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n    removeAllLabels: [\n      \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n    ],\n    removeAssignees: [\n      \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n    ],\n    removeLabel: [\n      \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\"\n    ],\n    setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n    unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n    update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n    updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n    updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n    updateMilestone: [\n      \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\"\n    ]\n  },\n  licenses: {\n    get: [\"GET /licenses/{license}\"],\n    getAllCommonlyUsed: [\"GET /licenses\"],\n    getForRepo: [\"GET /repos/{owner}/{repo}/license\"]\n  },\n  markdown: {\n    render: [\"POST /markdown\"],\n    renderRaw: [\n      \"POST /markdown/raw\",\n      { headers: { \"content-type\": \"text/plain; charset=utf-8\" } }\n    ]\n  },\n  meta: {\n    get: [\"GET /meta\"],\n    getAllVersions: [\"GET /versions\"],\n    getOctocat: [\"GET /octocat\"],\n    getZen: [\"GET /zen\"],\n    root: [\"GET /\"]\n  },\n  migrations: {\n    cancelImport: [\n      \"DELETE /repos/{owner}/{repo}/import\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import\"\n      }\n    ],\n    deleteArchiveForAuthenticatedUser: [\n      \"DELETE /user/migrations/{migration_id}/archive\"\n    ],\n    deleteArchiveForOrg: [\n      \"DELETE /orgs/{org}/migrations/{migration_id}/archive\"\n    ],\n    downloadArchiveForOrg: [\n      \"GET /orgs/{org}/migrations/{migration_id}/archive\"\n    ],\n    getArchiveForAuthenticatedUser: [\n      \"GET /user/migrations/{migration_id}/archive\"\n    ],\n    getCommitAuthors: [\n      \"GET /repos/{owner}/{repo}/import/authors\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors\"\n      }\n    ],\n    getImportStatus: [\n      \"GET /repos/{owner}/{repo}/import\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status\"\n      }\n    ],\n    getLargeFiles: [\n      \"GET /repos/{owner}/{repo}/import/large_files\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files\"\n      }\n    ],\n    getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n    getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n    listForAuthenticatedUser: [\"GET /user/migrations\"],\n    listForOrg: [\"GET /orgs/{org}/migrations\"],\n    listReposForAuthenticatedUser: [\n      \"GET /user/migrations/{migration_id}/repositories\"\n    ],\n    listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n    listReposForUser: [\n      \"GET /user/migrations/{migration_id}/repositories\",\n      {},\n      { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] }\n    ],\n    mapCommitAuthor: [\n      \"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author\"\n      }\n    ],\n    setLfsPreference: [\n      \"PATCH /repos/{owner}/{repo}/import/lfs\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference\"\n      }\n    ],\n    startForAuthenticatedUser: [\"POST /user/migrations\"],\n    startForOrg: [\"POST /orgs/{org}/migrations\"],\n    startImport: [\n      \"PUT /repos/{owner}/{repo}/import\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import\"\n      }\n    ],\n    unlockRepoForAuthenticatedUser: [\n      \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\"\n    ],\n    unlockRepoForOrg: [\n      \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\"\n    ],\n    updateImport: [\n      \"PATCH /repos/{owner}/{repo}/import\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import\"\n      }\n    ]\n  },\n  orgs: {\n    addSecurityManagerTeam: [\n      \"PUT /orgs/{org}/security-managers/teams/{team_slug}\"\n    ],\n    blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n    cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n    checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n    checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n    checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n    convertMemberToOutsideCollaborator: [\n      \"PUT /orgs/{org}/outside_collaborators/{username}\"\n    ],\n    createInvitation: [\"POST /orgs/{org}/invitations\"],\n    createOrUpdateCustomProperties: [\"PATCH /orgs/{org}/properties/schema\"],\n    createOrUpdateCustomPropertiesValuesForRepos: [\n      \"PATCH /orgs/{org}/properties/values\"\n    ],\n    createOrUpdateCustomProperty: [\n      \"PUT /orgs/{org}/properties/schema/{custom_property_name}\"\n    ],\n    createWebhook: [\"POST /orgs/{org}/hooks\"],\n    delete: [\"DELETE /orgs/{org}\"],\n    deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n    enableOrDisableSecurityProductOnAllOrgRepos: [\n      \"POST /orgs/{org}/{security_product}/{enablement}\"\n    ],\n    get: [\"GET /orgs/{org}\"],\n    getAllCustomProperties: [\"GET /orgs/{org}/properties/schema\"],\n    getCustomProperty: [\n      \"GET /orgs/{org}/properties/schema/{custom_property_name}\"\n    ],\n    getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n    getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n    getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n    getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n    getWebhookDelivery: [\n      \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\"\n    ],\n    list: [\"GET /organizations\"],\n    listAppInstallations: [\"GET /orgs/{org}/installations\"],\n    listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n    listCustomPropertiesValuesForRepos: [\"GET /orgs/{org}/properties/values\"],\n    listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n    listForAuthenticatedUser: [\"GET /user/orgs\"],\n    listForUser: [\"GET /users/{username}/orgs\"],\n    listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n    listMembers: [\"GET /orgs/{org}/members\"],\n    listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n    listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n    listPatGrantRepositories: [\n      \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\"\n    ],\n    listPatGrantRequestRepositories: [\n      \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\"\n    ],\n    listPatGrantRequests: [\"GET /orgs/{org}/personal-access-token-requests\"],\n    listPatGrants: [\"GET /orgs/{org}/personal-access-tokens\"],\n    listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n    listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n    listSecurityManagerTeams: [\"GET /orgs/{org}/security-managers\"],\n    listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n    listWebhooks: [\"GET /orgs/{org}/hooks\"],\n    pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n    redeliverWebhookDelivery: [\n      \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n    ],\n    removeCustomProperty: [\n      \"DELETE /orgs/{org}/properties/schema/{custom_property_name}\"\n    ],\n    removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n    removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n    removeOutsideCollaborator: [\n      \"DELETE /orgs/{org}/outside_collaborators/{username}\"\n    ],\n    removePublicMembershipForAuthenticatedUser: [\n      \"DELETE /orgs/{org}/public_members/{username}\"\n    ],\n    removeSecurityManagerTeam: [\n      \"DELETE /orgs/{org}/security-managers/teams/{team_slug}\"\n    ],\n    reviewPatGrantRequest: [\n      \"POST /orgs/{org}/personal-access-token-requests/{pat_request_id}\"\n    ],\n    reviewPatGrantRequestsInBulk: [\n      \"POST /orgs/{org}/personal-access-token-requests\"\n    ],\n    setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n    setPublicMembershipForAuthenticatedUser: [\n      \"PUT /orgs/{org}/public_members/{username}\"\n    ],\n    unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n    update: [\"PATCH /orgs/{org}\"],\n    updateMembershipForAuthenticatedUser: [\n      \"PATCH /user/memberships/orgs/{org}\"\n    ],\n    updatePatAccess: [\"POST /orgs/{org}/personal-access-tokens/{pat_id}\"],\n    updatePatAccesses: [\"POST /orgs/{org}/personal-access-tokens\"],\n    updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n    updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"]\n  },\n  packages: {\n    deletePackageForAuthenticatedUser: [\n      \"DELETE /user/packages/{package_type}/{package_name}\"\n    ],\n    deletePackageForOrg: [\n      \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\"\n    ],\n    deletePackageForUser: [\n      \"DELETE /users/{username}/packages/{package_type}/{package_name}\"\n    ],\n    deletePackageVersionForAuthenticatedUser: [\n      \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n    ],\n    deletePackageVersionForOrg: [\n      \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n    ],\n    deletePackageVersionForUser: [\n      \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n    ],\n    getAllPackageVersionsForAPackageOwnedByAnOrg: [\n      \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n      {},\n      { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] }\n    ],\n    getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n      \"GET /user/packages/{package_type}/{package_name}/versions\",\n      {},\n      {\n        renamed: [\n          \"packages\",\n          \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\"\n        ]\n      }\n    ],\n    getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n      \"GET /user/packages/{package_type}/{package_name}/versions\"\n    ],\n    getAllPackageVersionsForPackageOwnedByOrg: [\n      \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\"\n    ],\n    getAllPackageVersionsForPackageOwnedByUser: [\n      \"GET /users/{username}/packages/{package_type}/{package_name}/versions\"\n    ],\n    getPackageForAuthenticatedUser: [\n      \"GET /user/packages/{package_type}/{package_name}\"\n    ],\n    getPackageForOrganization: [\n      \"GET /orgs/{org}/packages/{package_type}/{package_name}\"\n    ],\n    getPackageForUser: [\n      \"GET /users/{username}/packages/{package_type}/{package_name}\"\n    ],\n    getPackageVersionForAuthenticatedUser: [\n      \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n    ],\n    getPackageVersionForOrganization: [\n      \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n    ],\n    getPackageVersionForUser: [\n      \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n    ],\n    listDockerMigrationConflictingPackagesForAuthenticatedUser: [\n      \"GET /user/docker/conflicts\"\n    ],\n    listDockerMigrationConflictingPackagesForOrganization: [\n      \"GET /orgs/{org}/docker/conflicts\"\n    ],\n    listDockerMigrationConflictingPackagesForUser: [\n      \"GET /users/{username}/docker/conflicts\"\n    ],\n    listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n    listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n    listPackagesForUser: [\"GET /users/{username}/packages\"],\n    restorePackageForAuthenticatedUser: [\n      \"POST /user/packages/{package_type}/{package_name}/restore{?token}\"\n    ],\n    restorePackageForOrg: [\n      \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\"\n    ],\n    restorePackageForUser: [\n      \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\"\n    ],\n    restorePackageVersionForAuthenticatedUser: [\n      \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n    ],\n    restorePackageVersionForOrg: [\n      \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n    ],\n    restorePackageVersionForUser: [\n      \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n    ]\n  },\n  projects: {\n    addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n    createCard: [\"POST /projects/columns/{column_id}/cards\"],\n    createColumn: [\"POST /projects/{project_id}/columns\"],\n    createForAuthenticatedUser: [\"POST /user/projects\"],\n    createForOrg: [\"POST /orgs/{org}/projects\"],\n    createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n    delete: [\"DELETE /projects/{project_id}\"],\n    deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n    deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n    get: [\"GET /projects/{project_id}\"],\n    getCard: [\"GET /projects/columns/cards/{card_id}\"],\n    getColumn: [\"GET /projects/columns/{column_id}\"],\n    getPermissionForUser: [\n      \"GET /projects/{project_id}/collaborators/{username}/permission\"\n    ],\n    listCards: [\"GET /projects/columns/{column_id}/cards\"],\n    listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n    listColumns: [\"GET /projects/{project_id}/columns\"],\n    listForOrg: [\"GET /orgs/{org}/projects\"],\n    listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n    listForUser: [\"GET /users/{username}/projects\"],\n    moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n    moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n    removeCollaborator: [\n      \"DELETE /projects/{project_id}/collaborators/{username}\"\n    ],\n    update: [\"PATCH /projects/{project_id}\"],\n    updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n    updateColumn: [\"PATCH /projects/columns/{column_id}\"]\n  },\n  pulls: {\n    checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n    create: [\"POST /repos/{owner}/{repo}/pulls\"],\n    createReplyForReviewComment: [\n      \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\"\n    ],\n    createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n    createReviewComment: [\n      \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n    ],\n    deletePendingReview: [\n      \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n    ],\n    deleteReviewComment: [\n      \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n    ],\n    dismissReview: [\n      \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\"\n    ],\n    get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n    getReview: [\n      \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n    ],\n    getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n    list: [\"GET /repos/{owner}/{repo}/pulls\"],\n    listCommentsForReview: [\n      \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\"\n    ],\n    listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n    listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n    listRequestedReviewers: [\n      \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n    ],\n    listReviewComments: [\n      \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n    ],\n    listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n    listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n    merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n    removeRequestedReviewers: [\n      \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n    ],\n    requestReviewers: [\n      \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n    ],\n    submitReview: [\n      \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\"\n    ],\n    update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n    updateBranch: [\n      \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\"\n    ],\n    updateReview: [\n      \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n    ],\n    updateReviewComment: [\n      \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n    ]\n  },\n  rateLimit: { get: [\"GET /rate_limit\"] },\n  reactions: {\n    createForCommitComment: [\n      \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n    ],\n    createForIssue: [\n      \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\"\n    ],\n    createForIssueComment: [\n      \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n    ],\n    createForPullRequestReviewComment: [\n      \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n    ],\n    createForRelease: [\n      \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n    ],\n    createForTeamDiscussionCommentInOrg: [\n      \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n    ],\n    createForTeamDiscussionInOrg: [\n      \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n    ],\n    deleteForCommitComment: [\n      \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\"\n    ],\n    deleteForIssue: [\n      \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\"\n    ],\n    deleteForIssueComment: [\n      \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\"\n    ],\n    deleteForPullRequestComment: [\n      \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\"\n    ],\n    deleteForRelease: [\n      \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\"\n    ],\n    deleteForTeamDiscussion: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\"\n    ],\n    deleteForTeamDiscussionComment: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\"\n    ],\n    listForCommitComment: [\n      \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n    ],\n    listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n    listForIssueComment: [\n      \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n    ],\n    listForPullRequestReviewComment: [\n      \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n    ],\n    listForRelease: [\n      \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n    ],\n    listForTeamDiscussionCommentInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n    ],\n    listForTeamDiscussionInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n    ]\n  },\n  repos: {\n    acceptInvitation: [\n      \"PATCH /user/repository_invitations/{invitation_id}\",\n      {},\n      { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] }\n    ],\n    acceptInvitationForAuthenticatedUser: [\n      \"PATCH /user/repository_invitations/{invitation_id}\"\n    ],\n    addAppAccessRestrictions: [\n      \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n      {},\n      { mapToData: \"apps\" }\n    ],\n    addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n    addStatusCheckContexts: [\n      \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n      {},\n      { mapToData: \"contexts\" }\n    ],\n    addTeamAccessRestrictions: [\n      \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n      {},\n      { mapToData: \"teams\" }\n    ],\n    addUserAccessRestrictions: [\n      \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n      {},\n      { mapToData: \"users\" }\n    ],\n    checkAutomatedSecurityFixes: [\n      \"GET /repos/{owner}/{repo}/automated-security-fixes\"\n    ],\n    checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n    checkVulnerabilityAlerts: [\n      \"GET /repos/{owner}/{repo}/vulnerability-alerts\"\n    ],\n    codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n    compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n    compareCommitsWithBasehead: [\n      \"GET /repos/{owner}/{repo}/compare/{basehead}\"\n    ],\n    createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n    createCommitComment: [\n      \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n    ],\n    createCommitSignatureProtection: [\n      \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n    ],\n    createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n    createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n    createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n    createDeploymentBranchPolicy: [\n      \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n    ],\n    createDeploymentProtectionRule: [\n      \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n    ],\n    createDeploymentStatus: [\n      \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n    ],\n    createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n    createForAuthenticatedUser: [\"POST /user/repos\"],\n    createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n    createInOrg: [\"POST /orgs/{org}/repos\"],\n    createOrUpdateEnvironment: [\n      \"PUT /repos/{owner}/{repo}/environments/{environment_name}\"\n    ],\n    createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n    createOrgRuleset: [\"POST /orgs/{org}/rulesets\"],\n    createPagesDeployment: [\"POST /repos/{owner}/{repo}/pages/deployment\"],\n    createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n    createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n    createRepoRuleset: [\"POST /repos/{owner}/{repo}/rulesets\"],\n    createTagProtection: [\"POST /repos/{owner}/{repo}/tags/protection\"],\n    createUsingTemplate: [\n      \"POST /repos/{template_owner}/{template_repo}/generate\"\n    ],\n    createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n    declineInvitation: [\n      \"DELETE /user/repository_invitations/{invitation_id}\",\n      {},\n      { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] }\n    ],\n    declineInvitationForAuthenticatedUser: [\n      \"DELETE /user/repository_invitations/{invitation_id}\"\n    ],\n    delete: [\"DELETE /repos/{owner}/{repo}\"],\n    deleteAccessRestrictions: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n    ],\n    deleteAdminBranchProtection: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n    ],\n    deleteAnEnvironment: [\n      \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\"\n    ],\n    deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n    deleteBranchProtection: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\"\n    ],\n    deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n    deleteCommitSignatureProtection: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n    ],\n    deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n    deleteDeployment: [\n      \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\"\n    ],\n    deleteDeploymentBranchPolicy: [\n      \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n    ],\n    deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n    deleteInvitation: [\n      \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\"\n    ],\n    deleteOrgRuleset: [\"DELETE /orgs/{org}/rulesets/{ruleset_id}\"],\n    deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n    deletePullRequestReviewProtection: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n    ],\n    deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n    deleteReleaseAsset: [\n      \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n    ],\n    deleteRepoRuleset: [\"DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n    deleteTagProtection: [\n      \"DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}\"\n    ],\n    deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n    disableAutomatedSecurityFixes: [\n      \"DELETE /repos/{owner}/{repo}/automated-security-fixes\"\n    ],\n    disableDeploymentProtectionRule: [\n      \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n    ],\n    disablePrivateVulnerabilityReporting: [\n      \"DELETE /repos/{owner}/{repo}/private-vulnerability-reporting\"\n    ],\n    disableVulnerabilityAlerts: [\n      \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\"\n    ],\n    downloadArchive: [\n      \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n      {},\n      { renamed: [\"repos\", \"downloadZipballArchive\"] }\n    ],\n    downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n    downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n    enableAutomatedSecurityFixes: [\n      \"PUT /repos/{owner}/{repo}/automated-security-fixes\"\n    ],\n    enablePrivateVulnerabilityReporting: [\n      \"PUT /repos/{owner}/{repo}/private-vulnerability-reporting\"\n    ],\n    enableVulnerabilityAlerts: [\n      \"PUT /repos/{owner}/{repo}/vulnerability-alerts\"\n    ],\n    generateReleaseNotes: [\n      \"POST /repos/{owner}/{repo}/releases/generate-notes\"\n    ],\n    get: [\"GET /repos/{owner}/{repo}\"],\n    getAccessRestrictions: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n    ],\n    getAdminBranchProtection: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n    ],\n    getAllDeploymentProtectionRules: [\n      \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n    ],\n    getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n    getAllStatusCheckContexts: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\"\n    ],\n    getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n    getAppsWithAccessToProtectedBranch: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\"\n    ],\n    getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n    getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n    getBranchProtection: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection\"\n    ],\n    getBranchRules: [\"GET /repos/{owner}/{repo}/rules/branches/{branch}\"],\n    getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n    getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n    getCollaboratorPermissionLevel: [\n      \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\"\n    ],\n    getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n    getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n    getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n    getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n    getCommitSignatureProtection: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n    ],\n    getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n    getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n    getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n    getCustomDeploymentProtectionRule: [\n      \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n    ],\n    getCustomPropertiesValues: [\"GET /repos/{owner}/{repo}/properties/values\"],\n    getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n    getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n    getDeploymentBranchPolicy: [\n      \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n    ],\n    getDeploymentStatus: [\n      \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\"\n    ],\n    getEnvironment: [\n      \"GET /repos/{owner}/{repo}/environments/{environment_name}\"\n    ],\n    getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n    getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n    getOrgRuleSuite: [\"GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}\"],\n    getOrgRuleSuites: [\"GET /orgs/{org}/rulesets/rule-suites\"],\n    getOrgRuleset: [\"GET /orgs/{org}/rulesets/{ruleset_id}\"],\n    getOrgRulesets: [\"GET /orgs/{org}/rulesets\"],\n    getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n    getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n    getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n    getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n    getPullRequestReviewProtection: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n    ],\n    getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n    getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n    getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n    getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n    getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n    getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n    getRepoRuleSuite: [\n      \"GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}\"\n    ],\n    getRepoRuleSuites: [\"GET /repos/{owner}/{repo}/rulesets/rule-suites\"],\n    getRepoRuleset: [\"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n    getRepoRulesets: [\"GET /repos/{owner}/{repo}/rulesets\"],\n    getStatusChecksProtection: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n    ],\n    getTeamsWithAccessToProtectedBranch: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\"\n    ],\n    getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n    getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n    getUsersWithAccessToProtectedBranch: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\"\n    ],\n    getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n    getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n    getWebhookConfigForRepo: [\n      \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n    ],\n    getWebhookDelivery: [\n      \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\"\n    ],\n    listActivities: [\"GET /repos/{owner}/{repo}/activity\"],\n    listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n    listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n    listBranchesForHeadCommit: [\n      \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\"\n    ],\n    listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n    listCommentsForCommit: [\n      \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n    ],\n    listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n    listCommitStatusesForRef: [\n      \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\"\n    ],\n    listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n    listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n    listCustomDeploymentRuleIntegrations: [\n      \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\"\n    ],\n    listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n    listDeploymentBranchPolicies: [\n      \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n    ],\n    listDeploymentStatuses: [\n      \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n    ],\n    listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n    listForAuthenticatedUser: [\"GET /user/repos\"],\n    listForOrg: [\"GET /orgs/{org}/repos\"],\n    listForUser: [\"GET /users/{username}/repos\"],\n    listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n    listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n    listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n    listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n    listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n    listPublic: [\"GET /repositories\"],\n    listPullRequestsAssociatedWithCommit: [\n      \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\"\n    ],\n    listReleaseAssets: [\n      \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\"\n    ],\n    listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n    listTagProtection: [\"GET /repos/{owner}/{repo}/tags/protection\"],\n    listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n    listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n    listWebhookDeliveries: [\n      \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\"\n    ],\n    listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n    merge: [\"POST /repos/{owner}/{repo}/merges\"],\n    mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n    pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n    redeliverWebhookDelivery: [\n      \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n    ],\n    removeAppAccessRestrictions: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n      {},\n      { mapToData: \"apps\" }\n    ],\n    removeCollaborator: [\n      \"DELETE /repos/{owner}/{repo}/collaborators/{username}\"\n    ],\n    removeStatusCheckContexts: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n      {},\n      { mapToData: \"contexts\" }\n    ],\n    removeStatusCheckProtection: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n    ],\n    removeTeamAccessRestrictions: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n      {},\n      { mapToData: \"teams\" }\n    ],\n    removeUserAccessRestrictions: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n      {},\n      { mapToData: \"users\" }\n    ],\n    renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n    replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n    requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n    setAdminBranchProtection: [\n      \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n    ],\n    setAppAccessRestrictions: [\n      \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n      {},\n      { mapToData: \"apps\" }\n    ],\n    setStatusCheckContexts: [\n      \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n      {},\n      { mapToData: \"contexts\" }\n    ],\n    setTeamAccessRestrictions: [\n      \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n      {},\n      { mapToData: \"teams\" }\n    ],\n    setUserAccessRestrictions: [\n      \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n      {},\n      { mapToData: \"users\" }\n    ],\n    testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n    transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n    update: [\"PATCH /repos/{owner}/{repo}\"],\n    updateBranchProtection: [\n      \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\"\n    ],\n    updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n    updateDeploymentBranchPolicy: [\n      \"PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n    ],\n    updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n    updateInvitation: [\n      \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\"\n    ],\n    updateOrgRuleset: [\"PUT /orgs/{org}/rulesets/{ruleset_id}\"],\n    updatePullRequestReviewProtection: [\n      \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n    ],\n    updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n    updateReleaseAsset: [\n      \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n    ],\n    updateRepoRuleset: [\"PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n    updateStatusCheckPotection: [\n      \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n      {},\n      { renamed: [\"repos\", \"updateStatusCheckProtection\"] }\n    ],\n    updateStatusCheckProtection: [\n      \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n    ],\n    updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n    updateWebhookConfigForRepo: [\n      \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n    ],\n    uploadReleaseAsset: [\n      \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n      { baseUrl: \"https://uploads.github.com\" }\n    ]\n  },\n  search: {\n    code: [\"GET /search/code\"],\n    commits: [\"GET /search/commits\"],\n    issuesAndPullRequests: [\"GET /search/issues\"],\n    labels: [\"GET /search/labels\"],\n    repos: [\"GET /search/repositories\"],\n    topics: [\"GET /search/topics\"],\n    users: [\"GET /search/users\"]\n  },\n  secretScanning: {\n    getAlert: [\n      \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n    ],\n    listAlertsForEnterprise: [\n      \"GET /enterprises/{enterprise}/secret-scanning/alerts\"\n    ],\n    listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n    listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n    listLocationsForAlert: [\n      \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\"\n    ],\n    updateAlert: [\n      \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n    ]\n  },\n  securityAdvisories: {\n    createPrivateVulnerabilityReport: [\n      \"POST /repos/{owner}/{repo}/security-advisories/reports\"\n    ],\n    createRepositoryAdvisory: [\n      \"POST /repos/{owner}/{repo}/security-advisories\"\n    ],\n    createRepositoryAdvisoryCveRequest: [\n      \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve\"\n    ],\n    getGlobalAdvisory: [\"GET /advisories/{ghsa_id}\"],\n    getRepositoryAdvisory: [\n      \"GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n    ],\n    listGlobalAdvisories: [\"GET /advisories\"],\n    listOrgRepositoryAdvisories: [\"GET /orgs/{org}/security-advisories\"],\n    listRepositoryAdvisories: [\"GET /repos/{owner}/{repo}/security-advisories\"],\n    updateRepositoryAdvisory: [\n      \"PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n    ]\n  },\n  teams: {\n    addOrUpdateMembershipForUserInOrg: [\n      \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n    ],\n    addOrUpdateProjectPermissionsInOrg: [\n      \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n    ],\n    addOrUpdateRepoPermissionsInOrg: [\n      \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n    ],\n    checkPermissionsForProjectInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n    ],\n    checkPermissionsForRepoInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n    ],\n    create: [\"POST /orgs/{org}/teams\"],\n    createDiscussionCommentInOrg: [\n      \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n    ],\n    createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n    deleteDiscussionCommentInOrg: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n    ],\n    deleteDiscussionInOrg: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n    ],\n    deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n    getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n    getDiscussionCommentInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n    ],\n    getDiscussionInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n    ],\n    getMembershipForUserInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n    ],\n    list: [\"GET /orgs/{org}/teams\"],\n    listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n    listDiscussionCommentsInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n    ],\n    listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n    listForAuthenticatedUser: [\"GET /user/teams\"],\n    listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n    listPendingInvitationsInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/invitations\"\n    ],\n    listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n    listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n    removeMembershipForUserInOrg: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n    ],\n    removeProjectInOrg: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n    ],\n    removeRepoInOrg: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n    ],\n    updateDiscussionCommentInOrg: [\n      \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n    ],\n    updateDiscussionInOrg: [\n      \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n    ],\n    updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"]\n  },\n  users: {\n    addEmailForAuthenticated: [\n      \"POST /user/emails\",\n      {},\n      { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] }\n    ],\n    addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n    addSocialAccountForAuthenticatedUser: [\"POST /user/social_accounts\"],\n    block: [\"PUT /user/blocks/{username}\"],\n    checkBlocked: [\"GET /user/blocks/{username}\"],\n    checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n    checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n    createGpgKeyForAuthenticated: [\n      \"POST /user/gpg_keys\",\n      {},\n      { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] }\n    ],\n    createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n    createPublicSshKeyForAuthenticated: [\n      \"POST /user/keys\",\n      {},\n      { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] }\n    ],\n    createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n    createSshSigningKeyForAuthenticatedUser: [\"POST /user/ssh_signing_keys\"],\n    deleteEmailForAuthenticated: [\n      \"DELETE /user/emails\",\n      {},\n      { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] }\n    ],\n    deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n    deleteGpgKeyForAuthenticated: [\n      \"DELETE /user/gpg_keys/{gpg_key_id}\",\n      {},\n      { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] }\n    ],\n    deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n    deletePublicSshKeyForAuthenticated: [\n      \"DELETE /user/keys/{key_id}\",\n      {},\n      { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] }\n    ],\n    deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n    deleteSocialAccountForAuthenticatedUser: [\"DELETE /user/social_accounts\"],\n    deleteSshSigningKeyForAuthenticatedUser: [\n      \"DELETE /user/ssh_signing_keys/{ssh_signing_key_id}\"\n    ],\n    follow: [\"PUT /user/following/{username}\"],\n    getAuthenticated: [\"GET /user\"],\n    getByUsername: [\"GET /users/{username}\"],\n    getContextForUser: [\"GET /users/{username}/hovercard\"],\n    getGpgKeyForAuthenticated: [\n      \"GET /user/gpg_keys/{gpg_key_id}\",\n      {},\n      { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] }\n    ],\n    getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n    getPublicSshKeyForAuthenticated: [\n      \"GET /user/keys/{key_id}\",\n      {},\n      { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] }\n    ],\n    getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n    getSshSigningKeyForAuthenticatedUser: [\n      \"GET /user/ssh_signing_keys/{ssh_signing_key_id}\"\n    ],\n    list: [\"GET /users\"],\n    listBlockedByAuthenticated: [\n      \"GET /user/blocks\",\n      {},\n      { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] }\n    ],\n    listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n    listEmailsForAuthenticated: [\n      \"GET /user/emails\",\n      {},\n      { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] }\n    ],\n    listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n    listFollowedByAuthenticated: [\n      \"GET /user/following\",\n      {},\n      { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] }\n    ],\n    listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n    listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n    listFollowersForUser: [\"GET /users/{username}/followers\"],\n    listFollowingForUser: [\"GET /users/{username}/following\"],\n    listGpgKeysForAuthenticated: [\n      \"GET /user/gpg_keys\",\n      {},\n      { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] }\n    ],\n    listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n    listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n    listPublicEmailsForAuthenticated: [\n      \"GET /user/public_emails\",\n      {},\n      { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] }\n    ],\n    listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n    listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n    listPublicSshKeysForAuthenticated: [\n      \"GET /user/keys\",\n      {},\n      { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] }\n    ],\n    listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n    listSocialAccountsForAuthenticatedUser: [\"GET /user/social_accounts\"],\n    listSocialAccountsForUser: [\"GET /users/{username}/social_accounts\"],\n    listSshSigningKeysForAuthenticatedUser: [\"GET /user/ssh_signing_keys\"],\n    listSshSigningKeysForUser: [\"GET /users/{username}/ssh_signing_keys\"],\n    setPrimaryEmailVisibilityForAuthenticated: [\n      \"PATCH /user/email/visibility\",\n      {},\n      { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] }\n    ],\n    setPrimaryEmailVisibilityForAuthenticatedUser: [\n      \"PATCH /user/email/visibility\"\n    ],\n    unblock: [\"DELETE /user/blocks/{username}\"],\n    unfollow: [\"DELETE /user/following/{username}\"],\n    updateAuthenticated: [\"PATCH /user\"]\n  }\n};\nvar endpoints_default = Endpoints;\nexport {\n  endpoints_default as default\n};\n", "import ENDPOINTS from \"./generated/endpoints.js\";\nconst endpointMethodsMap = /* @__PURE__ */ new Map();\nfor (const [scope, endpoints] of Object.entries(ENDPOINTS)) {\n  for (const [methodName, endpoint] of Object.entries(endpoints)) {\n    const [route, defaults, decorations] = endpoint;\n    const [method, url] = route.split(/ /);\n    const endpointDefaults = Object.assign(\n      {\n        method,\n        url\n      },\n      defaults\n    );\n    if (!endpointMethodsMap.has(scope)) {\n      endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());\n    }\n    endpointMethodsMap.get(scope).set(methodName, {\n      scope,\n      methodName,\n      endpointDefaults,\n      decorations\n    });\n  }\n}\nconst handler = {\n  has({ scope }, methodName) {\n    return endpointMethodsMap.get(scope).has(methodName);\n  },\n  getOwnPropertyDescriptor(target, methodName) {\n    return {\n      value: this.get(target, methodName),\n      // ensures method is in the cache\n      configurable: true,\n      writable: true,\n      enumerable: true\n    };\n  },\n  defineProperty(target, methodName, descriptor) {\n    Object.defineProperty(target.cache, methodName, descriptor);\n    return true;\n  },\n  deleteProperty(target, methodName) {\n    delete target.cache[methodName];\n    return true;\n  },\n  ownKeys({ scope }) {\n    return [...endpointMethodsMap.get(scope).keys()];\n  },\n  set(target, methodName, value) {\n    return target.cache[methodName] = value;\n  },\n  get({ octokit, scope, cache }, methodName) {\n    if (cache[methodName]) {\n      return cache[methodName];\n    }\n    const method = endpointMethodsMap.get(scope).get(methodName);\n    if (!method) {\n      return void 0;\n    }\n    const { endpointDefaults, decorations } = method;\n    if (decorations) {\n      cache[methodName] = decorate(\n        octokit,\n        scope,\n        methodName,\n        endpointDefaults,\n        decorations\n      );\n    } else {\n      cache[methodName] = octokit.request.defaults(endpointDefaults);\n    }\n    return cache[methodName];\n  }\n};\nfunction endpointsToMethods(octokit) {\n  const newMethods = {};\n  for (const scope of endpointMethodsMap.keys()) {\n    newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);\n  }\n  return newMethods;\n}\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n  const requestWithDefaults = octokit.request.defaults(defaults);\n  function withDecorations(...args) {\n    let options = requestWithDefaults.endpoint.merge(...args);\n    if (decorations.mapToData) {\n      options = Object.assign({}, options, {\n        data: options[decorations.mapToData],\n        [decorations.mapToData]: void 0\n      });\n      return requestWithDefaults(options);\n    }\n    if (decorations.renamed) {\n      const [newScope, newMethodName] = decorations.renamed;\n      octokit.log.warn(\n        `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`\n      );\n    }\n    if (decorations.deprecated) {\n      octokit.log.warn(decorations.deprecated);\n    }\n    if (decorations.renamedParameters) {\n      const options2 = requestWithDefaults.endpoint.merge(...args);\n      for (const [name, alias] of Object.entries(\n        decorations.renamedParameters\n      )) {\n        if (name in options2) {\n          octokit.log.warn(\n            `\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`\n          );\n          if (!(alias in options2)) {\n            options2[alias] = options2[name];\n          }\n          delete options2[name];\n        }\n      }\n      return requestWithDefaults(options2);\n    }\n    return requestWithDefaults(...args);\n  }\n  return Object.assign(withDecorations, requestWithDefaults);\n}\nexport {\n  endpointsToMethods\n};\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAM,UAAU;;;ACAhB,IAAM,YAAY;AAAA,EAChB,SAAS;AAAA,IACP,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,+CAA+C;AAAA,IACzE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,oCAAoC;AAAA,IACxD,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,+CAA+C;AAAA,IACzE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,8CAA8C;AAAA,IACnE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,kDAAkD;AAAA,IACpE,mBAAmB,CAAC,6CAA6C;AAAA,IACjE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,oDAAoD;AAAA,IACxE,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,oDAAoD;AAAA,MAClD;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,mDAAmD;AAAA,MACjD;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,0CAA0C;AAAA,IAChE,sBAAsB,CAAC,+CAA+C;AAAA,IACtE,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,qCAAqC;AAAA,IAClE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,aAAa,CAAC,2DAA2D;AAAA,IACzE,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,wDAAwD;AAAA,MACtD;AAAA,IACF;AAAA,IACA,sDAAsD;AAAA,MACpD;AAAA,IACF;AAAA,IACA,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,iDAAiD;AAAA,IACxE,iBAAiB,CAAC,4CAA4C;AAAA,IAC9D,cAAc,CAAC,+CAA+C;AAAA,IAC9D,gBAAgB,CAAC,0CAA0C;AAAA,IAC3D,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,WAAW,uCAAuC,EAAE;AAAA,IAClE;AAAA,IACA,kBAAkB,CAAC,sDAAsD;AAAA,IACzE,eAAe,CAAC,yDAAyD;AAAA,IACzE,iBAAiB,CAAC,oDAAoD;AAAA,IACtE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,6CAA6C;AAAA,IACzE,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,aAAa,CAAC,2DAA2D;AAAA,IACzE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,iDAAiD;AAAA,IAClE,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,6CAA6C;AAAA,IACpE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,iCAAiC;AAAA,IAClD,kBAAkB,CAAC,mCAAmC;AAAA,IACtD,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,2CAA2C;AAAA,IAC7D,mBAAmB,CAAC,6CAA6C;AAAA,IACjE,mBAAmB,CAAC,6CAA6C;AAAA,IACjE,8BAA8B,CAAC,2CAA2C;AAAA,IAC1E,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,0DAA0D;AAAA,MACxD;AAAA,IACF;AAAA,IACA,6BAA6B,CAAC,iCAAiC;AAAA,IAC/D,8BAA8B,CAAC,2CAA2C;AAAA,IAC1E,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,wCAAwC;AAAA,IAClE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,eAAe,CAAC,wDAAwD;AAAA,IACxE,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,iDAAiD;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,kDAAkD;AAAA,MAChD;AAAA,IACF;AAAA,IACA,6CAA6C;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,wDAAwD;AAAA,MACtD;AAAA,IACF;AAAA,IACA,sDAAsD;AAAA,MACpD;AAAA,IACF;AAAA,IACA,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yDAAyD;AAAA,MACvD;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,4CAA4C;AAAA,IAChE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,uCAAuC,CAAC,kCAAkC;AAAA,IAC1E,wBAAwB,CAAC,2CAA2C;AAAA,IACpE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,UAAU,CAAC,YAAY;AAAA,IACvB,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,WAAW,CAAC,wCAAwC;AAAA,IACpD,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,gCAAgC,CAAC,8BAA8B;AAAA,IAC/D,uCAAuC,CAAC,oBAAoB;AAAA,IAC5D,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,aAAa;AAAA,IAChC,gCAAgC,CAAC,qCAAqC;AAAA,IACtE,yBAAyB,CAAC,qCAAqC;AAAA,IAC/D,qBAAqB,CAAC,wBAAwB;AAAA,IAC9C,2BAA2B,CAAC,uCAAuC;AAAA,IACnE,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,kCAAkC;AAAA,IACnD,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,qCAAqC,CAAC,mBAAmB;AAAA,IACzD,wBAAwB,CAAC,+BAA+B;AAAA,IACxD,wBAAwB,CAAC,qCAAqC;AAAA,IAC9D,uBAAuB,CAAC,sCAAsC;AAAA,IAC9D,sCAAsC,CAAC,yBAAyB;AAAA,IAChE,qBAAqB,CAAC,uCAAuC;AAAA,IAC7D,yBAAyB,CAAC,oBAAoB;AAAA,IAC9C,6BAA6B,CAAC,yCAAyC;AAAA,IACvE,kBAAkB,CAAC,0CAA0C;AAAA,IAC7D,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,8BAA8B,CAAC,kCAAkC;AAAA,IACjE,gCAAgC,CAAC,qCAAqC;AAAA,EACxE;AAAA,EACA,MAAM;AAAA,IACJ,uBAAuB;AAAA,MACrB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,QAAQ,2CAA2C,EAAE;AAAA,IACnE;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,YAAY,CAAC,sCAAsC;AAAA,IACnD,oBAAoB,CAAC,wCAAwC;AAAA,IAC7D,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,oBAAoB,CAAC,6CAA6C;AAAA,IAClE,aAAa,CAAC,wCAAwC;AAAA,IACtD,kBAAkB,CAAC,UAAU;AAAA,IAC7B,WAAW,CAAC,sBAAsB;AAAA,IAClC,iBAAiB,CAAC,0CAA0C;AAAA,IAC5D,oBAAoB,CAAC,8BAA8B;AAAA,IACnD,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,oCAAoC;AAAA,IAC1D,wBAAwB,CAAC,sBAAsB;AAAA,IAC/C,oBAAoB,CAAC,wCAAwC;AAAA,IAC7D,qBAAqB,CAAC,mDAAmD;AAAA,IACzE,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,6CAA6C;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,wBAAwB;AAAA,IAC5C,uCAAuC,CAAC,yBAAyB;AAAA,IACjE,WAAW,CAAC,gCAAgC;AAAA,IAC5C,kBAAkB,CAAC,wCAAwC;AAAA,IAC3D,mCAAmC,CAAC,gCAAgC;AAAA,IACpE,uCAAuC,CAAC,iCAAiC;AAAA,IACzE,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,uBAAuB,CAAC,0BAA0B;AAAA,IAClD,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,QAAQ,gDAAgD,EAAE;AAAA,IACxE;AAAA,IACA,gDAAgD;AAAA,MAC9C;AAAA,IACF;AAAA,IACA,YAAY,CAAC,uCAAuC;AAAA,IACpD,+BAA+B,CAAC,4BAA4B;AAAA,IAC5D,YAAY,CAAC,6CAA6C;AAAA,IAC1D,qBAAqB,CAAC,oDAAoD;AAAA,IAC1E,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,wBAAwB;AAAA,EACtD;AAAA,EACA,SAAS;AAAA,IACP,4BAA4B,CAAC,0CAA0C;AAAA,IACvE,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,6BAA6B,CAAC,2CAA2C;AAAA,IACzE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ,CAAC,uCAAuC;AAAA,IAChD,aAAa,CAAC,yCAAyC;AAAA,IACvD,KAAK,CAAC,qDAAqD;AAAA,IAC3D,UAAU,CAAC,yDAAyD;AAAA,IACpE,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,YAAY,CAAC,oDAAoD;AAAA,IACjE,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,sDAAsD;AAAA,IACzE,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,uDAAuD;AAAA,EAClE;AAAA,EACA,cAAc;AAAA,IACZ,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,UAAU;AAAA,MACR;AAAA,MACA,CAAC;AAAA,MACD,EAAE,mBAAmB,EAAE,UAAU,eAAe,EAAE;AAAA,IACpD;AAAA,IACA,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,uDAAuD;AAAA,IACzE,UAAU,CAAC,2DAA2D;AAAA,IACtE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,sCAAsC;AAAA,IACzD,mBAAmB,CAAC,gDAAgD;AAAA,IACpE,qBAAqB;AAAA,MACnB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,gBAAgB,oBAAoB,EAAE;AAAA,IACpD;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,kDAAkD;AAAA,IACvE,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,iDAAiD;AAAA,EACjE;AAAA,EACA,gBAAgB;AAAA,IACd,sBAAsB,CAAC,uBAAuB;AAAA,IAC9C,gBAAgB,CAAC,6BAA6B;AAAA,EAChD;AAAA,EACA,YAAY;AAAA,IACV,4CAA4C;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,uBAAuB;AAAA,IACpD,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,0CAA0C;AAAA,IACvE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,qDAAqD;AAAA,IACvE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,uCAAuC;AAAA,IACjE,iBAAiB,CAAC,+CAA+C;AAAA,IACjE,cAAc,CAAC,kDAAkD;AAAA,IACjE,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,mDAAmD;AAAA,MACjD;AAAA,IACF;AAAA,IACA,0BAA0B,CAAC,sBAAsB;AAAA,IACjD,oBAAoB;AAAA,MAClB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,mBAAmB,EAAE,QAAQ,MAAM,EAAE;AAAA,IACzC;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,oCAAoC;AAAA,IACrD,iBAAiB,CAAC,8CAA8C;AAAA,IAChE,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,iCAAiC,CAAC,8BAA8B;AAAA,IAChE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,8CAA8C;AAAA,IAC1E,0BAA0B,CAAC,6CAA6C;AAAA,IACxE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,yCAAyC;AAAA,EACxE;AAAA,EACA,SAAS;AAAA,IACP,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,+BAA+B,CAAC,iCAAiC;AAAA,IACjE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,uCAAuC;AAAA,EAC5D;AAAA,EACA,YAAY;AAAA,IACV,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,qDAAqD;AAAA,IACvE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,UAAU,CAAC,4DAA4D;AAAA,IACvE,iBAAiB,CAAC,+CAA+C;AAAA,IACjE,cAAc,CAAC,kDAAkD;AAAA,IACjE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,mCAAmC;AAAA,IACtD,mBAAmB,CAAC,6CAA6C;AAAA,IACjE,gBAAgB,CAAC,oCAAoC;AAAA,IACrD,iBAAiB,CAAC,8CAA8C;AAAA,IAChE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,IACF;AAAA,IACA,YAAY,CAAC,iDAAiD;AAAA,EAChE;AAAA,EACA,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE;AAAA,EAC/B,OAAO;AAAA,IACL,gBAAgB,CAAC,2BAA2B;AAAA,IAC5C,QAAQ,CAAC,aAAa;AAAA,IACtB,eAAe,CAAC,gCAAgC;AAAA,IAChD,QAAQ,CAAC,yBAAyB;AAAA,IAClC,eAAe,CAAC,+CAA+C;AAAA,IAC/D,MAAM,CAAC,6BAA6B;AAAA,IACpC,KAAK,CAAC,sBAAsB;AAAA,IAC5B,YAAY,CAAC,4CAA4C;AAAA,IACzD,aAAa,CAAC,4BAA4B;AAAA,IAC1C,MAAM,CAAC,YAAY;AAAA,IACnB,cAAc,CAAC,+BAA+B;AAAA,IAC9C,aAAa,CAAC,8BAA8B;AAAA,IAC5C,aAAa,CAAC,6BAA6B;AAAA,IAC3C,WAAW,CAAC,4BAA4B;AAAA,IACxC,YAAY,CAAC,mBAAmB;AAAA,IAChC,aAAa,CAAC,oBAAoB;AAAA,IAClC,MAAM,CAAC,2BAA2B;AAAA,IAClC,QAAQ,CAAC,8BAA8B;AAAA,IACvC,QAAQ,CAAC,wBAAwB;AAAA,IACjC,eAAe,CAAC,8CAA8C;AAAA,EAChE;AAAA,EACA,KAAK;AAAA,IACH,YAAY,CAAC,sCAAsC;AAAA,IACnD,cAAc,CAAC,wCAAwC;AAAA,IACvD,WAAW,CAAC,qCAAqC;AAAA,IACjD,WAAW,CAAC,qCAAqC;AAAA,IACjD,YAAY,CAAC,sCAAsC;AAAA,IACnD,WAAW,CAAC,6CAA6C;AAAA,IACzD,SAAS,CAAC,gDAAgD;AAAA,IAC1D,WAAW,CAAC,oDAAoD;AAAA,IAChE,QAAQ,CAAC,yCAAyC;AAAA,IAClD,QAAQ,CAAC,8CAA8C;AAAA,IACvD,SAAS,CAAC,gDAAgD;AAAA,IAC1D,kBAAkB,CAAC,mDAAmD;AAAA,IACtE,WAAW,CAAC,4CAA4C;AAAA,EAC1D;AAAA,EACA,WAAW;AAAA,IACT,iBAAiB,CAAC,0BAA0B;AAAA,IAC5C,aAAa,CAAC,iCAAiC;AAAA,EACjD;AAAA,EACA,cAAc;AAAA,IACZ,qCAAqC,CAAC,8BAA8B;AAAA,IACpE,uBAAuB,CAAC,oCAAoC;AAAA,IAC5D,wBAAwB,CAAC,8CAA8C;AAAA,IACvE,mCAAmC;AAAA,MACjC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,gBAAgB,qCAAqC,EAAE;AAAA,IACrE;AAAA,IACA,wCAAwC,CAAC,iCAAiC;AAAA,IAC1E,0BAA0B,CAAC,uCAAuC;AAAA,IAClE,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,gBAAgB,wCAAwC,EAAE;AAAA,IACxE;AAAA,IACA,qCAAqC,CAAC,8BAA8B;AAAA,IACpE,uBAAuB,CAAC,oCAAoC;AAAA,IAC5D,wBAAwB,CAAC,8CAA8C;AAAA,IACvE,mCAAmC;AAAA,MACjC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,gBAAgB,qCAAqC,EAAE;AAAA,IACrE;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,WAAW,CAAC,yDAAyD;AAAA,IACrE,wBAAwB,CAAC,gDAAgD;AAAA,IACzE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,mCAAmC;AAAA,IAC5C,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,aAAa,CAAC,mCAAmC;AAAA,IACjD,iBAAiB,CAAC,uCAAuC;AAAA,IACzD,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,aAAa,CAAC,4CAA4C;AAAA,IAC1D,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,KAAK,CAAC,iDAAiD;AAAA,IACvD,YAAY,CAAC,wDAAwD;AAAA,IACrE,UAAU,CAAC,oDAAoD;AAAA,IAC/D,UAAU,CAAC,yCAAyC;AAAA,IACpD,cAAc,CAAC,yDAAyD;AAAA,IACxE,MAAM,CAAC,aAAa;AAAA,IACpB,eAAe,CAAC,qCAAqC;AAAA,IACrD,cAAc,CAAC,0DAA0D;AAAA,IACzE,qBAAqB,CAAC,2CAA2C;AAAA,IACjE,YAAY,CAAC,wDAAwD;AAAA,IACrE,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,0BAA0B,CAAC,kBAAkB;AAAA,IAC7C,YAAY,CAAC,wBAAwB;AAAA,IACrC,aAAa,CAAC,kCAAkC;AAAA,IAChD,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,kCAAkC;AAAA,IACtD,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,sCAAsC;AAAA,IACvD,MAAM,CAAC,sDAAsD;AAAA,IAC7D,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,WAAW,CAAC,wDAAwD;AAAA,IACpE,QAAQ,CAAC,yDAAyD;AAAA,IAClE,QAAQ,CAAC,mDAAmD;AAAA,IAC5D,eAAe,CAAC,0DAA0D;AAAA,IAC1E,aAAa,CAAC,2CAA2C;AAAA,IACzD,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,KAAK,CAAC,yBAAyB;AAAA,IAC/B,oBAAoB,CAAC,eAAe;AAAA,IACpC,YAAY,CAAC,mCAAmC;AAAA,EAClD;AAAA,EACA,UAAU;AAAA,IACR,QAAQ,CAAC,gBAAgB;AAAA,IACzB,WAAW;AAAA,MACT;AAAA,MACA,EAAE,SAAS,EAAE,gBAAgB,4BAA4B,EAAE;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,KAAK,CAAC,WAAW;AAAA,IACjB,gBAAgB,CAAC,eAAe;AAAA,IAChC,YAAY,CAAC,cAAc;AAAA,IAC3B,QAAQ,CAAC,UAAU;AAAA,IACnB,MAAM,CAAC,OAAO;AAAA,EAChB;AAAA,EACA,YAAY;AAAA,IACV,cAAc;AAAA,MACZ;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,+BAA+B,CAAC,qCAAqC;AAAA,IACrE,iBAAiB,CAAC,2CAA2C;AAAA,IAC7D,0BAA0B,CAAC,sBAAsB;AAAA,IACjD,YAAY,CAAC,4BAA4B;AAAA,IACzC,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,wDAAwD;AAAA,IAC1E,kBAAkB;AAAA,MAChB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,cAAc,+BAA+B,EAAE;AAAA,IAC7D;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,uBAAuB;AAAA,IACnD,aAAa,CAAC,6BAA6B;AAAA,IAC3C,aAAa;AAAA,MACX;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,WAAW,CAAC,mCAAmC;AAAA,IAC/C,kBAAkB,CAAC,gDAAgD;AAAA,IACnE,kBAAkB,CAAC,mCAAmC;AAAA,IACtD,wBAAwB,CAAC,oCAAoC;AAAA,IAC7D,8BAA8B,CAAC,2CAA2C;AAAA,IAC1E,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,8BAA8B;AAAA,IACjD,gCAAgC,CAAC,qCAAqC;AAAA,IACtE,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,eAAe,CAAC,wBAAwB;AAAA,IACxC,QAAQ,CAAC,oBAAoB;AAAA,IAC7B,eAAe,CAAC,oCAAoC;AAAA,IACpD,6CAA6C;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,KAAK,CAAC,iBAAiB;AAAA,IACvB,wBAAwB,CAAC,mCAAmC;AAAA,IAC5D,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,mCAAmC,CAAC,kCAAkC;AAAA,IACtE,sBAAsB,CAAC,wCAAwC;AAAA,IAC/D,YAAY,CAAC,iCAAiC;AAAA,IAC9C,wBAAwB,CAAC,wCAAwC;AAAA,IACjE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,MAAM,CAAC,oBAAoB;AAAA,IAC3B,sBAAsB,CAAC,+BAA+B;AAAA,IACtD,kBAAkB,CAAC,wBAAwB;AAAA,IAC3C,oCAAoC,CAAC,mCAAmC;AAAA,IACxE,uBAAuB,CAAC,oCAAoC;AAAA,IAC5D,0BAA0B,CAAC,gBAAgB;AAAA,IAC3C,aAAa,CAAC,4BAA4B;AAAA,IAC1C,qBAAqB,CAAC,mDAAmD;AAAA,IACzE,aAAa,CAAC,yBAAyB;AAAA,IACvC,qCAAqC,CAAC,4BAA4B;AAAA,IAClE,0BAA0B,CAAC,uCAAuC;AAAA,IAClE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,gDAAgD;AAAA,IACvE,eAAe,CAAC,wCAAwC;AAAA,IACxD,wBAAwB,CAAC,6BAA6B;AAAA,IACtD,mBAAmB,CAAC,gCAAgC;AAAA,IACpD,0BAA0B,CAAC,mCAAmC;AAAA,IAC9D,uBAAuB,CAAC,4CAA4C;AAAA,IACpE,cAAc,CAAC,uBAAuB;AAAA,IACtC,aAAa,CAAC,wCAAwC;AAAA,IACtD,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,uCAAuC;AAAA,IACtD,yBAAyB,CAAC,2CAA2C;AAAA,IACrE,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,4CAA4C;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,wCAAwC;AAAA,IAC/D,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,aAAa,CAAC,sCAAsC;AAAA,IACpD,QAAQ,CAAC,mBAAmB;AAAA,IAC5B,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,kDAAkD;AAAA,IACpE,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,eAAe,CAAC,mCAAmC;AAAA,IACnD,2BAA2B,CAAC,0CAA0C;AAAA,EACxE;AAAA,EACA,UAAU;AAAA,IACR,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,8CAA8C;AAAA,MAC5C;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,YAAY,2CAA2C,EAAE;AAAA,IACvE;AAAA,IACA,6DAA6D;AAAA,MAC3D;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,SAAS;AAAA,UACP;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,yDAAyD;AAAA,MACvD;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,4CAA4C;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,4DAA4D;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,uDAAuD;AAAA,MACrD;AAAA,IACF;AAAA,IACA,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,kCAAkC,CAAC,oBAAoB;AAAA,IACvD,6BAA6B,CAAC,0BAA0B;AAAA,IACxD,qBAAqB,CAAC,gCAAgC;AAAA,IACtD,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,iBAAiB,CAAC,qDAAqD;AAAA,IACvE,YAAY,CAAC,0CAA0C;AAAA,IACvD,cAAc,CAAC,qCAAqC;AAAA,IACpD,4BAA4B,CAAC,qBAAqB;AAAA,IAClD,cAAc,CAAC,2BAA2B;AAAA,IAC1C,eAAe,CAAC,qCAAqC;AAAA,IACrD,QAAQ,CAAC,+BAA+B;AAAA,IACxC,YAAY,CAAC,0CAA0C;AAAA,IACvD,cAAc,CAAC,sCAAsC;AAAA,IACrD,KAAK,CAAC,4BAA4B;AAAA,IAClC,SAAS,CAAC,uCAAuC;AAAA,IACjD,WAAW,CAAC,mCAAmC;AAAA,IAC/C,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,WAAW,CAAC,yCAAyC;AAAA,IACrD,mBAAmB,CAAC,0CAA0C;AAAA,IAC9D,aAAa,CAAC,oCAAoC;AAAA,IAClD,YAAY,CAAC,0BAA0B;AAAA,IACvC,aAAa,CAAC,oCAAoC;AAAA,IAClD,aAAa,CAAC,gCAAgC;AAAA,IAC9C,UAAU,CAAC,8CAA8C;AAAA,IACzD,YAAY,CAAC,0CAA0C;AAAA,IACvD,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,8BAA8B;AAAA,IACvC,YAAY,CAAC,yCAAyC;AAAA,IACtD,cAAc,CAAC,qCAAqC;AAAA,EACtD;AAAA,EACA,OAAO;AAAA,IACL,eAAe,CAAC,qDAAqD;AAAA,IACrE,QAAQ,CAAC,kCAAkC;AAAA,IAC3C,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,cAAc,CAAC,wDAAwD;AAAA,IACvE,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,KAAK,CAAC,+CAA+C;AAAA,IACrD,WAAW;AAAA,MACT;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,uDAAuD;AAAA,IAC1E,MAAM,CAAC,iCAAiC;AAAA,IACxC,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,uDAAuD;AAAA,IACrE,WAAW,CAAC,qDAAqD;AAAA,IACjE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,0CAA0C;AAAA,IACtE,aAAa,CAAC,uDAAuD;AAAA,IACrE,OAAO,CAAC,qDAAqD;AAAA,IAC7D,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,iDAAiD;AAAA,IAC1D,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAW,EAAE,KAAK,CAAC,iBAAiB,EAAE;AAAA,EACtC,WAAW;AAAA,IACT,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,2DAA2D;AAAA,IAC1E,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,kBAAkB;AAAA,MAChB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,sCAAsC,EAAE;AAAA,IAC/D;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,OAAO;AAAA,IACtB;AAAA,IACA,iBAAiB,CAAC,oDAAoD;AAAA,IACtE,wBAAwB;AAAA,MACtB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,WAAW;AAAA,IAC1B;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,oDAAoD;AAAA,IACxE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,6CAA6C;AAAA,IAChE,gBAAgB,CAAC,mDAAmD;AAAA,IACpE,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,sCAAsC;AAAA,IACvD,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,2CAA2C;AAAA,IAChE,iBAAiB,CAAC,iCAAiC;AAAA,IACnD,kBAAkB,CAAC,wCAAwC;AAAA,IAC3D,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,uCAAuC;AAAA,IAC7D,4BAA4B,CAAC,kBAAkB;AAAA,IAC/C,YAAY,CAAC,kCAAkC;AAAA,IAC/C,aAAa,CAAC,wBAAwB;AAAA,IACtC,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,2CAA2C;AAAA,IACxE,kBAAkB,CAAC,2BAA2B;AAAA,IAC9C,uBAAuB,CAAC,6CAA6C;AAAA,IACrE,iBAAiB,CAAC,kCAAkC;AAAA,IACpD,eAAe,CAAC,qCAAqC;AAAA,IACrD,mBAAmB,CAAC,qCAAqC;AAAA,IACzD,qBAAqB,CAAC,4CAA4C;AAAA,IAClE,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,eAAe,CAAC,kCAAkC;AAAA,IAClD,mBAAmB;AAAA,MACjB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,uCAAuC,EAAE;AAAA,IAChE;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,8BAA8B;AAAA,IACvC,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,sDAAsD;AAAA,IACvE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,oDAAoD;AAAA,IAC1E,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,4CAA4C;AAAA,IAC9D,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,YAAY,CAAC,8CAA8C;AAAA,IAC3D,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,0CAA0C;AAAA,IAC7D,iBAAiB,CAAC,oCAAoC;AAAA,IACtD,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,eAAe,CAAC,oDAAoD;AAAA,IACpE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,oDAAoD;AAAA,IACxE,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,eAAe,CAAC,8CAA8C;AAAA,IAC9D,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,wBAAwB,EAAE;AAAA,IACjD;AAAA,IACA,wBAAwB,CAAC,yCAAyC;AAAA,IAClE,wBAAwB,CAAC,yCAAyC;AAAA,IAClE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,KAAK,CAAC,2BAA2B;AAAA,IACjC,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,wCAAwC;AAAA,IAC7D,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,kCAAkC;AAAA,IACjD,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,aAAa,CAAC,mDAAmD;AAAA,IACjE,WAAW,CAAC,6CAA6C;AAAA,IACzD,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,mDAAmD;AAAA,IACpE,WAAW,CAAC,0CAA0C;AAAA,IACtD,uBAAuB,CAAC,gDAAgD;AAAA,IACxE,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,gDAAgD;AAAA,IAC1E,WAAW,CAAC,yCAAyC;AAAA,IACrD,wBAAwB,CAAC,iDAAiD;AAAA,IAC1E,kBAAkB,CAAC,iDAAiD;AAAA,IACpE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,6CAA6C;AAAA,IAC1E,YAAY,CAAC,2CAA2C;AAAA,IACxD,sBAAsB,CAAC,8CAA8C;AAAA,IACrE,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,6CAA6C;AAAA,IACzE,cAAc,CAAC,yCAAyC;AAAA,IACxD,eAAe,CAAC,uDAAuD;AAAA,IACvE,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,+CAA+C;AAAA,IACrE,kBAAkB,CAAC,2CAA2C;AAAA,IAC9D,iBAAiB,CAAC,sDAAsD;AAAA,IACxE,kBAAkB,CAAC,sCAAsC;AAAA,IACzD,eAAe,CAAC,uCAAuC;AAAA,IACvD,gBAAgB,CAAC,0BAA0B;AAAA,IAC3C,UAAU,CAAC,iCAAiC;AAAA,IAC5C,eAAe,CAAC,mDAAmD;AAAA,IACnE,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,uBAAuB,CAAC,+CAA+C;AAAA,IACvE,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,4CAA4C;AAAA,IAChE,WAAW,CAAC,kCAAkC;AAAA,IAC9C,sBAAsB,CAAC,wCAAwC;AAAA,IAC/D,YAAY,CAAC,iDAAiD;AAAA,IAC9D,iBAAiB,CAAC,sDAAsD;AAAA,IACxE,iBAAiB,CAAC,+CAA+C;AAAA,IACjE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,gDAAgD;AAAA,IACpE,gBAAgB,CAAC,iDAAiD;AAAA,IAClE,iBAAiB,CAAC,oCAAoC;AAAA,IACtD,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,aAAa,CAAC,iDAAiD;AAAA,IAC/D,iBAAiB,CAAC,qDAAqD;AAAA,IACvE,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,UAAU,CAAC,yCAAyC;AAAA,IACpD,YAAY,CAAC,2CAA2C;AAAA,IACxD,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,oCAAoC;AAAA,IACrD,eAAe,CAAC,qCAAqC;AAAA,IACrD,cAAc,CAAC,oCAAoC;AAAA,IACnD,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,oCAAoC;AAAA,IAChE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,mCAAmC;AAAA,IACjD,kBAAkB,CAAC,wCAAwC;AAAA,IAC3D,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,gCAAgC;AAAA,IACjD,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,uCAAuC;AAAA,IACzD,0BAA0B,CAAC,iBAAiB;AAAA,IAC5C,YAAY,CAAC,uBAAuB;AAAA,IACpC,aAAa,CAAC,6BAA6B;AAAA,IAC3C,WAAW,CAAC,iCAAiC;AAAA,IAC7C,iBAAiB,CAAC,uCAAuC;AAAA,IACzD,qCAAqC,CAAC,kCAAkC;AAAA,IACxE,eAAe,CAAC,qCAAqC;AAAA,IACrD,iBAAiB,CAAC,wCAAwC;AAAA,IAC1D,YAAY,CAAC,mBAAmB;AAAA,IAChC,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,oCAAoC;AAAA,IACnD,mBAAmB,CAAC,2CAA2C;AAAA,IAC/D,UAAU,CAAC,gCAAgC;AAAA,IAC3C,WAAW,CAAC,iCAAiC;AAAA,IAC7C,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,iCAAiC;AAAA,IAChD,OAAO,CAAC,mCAAmC;AAAA,IAC3C,eAAe,CAAC,2CAA2C;AAAA,IAC3D,aAAa,CAAC,kDAAkD;AAAA,IAChE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,OAAO;AAAA,IACtB;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,WAAW;AAAA,IAC1B;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,cAAc,CAAC,qDAAqD;AAAA,IACpE,kBAAkB,CAAC,kCAAkC;AAAA,IACrD,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,OAAO;AAAA,IACtB;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,WAAW;AAAA,IAC1B;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,iBAAiB,CAAC,kDAAkD;AAAA,IACpE,UAAU,CAAC,qCAAqC;AAAA,IAChD,QAAQ,CAAC,6BAA6B;AAAA,IACtC,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,mDAAmD;AAAA,IACzE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,iCAAiC,CAAC,iCAAiC;AAAA,IACnE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,uCAAuC;AAAA,IAC1D,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,eAAe,CAAC,mDAAmD;AAAA,IACnE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,iDAAiD;AAAA,IACrE,4BAA4B;AAAA,MAC1B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,6BAA6B,EAAE;AAAA,IACtD;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,eAAe,CAAC,6CAA6C;AAAA,IAC7D,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,MACA,EAAE,SAAS,6BAA6B;AAAA,IAC1C;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,MAAM,CAAC,kBAAkB;AAAA,IACzB,SAAS,CAAC,qBAAqB;AAAA,IAC/B,uBAAuB,CAAC,oBAAoB;AAAA,IAC5C,QAAQ,CAAC,oBAAoB;AAAA,IAC7B,OAAO,CAAC,0BAA0B;AAAA,IAClC,QAAQ,CAAC,oBAAoB;AAAA,IAC7B,OAAO,CAAC,mBAAmB;AAAA,EAC7B;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,MACR;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,wCAAwC;AAAA,IAC3D,mBAAmB,CAAC,kDAAkD;AAAA,IACtE,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,oBAAoB;AAAA,IAClB,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,2BAA2B;AAAA,IAC/C,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,iBAAiB;AAAA,IACxC,6BAA6B,CAAC,qCAAqC;AAAA,IACnE,0BAA0B,CAAC,+CAA+C;AAAA,IAC1E,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,wBAAwB;AAAA,IACjC,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,uBAAuB,CAAC,gDAAgD;AAAA,IACxE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,sCAAsC;AAAA,IACpD,WAAW,CAAC,mCAAmC;AAAA,IAC/C,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,MAAM,CAAC,uBAAuB;AAAA,IAC9B,gBAAgB,CAAC,yCAAyC;AAAA,IAC1D,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,+CAA+C;AAAA,IACtE,0BAA0B,CAAC,iBAAiB;AAAA,IAC5C,kBAAkB,CAAC,2CAA2C;AAAA,IAC9D,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,4CAA4C;AAAA,IAChE,gBAAgB,CAAC,yCAAyC;AAAA,IAC1D,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,qCAAqC;AAAA,EACrD;AAAA,EACA,OAAO;AAAA,IACL,0BAA0B;AAAA,MACxB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,8BAA8B,EAAE;AAAA,IACvD;AAAA,IACA,8BAA8B,CAAC,mBAAmB;AAAA,IAClD,sCAAsC,CAAC,4BAA4B;AAAA,IACnE,OAAO,CAAC,6BAA6B;AAAA,IACrC,cAAc,CAAC,6BAA6B;AAAA,IAC5C,uBAAuB,CAAC,+CAA+C;AAAA,IACvE,sCAAsC,CAAC,gCAAgC;AAAA,IACvE,8BAA8B;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,kCAAkC,EAAE;AAAA,IAC3D;AAAA,IACA,kCAAkC,CAAC,qBAAqB;AAAA,IACxD,oCAAoC;AAAA,MAClC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,wCAAwC,EAAE;AAAA,IACjE;AAAA,IACA,wCAAwC,CAAC,iBAAiB;AAAA,IAC1D,yCAAyC,CAAC,6BAA6B;AAAA,IACvE,6BAA6B;AAAA,MAC3B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,iCAAiC,EAAE;AAAA,IAC1D;AAAA,IACA,iCAAiC,CAAC,qBAAqB;AAAA,IACvD,8BAA8B;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,kCAAkC,EAAE;AAAA,IAC3D;AAAA,IACA,kCAAkC,CAAC,oCAAoC;AAAA,IACvE,oCAAoC;AAAA,MAClC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,wCAAwC,EAAE;AAAA,IACjE;AAAA,IACA,wCAAwC,CAAC,4BAA4B;AAAA,IACrE,yCAAyC,CAAC,8BAA8B;AAAA,IACxE,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,gCAAgC;AAAA,IACzC,kBAAkB,CAAC,WAAW;AAAA,IAC9B,eAAe,CAAC,uBAAuB;AAAA,IACvC,mBAAmB,CAAC,iCAAiC;AAAA,IACrD,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,+BAA+B,EAAE;AAAA,IACxD;AAAA,IACA,+BAA+B,CAAC,iCAAiC;AAAA,IACjE,iCAAiC;AAAA,MAC/B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,qCAAqC,EAAE;AAAA,IAC9D;AAAA,IACA,qCAAqC,CAAC,yBAAyB;AAAA,IAC/D,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,MAAM,CAAC,YAAY;AAAA,IACnB,4BAA4B;AAAA,MAC1B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,gCAAgC,EAAE;AAAA,IACzD;AAAA,IACA,gCAAgC,CAAC,kBAAkB;AAAA,IACnD,4BAA4B;AAAA,MAC1B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,gCAAgC,EAAE;AAAA,IACzD;AAAA,IACA,gCAAgC,CAAC,kBAAkB;AAAA,IACnD,6BAA6B;AAAA,MAC3B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,iCAAiC,EAAE;AAAA,IAC1D;AAAA,IACA,iCAAiC,CAAC,qBAAqB;AAAA,IACvD,mCAAmC,CAAC,qBAAqB;AAAA,IACzD,sBAAsB,CAAC,iCAAiC;AAAA,IACxD,sBAAsB,CAAC,iCAAiC;AAAA,IACxD,6BAA6B;AAAA,MAC3B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,iCAAiC,EAAE;AAAA,IAC1D;AAAA,IACA,iCAAiC,CAAC,oBAAoB;AAAA,IACtD,oBAAoB,CAAC,gCAAgC;AAAA,IACrD,kCAAkC;AAAA,MAChC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,sCAAsC,EAAE;AAAA,IAC/D;AAAA,IACA,sCAAsC,CAAC,yBAAyB;AAAA,IAChE,uBAAuB,CAAC,4BAA4B;AAAA,IACpD,mCAAmC;AAAA,MACjC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,uCAAuC,EAAE;AAAA,IAChE;AAAA,IACA,uCAAuC,CAAC,gBAAgB;AAAA,IACxD,wCAAwC,CAAC,2BAA2B;AAAA,IACpE,2BAA2B,CAAC,uCAAuC;AAAA,IACnE,wCAAwC,CAAC,4BAA4B;AAAA,IACrE,2BAA2B,CAAC,wCAAwC;AAAA,IACpE,2CAA2C;AAAA,MACzC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,+CAA+C,EAAE;AAAA,IACxE;AAAA,IACA,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,SAAS,CAAC,gCAAgC;AAAA,IAC1C,UAAU,CAAC,mCAAmC;AAAA,IAC9C,qBAAqB,CAAC,aAAa;AAAA,EACrC;AACF;AACA,IAAI,oBAAoB;;;ACx4DxB,IAAM,qBAAqC,oBAAI,IAAI;AACnD,WAAW,CAAC,OAAO,SAAS,KAAK,OAAO,QAAQ,iBAAS,GAAG;AAC1D,aAAW,CAAC,YAAY,QAAQ,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC9D,UAAM,CAAC,OAAO,UAAU,WAAW,IAAI;AACvC,UAAM,CAAC,QAAQ,GAAG,IAAI,MAAM,MAAM,GAAG;AACrC,UAAM,mBAAmB,OAAO;AAAA,MAC9B;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,IACF;AACA,QAAI,CAAC,mBAAmB,IAAI,KAAK,GAAG;AAClC,yBAAmB,IAAI,OAAuB,oBAAI,IAAI,CAAC;AAAA,IACzD;AACA,uBAAmB,IAAI,KAAK,EAAE,IAAI,YAAY;AAAA,MAC5C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;AACA,IAAM,UAAU;AAAA,EACd,IAAI,EAAE,MAAM,GAAG,YAAY;AACzB,WAAO,mBAAmB,IAAI,KAAK,EAAE,IAAI,UAAU;AAAA,EACrD;AAAA,EACA,yBAAyB,QAAQ,YAAY;AAC3C,WAAO;AAAA,MACL,OAAO,KAAK,IAAI,QAAQ,UAAU;AAAA;AAAA,MAElC,cAAc;AAAA,MACd,UAAU;AAAA,MACV,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,eAAe,QAAQ,YAAY,YAAY;AAC7C,WAAO,eAAe,OAAO,OAAO,YAAY,UAAU;AAC1D,WAAO;AAAA,EACT;AAAA,EACA,eAAe,QAAQ,YAAY;AACjC,WAAO,OAAO,MAAM,UAAU;AAC9B,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,EAAE,MAAM,GAAG;AACjB,WAAO,CAAC,GAAG,mBAAmB,IAAI,KAAK,EAAE,KAAK,CAAC;AAAA,EACjD;AAAA,EACA,IAAI,QAAQ,YAAY,OAAO;AAC7B,WAAO,OAAO,MAAM,UAAU,IAAI;AAAA,EACpC;AAAA,EACA,IAAI,EAAE,SAAS,OAAO,MAAM,GAAG,YAAY;AACzC,QAAI,MAAM,UAAU,GAAG;AACrB,aAAO,MAAM,UAAU;AAAA,IACzB;AACA,UAAM,SAAS,mBAAmB,IAAI,KAAK,EAAE,IAAI,UAAU;AAC3D,QAAI,CAAC,QAAQ;AACX,aAAO;AAAA,IACT;AACA,UAAM,EAAE,kBAAkB,YAAY,IAAI;AAC1C,QAAI,aAAa;AACf,YAAM,UAAU,IAAI;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAM,UAAU,IAAI,QAAQ,QAAQ,SAAS,gBAAgB;AAAA,IAC/D;AACA,WAAO,MAAM,UAAU;AAAA,EACzB;AACF;AACA,SAAS,mBAAmB,SAAS;AACnC,QAAM,aAAa,CAAC;AACpB,aAAW,SAAS,mBAAmB,KAAK,GAAG;AAC7C,eAAW,KAAK,IAAI,IAAI,MAAM,EAAE,SAAS,OAAO,OAAO,CAAC,EAAE,GAAG,OAAO;AAAA,EACtE;AACA,SAAO;AACT;AACA,SAAS,SAAS,SAAS,OAAO,YAAY,UAAU,aAAa;AACnE,QAAM,sBAAsB,QAAQ,QAAQ,SAAS,QAAQ;AAC7D,WAAS,mBAAmB,MAAM;AAChC,QAAI,UAAU,oBAAoB,SAAS,MAAM,GAAG,IAAI;AACxD,QAAI,YAAY,WAAW;AACzB,gBAAU,OAAO,OAAO,CAAC,GAAG,SAAS;AAAA,QACnC,MAAM,QAAQ,YAAY,SAAS;AAAA,QACnC,CAAC,YAAY,SAAS,GAAG;AAAA,MAC3B,CAAC;AACD,aAAO,oBAAoB,OAAO;AAAA,IACpC;AACA,QAAI,YAAY,SAAS;AACvB,YAAM,CAAC,UAAU,aAAa,IAAI,YAAY;AAC9C,cAAQ,IAAI;AAAA,QACV,WAAW,KAAK,IAAI,UAAU,kCAAkC,QAAQ,IAAI,aAAa;AAAA,MAC3F;AAAA,IACF;AACA,QAAI,YAAY,YAAY;AAC1B,cAAQ,IAAI,KAAK,YAAY,UAAU;AAAA,IACzC;AACA,QAAI,YAAY,mBAAmB;AACjC,YAAM,WAAW,oBAAoB,SAAS,MAAM,GAAG,IAAI;AAC3D,iBAAW,CAAC,MAAM,KAAK,KAAK,OAAO;AAAA,QACjC,YAAY;AAAA,MACd,GAAG;AACD,YAAI,QAAQ,UAAU;AACpB,kBAAQ,IAAI;AAAA,YACV,IAAI,IAAI,0CAA0C,KAAK,IAAI,UAAU,aAAa,KAAK;AAAA,UACzF;AACA,cAAI,EAAE,SAAS,WAAW;AACxB,qBAAS,KAAK,IAAI,SAAS,IAAI;AAAA,UACjC;AACA,iBAAO,SAAS,IAAI;AAAA,QACtB;AAAA,MACF;AACA,aAAO,oBAAoB,QAAQ;AAAA,IACrC;AACA,WAAO,oBAAoB,GAAG,IAAI;AAAA,EACpC;AACA,SAAO,OAAO,OAAO,iBAAiB,mBAAmB;AAC3D;;;AHvHA,SAAS,oBAAoB,SAAS;AACpC,QAAM,MAAM,mBAAmB,OAAO;AACtC,SAAO;AAAA,IACL,MAAM;AAAA,EACR;AACF;AACA,oBAAoB,UAAU;AAC9B,SAAS,0BAA0B,SAAS;AAC1C,QAAM,MAAM,mBAAmB,OAAO;AACtC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM;AAAA,EACR;AACF;AACA,0BAA0B,UAAU;",
-  "names": []
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js
deleted file mode 100644
index 8a2aa96..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js
+++ /dev/null
@@ -1,125 +0,0 @@
-import ENDPOINTS from "./generated/endpoints.js";
-const endpointMethodsMap = /* @__PURE__ */ new Map();
-for (const [scope, endpoints] of Object.entries(ENDPOINTS)) {
-  for (const [methodName, endpoint] of Object.entries(endpoints)) {
-    const [route, defaults, decorations] = endpoint;
-    const [method, url] = route.split(/ /);
-    const endpointDefaults = Object.assign(
-      {
-        method,
-        url
-      },
-      defaults
-    );
-    if (!endpointMethodsMap.has(scope)) {
-      endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());
-    }
-    endpointMethodsMap.get(scope).set(methodName, {
-      scope,
-      methodName,
-      endpointDefaults,
-      decorations
-    });
-  }
-}
-const handler = {
-  has({ scope }, methodName) {
-    return endpointMethodsMap.get(scope).has(methodName);
-  },
-  getOwnPropertyDescriptor(target, methodName) {
-    return {
-      value: this.get(target, methodName),
-      // ensures method is in the cache
-      configurable: true,
-      writable: true,
-      enumerable: true
-    };
-  },
-  defineProperty(target, methodName, descriptor) {
-    Object.defineProperty(target.cache, methodName, descriptor);
-    return true;
-  },
-  deleteProperty(target, methodName) {
-    delete target.cache[methodName];
-    return true;
-  },
-  ownKeys({ scope }) {
-    return [...endpointMethodsMap.get(scope).keys()];
-  },
-  set(target, methodName, value) {
-    return target.cache[methodName] = value;
-  },
-  get({ octokit, scope, cache }, methodName) {
-    if (cache[methodName]) {
-      return cache[methodName];
-    }
-    const method = endpointMethodsMap.get(scope).get(methodName);
-    if (!method) {
-      return void 0;
-    }
-    const { endpointDefaults, decorations } = method;
-    if (decorations) {
-      cache[methodName] = decorate(
-        octokit,
-        scope,
-        methodName,
-        endpointDefaults,
-        decorations
-      );
-    } else {
-      cache[methodName] = octokit.request.defaults(endpointDefaults);
-    }
-    return cache[methodName];
-  }
-};
-function endpointsToMethods(octokit) {
-  const newMethods = {};
-  for (const scope of endpointMethodsMap.keys()) {
-    newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);
-  }
-  return newMethods;
-}
-function decorate(octokit, scope, methodName, defaults, decorations) {
-  const requestWithDefaults = octokit.request.defaults(defaults);
-  function withDecorations(...args) {
-    let options = requestWithDefaults.endpoint.merge(...args);
-    if (decorations.mapToData) {
-      options = Object.assign({}, options, {
-        data: options[decorations.mapToData],
-        [decorations.mapToData]: void 0
-      });
-      return requestWithDefaults(options);
-    }
-    if (decorations.renamed) {
-      const [newScope, newMethodName] = decorations.renamed;
-      octokit.log.warn(
-        `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`
-      );
-    }
-    if (decorations.deprecated) {
-      octokit.log.warn(decorations.deprecated);
-    }
-    if (decorations.renamedParameters) {
-      const options2 = requestWithDefaults.endpoint.merge(...args);
-      for (const [name, alias] of Object.entries(
-        decorations.renamedParameters
-      )) {
-        if (name in options2) {
-          octokit.log.warn(
-            `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`
-          );
-          if (!(alias in options2)) {
-            options2[alias] = options2[name];
-          }
-          delete options2[name];
-        }
-      }
-      return requestWithDefaults(options2);
-    }
-    return requestWithDefaults(...args);
-  }
-  return Object.assign(withDecorations, requestWithDefaults);
-}
-export {
-  endpointsToMethods
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js
deleted file mode 100644
index 494b3ae..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js
+++ /dev/null
@@ -1,1933 +0,0 @@
-const Endpoints = {
-  actions: {
-    addCustomLabelsToSelfHostedRunnerForOrg: [
-      "POST /orgs/{org}/actions/runners/{runner_id}/labels"
-    ],
-    addCustomLabelsToSelfHostedRunnerForRepo: [
-      "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
-    ],
-    addSelectedRepoToOrgSecret: [
-      "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    addSelectedRepoToOrgVariable: [
-      "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"
-    ],
-    approveWorkflowRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"
-    ],
-    cancelWorkflowRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"
-    ],
-    createEnvironmentVariable: [
-      "POST /repositories/{repository_id}/environments/{environment_name}/variables"
-    ],
-    createOrUpdateEnvironmentSecret: [
-      "PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"
-    ],
-    createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
-    createOrUpdateRepoSecret: [
-      "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"
-    ],
-    createOrgVariable: ["POST /orgs/{org}/actions/variables"],
-    createRegistrationTokenForOrg: [
-      "POST /orgs/{org}/actions/runners/registration-token"
-    ],
-    createRegistrationTokenForRepo: [
-      "POST /repos/{owner}/{repo}/actions/runners/registration-token"
-    ],
-    createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"],
-    createRemoveTokenForRepo: [
-      "POST /repos/{owner}/{repo}/actions/runners/remove-token"
-    ],
-    createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"],
-    createWorkflowDispatch: [
-      "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"
-    ],
-    deleteActionsCacheById: [
-      "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"
-    ],
-    deleteActionsCacheByKey: [
-      "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"
-    ],
-    deleteArtifact: [
-      "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"
-    ],
-    deleteEnvironmentSecret: [
-      "DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"
-    ],
-    deleteEnvironmentVariable: [
-      "DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}"
-    ],
-    deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
-    deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"],
-    deleteRepoSecret: [
-      "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"
-    ],
-    deleteRepoVariable: [
-      "DELETE /repos/{owner}/{repo}/actions/variables/{name}"
-    ],
-    deleteSelfHostedRunnerFromOrg: [
-      "DELETE /orgs/{org}/actions/runners/{runner_id}"
-    ],
-    deleteSelfHostedRunnerFromRepo: [
-      "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"
-    ],
-    deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],
-    deleteWorkflowRunLogs: [
-      "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"
-    ],
-    disableSelectedRepositoryGithubActionsOrganization: [
-      "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"
-    ],
-    disableWorkflow: [
-      "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"
-    ],
-    downloadArtifact: [
-      "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"
-    ],
-    downloadJobLogsForWorkflowRun: [
-      "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"
-    ],
-    downloadWorkflowRunAttemptLogs: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"
-    ],
-    downloadWorkflowRunLogs: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"
-    ],
-    enableSelectedRepositoryGithubActionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"
-    ],
-    enableWorkflow: [
-      "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"
-    ],
-    forceCancelWorkflowRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"
-    ],
-    generateRunnerJitconfigForOrg: [
-      "POST /orgs/{org}/actions/runners/generate-jitconfig"
-    ],
-    generateRunnerJitconfigForRepo: [
-      "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"
-    ],
-    getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"],
-    getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"],
-    getActionsCacheUsageByRepoForOrg: [
-      "GET /orgs/{org}/actions/cache/usage-by-repository"
-    ],
-    getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"],
-    getAllowedActionsOrganization: [
-      "GET /orgs/{org}/actions/permissions/selected-actions"
-    ],
-    getAllowedActionsRepository: [
-      "GET /repos/{owner}/{repo}/actions/permissions/selected-actions"
-    ],
-    getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
-    getEnvironmentPublicKey: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"
-    ],
-    getEnvironmentSecret: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"
-    ],
-    getEnvironmentVariable: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}"
-    ],
-    getGithubActionsDefaultWorkflowPermissionsOrganization: [
-      "GET /orgs/{org}/actions/permissions/workflow"
-    ],
-    getGithubActionsDefaultWorkflowPermissionsRepository: [
-      "GET /repos/{owner}/{repo}/actions/permissions/workflow"
-    ],
-    getGithubActionsPermissionsOrganization: [
-      "GET /orgs/{org}/actions/permissions"
-    ],
-    getGithubActionsPermissionsRepository: [
-      "GET /repos/{owner}/{repo}/actions/permissions"
-    ],
-    getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
-    getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
-    getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
-    getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"],
-    getPendingDeploymentsForRun: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"
-    ],
-    getRepoPermissions: [
-      "GET /repos/{owner}/{repo}/actions/permissions",
-      {},
-      { renamed: ["actions", "getGithubActionsPermissionsRepository"] }
-    ],
-    getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
-    getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
-    getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"],
-    getReviewsForRun: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"
-    ],
-    getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
-    getSelfHostedRunnerForRepo: [
-      "GET /repos/{owner}/{repo}/actions/runners/{runner_id}"
-    ],
-    getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
-    getWorkflowAccessToRepository: [
-      "GET /repos/{owner}/{repo}/actions/permissions/access"
-    ],
-    getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],
-    getWorkflowRunAttempt: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"
-    ],
-    getWorkflowRunUsage: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"
-    ],
-    getWorkflowUsage: [
-      "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"
-    ],
-    listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
-    listEnvironmentSecrets: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/secrets"
-    ],
-    listEnvironmentVariables: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/variables"
-    ],
-    listJobsForWorkflowRun: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"
-    ],
-    listJobsForWorkflowRunAttempt: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"
-    ],
-    listLabelsForSelfHostedRunnerForOrg: [
-      "GET /orgs/{org}/actions/runners/{runner_id}/labels"
-    ],
-    listLabelsForSelfHostedRunnerForRepo: [
-      "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
-    ],
-    listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
-    listOrgVariables: ["GET /orgs/{org}/actions/variables"],
-    listRepoOrganizationSecrets: [
-      "GET /repos/{owner}/{repo}/actions/organization-secrets"
-    ],
-    listRepoOrganizationVariables: [
-      "GET /repos/{owner}/{repo}/actions/organization-variables"
-    ],
-    listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
-    listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"],
-    listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"],
-    listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"],
-    listRunnerApplicationsForRepo: [
-      "GET /repos/{owner}/{repo}/actions/runners/downloads"
-    ],
-    listSelectedReposForOrgSecret: [
-      "GET /orgs/{org}/actions/secrets/{secret_name}/repositories"
-    ],
-    listSelectedReposForOrgVariable: [
-      "GET /orgs/{org}/actions/variables/{name}/repositories"
-    ],
-    listSelectedRepositoriesEnabledGithubActionsOrganization: [
-      "GET /orgs/{org}/actions/permissions/repositories"
-    ],
-    listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"],
-    listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"],
-    listWorkflowRunArtifacts: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"
-    ],
-    listWorkflowRuns: [
-      "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"
-    ],
-    listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
-    reRunJobForWorkflowRun: [
-      "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"
-    ],
-    reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
-    reRunWorkflowFailedJobs: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"
-    ],
-    removeAllCustomLabelsFromSelfHostedRunnerForOrg: [
-      "DELETE /orgs/{org}/actions/runners/{runner_id}/labels"
-    ],
-    removeAllCustomLabelsFromSelfHostedRunnerForRepo: [
-      "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
-    ],
-    removeCustomLabelFromSelfHostedRunnerForOrg: [
-      "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"
-    ],
-    removeCustomLabelFromSelfHostedRunnerForRepo: [
-      "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"
-    ],
-    removeSelectedRepoFromOrgSecret: [
-      "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    removeSelectedRepoFromOrgVariable: [
-      "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"
-    ],
-    reviewCustomGatesForRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"
-    ],
-    reviewPendingDeploymentsForRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"
-    ],
-    setAllowedActionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions/selected-actions"
-    ],
-    setAllowedActionsRepository: [
-      "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"
-    ],
-    setCustomLabelsForSelfHostedRunnerForOrg: [
-      "PUT /orgs/{org}/actions/runners/{runner_id}/labels"
-    ],
-    setCustomLabelsForSelfHostedRunnerForRepo: [
-      "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
-    ],
-    setGithubActionsDefaultWorkflowPermissionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions/workflow"
-    ],
-    setGithubActionsDefaultWorkflowPermissionsRepository: [
-      "PUT /repos/{owner}/{repo}/actions/permissions/workflow"
-    ],
-    setGithubActionsPermissionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions"
-    ],
-    setGithubActionsPermissionsRepository: [
-      "PUT /repos/{owner}/{repo}/actions/permissions"
-    ],
-    setSelectedReposForOrgSecret: [
-      "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"
-    ],
-    setSelectedReposForOrgVariable: [
-      "PUT /orgs/{org}/actions/variables/{name}/repositories"
-    ],
-    setSelectedRepositoriesEnabledGithubActionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions/repositories"
-    ],
-    setWorkflowAccessToRepository: [
-      "PUT /repos/{owner}/{repo}/actions/permissions/access"
-    ],
-    updateEnvironmentVariable: [
-      "PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}"
-    ],
-    updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"],
-    updateRepoVariable: [
-      "PATCH /repos/{owner}/{repo}/actions/variables/{name}"
-    ]
-  },
-  activity: {
-    checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"],
-    deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"],
-    deleteThreadSubscription: [
-      "DELETE /notifications/threads/{thread_id}/subscription"
-    ],
-    getFeeds: ["GET /feeds"],
-    getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"],
-    getThread: ["GET /notifications/threads/{thread_id}"],
-    getThreadSubscriptionForAuthenticatedUser: [
-      "GET /notifications/threads/{thread_id}/subscription"
-    ],
-    listEventsForAuthenticatedUser: ["GET /users/{username}/events"],
-    listNotificationsForAuthenticatedUser: ["GET /notifications"],
-    listOrgEventsForAuthenticatedUser: [
-      "GET /users/{username}/events/orgs/{org}"
-    ],
-    listPublicEvents: ["GET /events"],
-    listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"],
-    listPublicEventsForUser: ["GET /users/{username}/events/public"],
-    listPublicOrgEvents: ["GET /orgs/{org}/events"],
-    listReceivedEventsForUser: ["GET /users/{username}/received_events"],
-    listReceivedPublicEventsForUser: [
-      "GET /users/{username}/received_events/public"
-    ],
-    listRepoEvents: ["GET /repos/{owner}/{repo}/events"],
-    listRepoNotificationsForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/notifications"
-    ],
-    listReposStarredByAuthenticatedUser: ["GET /user/starred"],
-    listReposStarredByUser: ["GET /users/{username}/starred"],
-    listReposWatchedByUser: ["GET /users/{username}/subscriptions"],
-    listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"],
-    listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"],
-    listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"],
-    markNotificationsAsRead: ["PUT /notifications"],
-    markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"],
-    markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"],
-    setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"],
-    setThreadSubscription: [
-      "PUT /notifications/threads/{thread_id}/subscription"
-    ],
-    starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"],
-    unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"]
-  },
-  apps: {
-    addRepoToInstallation: [
-      "PUT /user/installations/{installation_id}/repositories/{repository_id}",
-      {},
-      { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] }
-    ],
-    addRepoToInstallationForAuthenticatedUser: [
-      "PUT /user/installations/{installation_id}/repositories/{repository_id}"
-    ],
-    checkToken: ["POST /applications/{client_id}/token"],
-    createFromManifest: ["POST /app-manifests/{code}/conversions"],
-    createInstallationAccessToken: [
-      "POST /app/installations/{installation_id}/access_tokens"
-    ],
-    deleteAuthorization: ["DELETE /applications/{client_id}/grant"],
-    deleteInstallation: ["DELETE /app/installations/{installation_id}"],
-    deleteToken: ["DELETE /applications/{client_id}/token"],
-    getAuthenticated: ["GET /app"],
-    getBySlug: ["GET /apps/{app_slug}"],
-    getInstallation: ["GET /app/installations/{installation_id}"],
-    getOrgInstallation: ["GET /orgs/{org}/installation"],
-    getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"],
-    getSubscriptionPlanForAccount: [
-      "GET /marketplace_listing/accounts/{account_id}"
-    ],
-    getSubscriptionPlanForAccountStubbed: [
-      "GET /marketplace_listing/stubbed/accounts/{account_id}"
-    ],
-    getUserInstallation: ["GET /users/{username}/installation"],
-    getWebhookConfigForApp: ["GET /app/hook/config"],
-    getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"],
-    listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"],
-    listAccountsForPlanStubbed: [
-      "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"
-    ],
-    listInstallationReposForAuthenticatedUser: [
-      "GET /user/installations/{installation_id}/repositories"
-    ],
-    listInstallationRequestsForAuthenticatedApp: [
-      "GET /app/installation-requests"
-    ],
-    listInstallations: ["GET /app/installations"],
-    listInstallationsForAuthenticatedUser: ["GET /user/installations"],
-    listPlans: ["GET /marketplace_listing/plans"],
-    listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"],
-    listReposAccessibleToInstallation: ["GET /installation/repositories"],
-    listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"],
-    listSubscriptionsForAuthenticatedUserStubbed: [
-      "GET /user/marketplace_purchases/stubbed"
-    ],
-    listWebhookDeliveries: ["GET /app/hook/deliveries"],
-    redeliverWebhookDelivery: [
-      "POST /app/hook/deliveries/{delivery_id}/attempts"
-    ],
-    removeRepoFromInstallation: [
-      "DELETE /user/installations/{installation_id}/repositories/{repository_id}",
-      {},
-      { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] }
-    ],
-    removeRepoFromInstallationForAuthenticatedUser: [
-      "DELETE /user/installations/{installation_id}/repositories/{repository_id}"
-    ],
-    resetToken: ["PATCH /applications/{client_id}/token"],
-    revokeInstallationAccessToken: ["DELETE /installation/token"],
-    scopeToken: ["POST /applications/{client_id}/token/scoped"],
-    suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"],
-    unsuspendInstallation: [
-      "DELETE /app/installations/{installation_id}/suspended"
-    ],
-    updateWebhookConfigForApp: ["PATCH /app/hook/config"]
-  },
-  billing: {
-    getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"],
-    getGithubActionsBillingUser: [
-      "GET /users/{username}/settings/billing/actions"
-    ],
-    getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"],
-    getGithubPackagesBillingUser: [
-      "GET /users/{username}/settings/billing/packages"
-    ],
-    getSharedStorageBillingOrg: [
-      "GET /orgs/{org}/settings/billing/shared-storage"
-    ],
-    getSharedStorageBillingUser: [
-      "GET /users/{username}/settings/billing/shared-storage"
-    ]
-  },
-  checks: {
-    create: ["POST /repos/{owner}/{repo}/check-runs"],
-    createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
-    get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],
-    getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],
-    listAnnotations: [
-      "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"
-    ],
-    listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],
-    listForSuite: [
-      "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"
-    ],
-    listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],
-    rerequestRun: [
-      "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"
-    ],
-    rerequestSuite: [
-      "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"
-    ],
-    setSuitesPreferences: [
-      "PATCH /repos/{owner}/{repo}/check-suites/preferences"
-    ],
-    update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]
-  },
-  codeScanning: {
-    deleteAnalysis: [
-      "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"
-    ],
-    getAlert: [
-      "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",
-      {},
-      { renamedParameters: { alert_id: "alert_number" } }
-    ],
-    getAnalysis: [
-      "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"
-    ],
-    getCodeqlDatabase: [
-      "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"
-    ],
-    getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"],
-    getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],
-    listAlertInstances: [
-      "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"
-    ],
-    listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"],
-    listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"],
-    listAlertsInstances: [
-      "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
-      {},
-      { renamed: ["codeScanning", "listAlertInstances"] }
-    ],
-    listCodeqlDatabases: [
-      "GET /repos/{owner}/{repo}/code-scanning/codeql/databases"
-    ],
-    listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"],
-    updateAlert: [
-      "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"
-    ],
-    updateDefaultSetup: [
-      "PATCH /repos/{owner}/{repo}/code-scanning/default-setup"
-    ],
-    uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"]
-  },
-  codesOfConduct: {
-    getAllCodesOfConduct: ["GET /codes_of_conduct"],
-    getConductCode: ["GET /codes_of_conduct/{key}"]
-  },
-  codespaces: {
-    addRepositoryForSecretForAuthenticatedUser: [
-      "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    addSelectedRepoToOrgSecret: [
-      "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    checkPermissionsForDevcontainer: [
-      "GET /repos/{owner}/{repo}/codespaces/permissions_check"
-    ],
-    codespaceMachinesForAuthenticatedUser: [
-      "GET /user/codespaces/{codespace_name}/machines"
-    ],
-    createForAuthenticatedUser: ["POST /user/codespaces"],
-    createOrUpdateOrgSecret: [
-      "PUT /orgs/{org}/codespaces/secrets/{secret_name}"
-    ],
-    createOrUpdateRepoSecret: [
-      "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
-    ],
-    createOrUpdateSecretForAuthenticatedUser: [
-      "PUT /user/codespaces/secrets/{secret_name}"
-    ],
-    createWithPrForAuthenticatedUser: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"
-    ],
-    createWithRepoForAuthenticatedUser: [
-      "POST /repos/{owner}/{repo}/codespaces"
-    ],
-    deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"],
-    deleteFromOrganization: [
-      "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"
-    ],
-    deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],
-    deleteRepoSecret: [
-      "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
-    ],
-    deleteSecretForAuthenticatedUser: [
-      "DELETE /user/codespaces/secrets/{secret_name}"
-    ],
-    exportForAuthenticatedUser: [
-      "POST /user/codespaces/{codespace_name}/exports"
-    ],
-    getCodespacesForUserInOrg: [
-      "GET /orgs/{org}/members/{username}/codespaces"
-    ],
-    getExportDetailsForAuthenticatedUser: [
-      "GET /user/codespaces/{codespace_name}/exports/{export_id}"
-    ],
-    getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"],
-    getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"],
-    getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"],
-    getPublicKeyForAuthenticatedUser: [
-      "GET /user/codespaces/secrets/public-key"
-    ],
-    getRepoPublicKey: [
-      "GET /repos/{owner}/{repo}/codespaces/secrets/public-key"
-    ],
-    getRepoSecret: [
-      "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
-    ],
-    getSecretForAuthenticatedUser: [
-      "GET /user/codespaces/secrets/{secret_name}"
-    ],
-    listDevcontainersInRepositoryForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/codespaces/devcontainers"
-    ],
-    listForAuthenticatedUser: ["GET /user/codespaces"],
-    listInOrganization: [
-      "GET /orgs/{org}/codespaces",
-      {},
-      { renamedParameters: { org_id: "org" } }
-    ],
-    listInRepositoryForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/codespaces"
-    ],
-    listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"],
-    listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
-    listRepositoriesForSecretForAuthenticatedUser: [
-      "GET /user/codespaces/secrets/{secret_name}/repositories"
-    ],
-    listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"],
-    listSelectedReposForOrgSecret: [
-      "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"
-    ],
-    preFlightWithRepoForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/codespaces/new"
-    ],
-    publishForAuthenticatedUser: [
-      "POST /user/codespaces/{codespace_name}/publish"
-    ],
-    removeRepositoryForSecretForAuthenticatedUser: [
-      "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    removeSelectedRepoFromOrgSecret: [
-      "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    repoMachinesForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/codespaces/machines"
-    ],
-    setRepositoriesForSecretForAuthenticatedUser: [
-      "PUT /user/codespaces/secrets/{secret_name}/repositories"
-    ],
-    setSelectedReposForOrgSecret: [
-      "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"
-    ],
-    startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"],
-    stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"],
-    stopInOrganization: [
-      "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"
-    ],
-    updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
-  },
-  copilot: {
-    addCopilotForBusinessSeatsForTeams: [
-      "POST /orgs/{org}/copilot/billing/selected_teams"
-    ],
-    addCopilotForBusinessSeatsForUsers: [
-      "POST /orgs/{org}/copilot/billing/selected_users"
-    ],
-    cancelCopilotSeatAssignmentForTeams: [
-      "DELETE /orgs/{org}/copilot/billing/selected_teams"
-    ],
-    cancelCopilotSeatAssignmentForUsers: [
-      "DELETE /orgs/{org}/copilot/billing/selected_users"
-    ],
-    getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"],
-    getCopilotSeatDetailsForUser: [
-      "GET /orgs/{org}/members/{username}/copilot"
-    ],
-    listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"]
-  },
-  dependabot: {
-    addSelectedRepoToOrgSecret: [
-      "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    createOrUpdateOrgSecret: [
-      "PUT /orgs/{org}/dependabot/secrets/{secret_name}"
-    ],
-    createOrUpdateRepoSecret: [
-      "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
-    ],
-    deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],
-    deleteRepoSecret: [
-      "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
-    ],
-    getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],
-    getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"],
-    getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"],
-    getRepoPublicKey: [
-      "GET /repos/{owner}/{repo}/dependabot/secrets/public-key"
-    ],
-    getRepoSecret: [
-      "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
-    ],
-    listAlertsForEnterprise: [
-      "GET /enterprises/{enterprise}/dependabot/alerts"
-    ],
-    listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"],
-    listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"],
-    listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"],
-    listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"],
-    listSelectedReposForOrgSecret: [
-      "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"
-    ],
-    removeSelectedRepoFromOrgSecret: [
-      "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    setSelectedReposForOrgSecret: [
-      "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"
-    ],
-    updateAlert: [
-      "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"
-    ]
-  },
-  dependencyGraph: {
-    createRepositorySnapshot: [
-      "POST /repos/{owner}/{repo}/dependency-graph/snapshots"
-    ],
-    diffRange: [
-      "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"
-    ],
-    exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"]
-  },
-  emojis: { get: ["GET /emojis"] },
-  gists: {
-    checkIsStarred: ["GET /gists/{gist_id}/star"],
-    create: ["POST /gists"],
-    createComment: ["POST /gists/{gist_id}/comments"],
-    delete: ["DELETE /gists/{gist_id}"],
-    deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"],
-    fork: ["POST /gists/{gist_id}/forks"],
-    get: ["GET /gists/{gist_id}"],
-    getComment: ["GET /gists/{gist_id}/comments/{comment_id}"],
-    getRevision: ["GET /gists/{gist_id}/{sha}"],
-    list: ["GET /gists"],
-    listComments: ["GET /gists/{gist_id}/comments"],
-    listCommits: ["GET /gists/{gist_id}/commits"],
-    listForUser: ["GET /users/{username}/gists"],
-    listForks: ["GET /gists/{gist_id}/forks"],
-    listPublic: ["GET /gists/public"],
-    listStarred: ["GET /gists/starred"],
-    star: ["PUT /gists/{gist_id}/star"],
-    unstar: ["DELETE /gists/{gist_id}/star"],
-    update: ["PATCH /gists/{gist_id}"],
-    updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"]
-  },
-  git: {
-    createBlob: ["POST /repos/{owner}/{repo}/git/blobs"],
-    createCommit: ["POST /repos/{owner}/{repo}/git/commits"],
-    createRef: ["POST /repos/{owner}/{repo}/git/refs"],
-    createTag: ["POST /repos/{owner}/{repo}/git/tags"],
-    createTree: ["POST /repos/{owner}/{repo}/git/trees"],
-    deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],
-    getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],
-    getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],
-    getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"],
-    getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],
-    getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],
-    listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],
-    updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]
-  },
-  gitignore: {
-    getAllTemplates: ["GET /gitignore/templates"],
-    getTemplate: ["GET /gitignore/templates/{name}"]
-  },
-  interactions: {
-    getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
-    getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
-    getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"],
-    getRestrictionsForYourPublicRepos: [
-      "GET /user/interaction-limits",
-      {},
-      { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] }
-    ],
-    removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"],
-    removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"],
-    removeRestrictionsForRepo: [
-      "DELETE /repos/{owner}/{repo}/interaction-limits"
-    ],
-    removeRestrictionsForYourPublicRepos: [
-      "DELETE /user/interaction-limits",
-      {},
-      { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] }
-    ],
-    setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"],
-    setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"],
-    setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"],
-    setRestrictionsForYourPublicRepos: [
-      "PUT /user/interaction-limits",
-      {},
-      { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] }
-    ]
-  },
-  issues: {
-    addAssignees: [
-      "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"
-    ],
-    addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],
-    checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"],
-    checkUserCanBeAssignedToIssue: [
-      "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"
-    ],
-    create: ["POST /repos/{owner}/{repo}/issues"],
-    createComment: [
-      "POST /repos/{owner}/{repo}/issues/{issue_number}/comments"
-    ],
-    createLabel: ["POST /repos/{owner}/{repo}/labels"],
-    createMilestone: ["POST /repos/{owner}/{repo}/milestones"],
-    deleteComment: [
-      "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"
-    ],
-    deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"],
-    deleteMilestone: [
-      "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"
-    ],
-    get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"],
-    getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],
-    getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"],
-    getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"],
-    getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],
-    list: ["GET /issues"],
-    listAssignees: ["GET /repos/{owner}/{repo}/assignees"],
-    listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],
-    listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"],
-    listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],
-    listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"],
-    listEventsForTimeline: [
-      "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"
-    ],
-    listForAuthenticatedUser: ["GET /user/issues"],
-    listForOrg: ["GET /orgs/{org}/issues"],
-    listForRepo: ["GET /repos/{owner}/{repo}/issues"],
-    listLabelsForMilestone: [
-      "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"
-    ],
-    listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"],
-    listLabelsOnIssue: [
-      "GET /repos/{owner}/{repo}/issues/{issue_number}/labels"
-    ],
-    listMilestones: ["GET /repos/{owner}/{repo}/milestones"],
-    lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],
-    removeAllLabels: [
-      "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"
-    ],
-    removeAssignees: [
-      "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"
-    ],
-    removeLabel: [
-      "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"
-    ],
-    setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],
-    unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],
-    update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],
-    updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],
-    updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"],
-    updateMilestone: [
-      "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"
-    ]
-  },
-  licenses: {
-    get: ["GET /licenses/{license}"],
-    getAllCommonlyUsed: ["GET /licenses"],
-    getForRepo: ["GET /repos/{owner}/{repo}/license"]
-  },
-  markdown: {
-    render: ["POST /markdown"],
-    renderRaw: [
-      "POST /markdown/raw",
-      { headers: { "content-type": "text/plain; charset=utf-8" } }
-    ]
-  },
-  meta: {
-    get: ["GET /meta"],
-    getAllVersions: ["GET /versions"],
-    getOctocat: ["GET /octocat"],
-    getZen: ["GET /zen"],
-    root: ["GET /"]
-  },
-  migrations: {
-    cancelImport: [
-      "DELETE /repos/{owner}/{repo}/import",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import"
-      }
-    ],
-    deleteArchiveForAuthenticatedUser: [
-      "DELETE /user/migrations/{migration_id}/archive"
-    ],
-    deleteArchiveForOrg: [
-      "DELETE /orgs/{org}/migrations/{migration_id}/archive"
-    ],
-    downloadArchiveForOrg: [
-      "GET /orgs/{org}/migrations/{migration_id}/archive"
-    ],
-    getArchiveForAuthenticatedUser: [
-      "GET /user/migrations/{migration_id}/archive"
-    ],
-    getCommitAuthors: [
-      "GET /repos/{owner}/{repo}/import/authors",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors"
-      }
-    ],
-    getImportStatus: [
-      "GET /repos/{owner}/{repo}/import",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status"
-      }
-    ],
-    getLargeFiles: [
-      "GET /repos/{owner}/{repo}/import/large_files",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files"
-      }
-    ],
-    getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"],
-    getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"],
-    listForAuthenticatedUser: ["GET /user/migrations"],
-    listForOrg: ["GET /orgs/{org}/migrations"],
-    listReposForAuthenticatedUser: [
-      "GET /user/migrations/{migration_id}/repositories"
-    ],
-    listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"],
-    listReposForUser: [
-      "GET /user/migrations/{migration_id}/repositories",
-      {},
-      { renamed: ["migrations", "listReposForAuthenticatedUser"] }
-    ],
-    mapCommitAuthor: [
-      "PATCH /repos/{owner}/{repo}/import/authors/{author_id}",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author"
-      }
-    ],
-    setLfsPreference: [
-      "PATCH /repos/{owner}/{repo}/import/lfs",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference"
-      }
-    ],
-    startForAuthenticatedUser: ["POST /user/migrations"],
-    startForOrg: ["POST /orgs/{org}/migrations"],
-    startImport: [
-      "PUT /repos/{owner}/{repo}/import",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import"
-      }
-    ],
-    unlockRepoForAuthenticatedUser: [
-      "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"
-    ],
-    unlockRepoForOrg: [
-      "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"
-    ],
-    updateImport: [
-      "PATCH /repos/{owner}/{repo}/import",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import"
-      }
-    ]
-  },
-  orgs: {
-    addSecurityManagerTeam: [
-      "PUT /orgs/{org}/security-managers/teams/{team_slug}"
-    ],
-    blockUser: ["PUT /orgs/{org}/blocks/{username}"],
-    cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"],
-    checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"],
-    checkMembershipForUser: ["GET /orgs/{org}/members/{username}"],
-    checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"],
-    convertMemberToOutsideCollaborator: [
-      "PUT /orgs/{org}/outside_collaborators/{username}"
-    ],
-    createInvitation: ["POST /orgs/{org}/invitations"],
-    createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"],
-    createOrUpdateCustomPropertiesValuesForRepos: [
-      "PATCH /orgs/{org}/properties/values"
-    ],
-    createOrUpdateCustomProperty: [
-      "PUT /orgs/{org}/properties/schema/{custom_property_name}"
-    ],
-    createWebhook: ["POST /orgs/{org}/hooks"],
-    delete: ["DELETE /orgs/{org}"],
-    deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
-    enableOrDisableSecurityProductOnAllOrgRepos: [
-      "POST /orgs/{org}/{security_product}/{enablement}"
-    ],
-    get: ["GET /orgs/{org}"],
-    getAllCustomProperties: ["GET /orgs/{org}/properties/schema"],
-    getCustomProperty: [
-      "GET /orgs/{org}/properties/schema/{custom_property_name}"
-    ],
-    getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
-    getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
-    getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
-    getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
-    getWebhookDelivery: [
-      "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"
-    ],
-    list: ["GET /organizations"],
-    listAppInstallations: ["GET /orgs/{org}/installations"],
-    listBlockedUsers: ["GET /orgs/{org}/blocks"],
-    listCustomPropertiesValuesForRepos: ["GET /orgs/{org}/properties/values"],
-    listFailedInvitations: ["GET /orgs/{org}/failed_invitations"],
-    listForAuthenticatedUser: ["GET /user/orgs"],
-    listForUser: ["GET /users/{username}/orgs"],
-    listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
-    listMembers: ["GET /orgs/{org}/members"],
-    listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
-    listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"],
-    listPatGrantRepositories: [
-      "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"
-    ],
-    listPatGrantRequestRepositories: [
-      "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"
-    ],
-    listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"],
-    listPatGrants: ["GET /orgs/{org}/personal-access-tokens"],
-    listPendingInvitations: ["GET /orgs/{org}/invitations"],
-    listPublicMembers: ["GET /orgs/{org}/public_members"],
-    listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"],
-    listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"],
-    listWebhooks: ["GET /orgs/{org}/hooks"],
-    pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"],
-    redeliverWebhookDelivery: [
-      "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
-    ],
-    removeCustomProperty: [
-      "DELETE /orgs/{org}/properties/schema/{custom_property_name}"
-    ],
-    removeMember: ["DELETE /orgs/{org}/members/{username}"],
-    removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"],
-    removeOutsideCollaborator: [
-      "DELETE /orgs/{org}/outside_collaborators/{username}"
-    ],
-    removePublicMembershipForAuthenticatedUser: [
-      "DELETE /orgs/{org}/public_members/{username}"
-    ],
-    removeSecurityManagerTeam: [
-      "DELETE /orgs/{org}/security-managers/teams/{team_slug}"
-    ],
-    reviewPatGrantRequest: [
-      "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"
-    ],
-    reviewPatGrantRequestsInBulk: [
-      "POST /orgs/{org}/personal-access-token-requests"
-    ],
-    setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"],
-    setPublicMembershipForAuthenticatedUser: [
-      "PUT /orgs/{org}/public_members/{username}"
-    ],
-    unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
-    update: ["PATCH /orgs/{org}"],
-    updateMembershipForAuthenticatedUser: [
-      "PATCH /user/memberships/orgs/{org}"
-    ],
-    updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"],
-    updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"],
-    updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"],
-    updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"]
-  },
-  packages: {
-    deletePackageForAuthenticatedUser: [
-      "DELETE /user/packages/{package_type}/{package_name}"
-    ],
-    deletePackageForOrg: [
-      "DELETE /orgs/{org}/packages/{package_type}/{package_name}"
-    ],
-    deletePackageForUser: [
-      "DELETE /users/{username}/packages/{package_type}/{package_name}"
-    ],
-    deletePackageVersionForAuthenticatedUser: [
-      "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    deletePackageVersionForOrg: [
-      "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    deletePackageVersionForUser: [
-      "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    getAllPackageVersionsForAPackageOwnedByAnOrg: [
-      "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
-      {},
-      { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] }
-    ],
-    getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [
-      "GET /user/packages/{package_type}/{package_name}/versions",
-      {},
-      {
-        renamed: [
-          "packages",
-          "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"
-        ]
-      }
-    ],
-    getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [
-      "GET /user/packages/{package_type}/{package_name}/versions"
-    ],
-    getAllPackageVersionsForPackageOwnedByOrg: [
-      "GET /orgs/{org}/packages/{package_type}/{package_name}/versions"
-    ],
-    getAllPackageVersionsForPackageOwnedByUser: [
-      "GET /users/{username}/packages/{package_type}/{package_name}/versions"
-    ],
-    getPackageForAuthenticatedUser: [
-      "GET /user/packages/{package_type}/{package_name}"
-    ],
-    getPackageForOrganization: [
-      "GET /orgs/{org}/packages/{package_type}/{package_name}"
-    ],
-    getPackageForUser: [
-      "GET /users/{username}/packages/{package_type}/{package_name}"
-    ],
-    getPackageVersionForAuthenticatedUser: [
-      "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    getPackageVersionForOrganization: [
-      "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    getPackageVersionForUser: [
-      "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    listDockerMigrationConflictingPackagesForAuthenticatedUser: [
-      "GET /user/docker/conflicts"
-    ],
-    listDockerMigrationConflictingPackagesForOrganization: [
-      "GET /orgs/{org}/docker/conflicts"
-    ],
-    listDockerMigrationConflictingPackagesForUser: [
-      "GET /users/{username}/docker/conflicts"
-    ],
-    listPackagesForAuthenticatedUser: ["GET /user/packages"],
-    listPackagesForOrganization: ["GET /orgs/{org}/packages"],
-    listPackagesForUser: ["GET /users/{username}/packages"],
-    restorePackageForAuthenticatedUser: [
-      "POST /user/packages/{package_type}/{package_name}/restore{?token}"
-    ],
-    restorePackageForOrg: [
-      "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"
-    ],
-    restorePackageForUser: [
-      "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"
-    ],
-    restorePackageVersionForAuthenticatedUser: [
-      "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
-    ],
-    restorePackageVersionForOrg: [
-      "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
-    ],
-    restorePackageVersionForUser: [
-      "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
-    ]
-  },
-  projects: {
-    addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"],
-    createCard: ["POST /projects/columns/{column_id}/cards"],
-    createColumn: ["POST /projects/{project_id}/columns"],
-    createForAuthenticatedUser: ["POST /user/projects"],
-    createForOrg: ["POST /orgs/{org}/projects"],
-    createForRepo: ["POST /repos/{owner}/{repo}/projects"],
-    delete: ["DELETE /projects/{project_id}"],
-    deleteCard: ["DELETE /projects/columns/cards/{card_id}"],
-    deleteColumn: ["DELETE /projects/columns/{column_id}"],
-    get: ["GET /projects/{project_id}"],
-    getCard: ["GET /projects/columns/cards/{card_id}"],
-    getColumn: ["GET /projects/columns/{column_id}"],
-    getPermissionForUser: [
-      "GET /projects/{project_id}/collaborators/{username}/permission"
-    ],
-    listCards: ["GET /projects/columns/{column_id}/cards"],
-    listCollaborators: ["GET /projects/{project_id}/collaborators"],
-    listColumns: ["GET /projects/{project_id}/columns"],
-    listForOrg: ["GET /orgs/{org}/projects"],
-    listForRepo: ["GET /repos/{owner}/{repo}/projects"],
-    listForUser: ["GET /users/{username}/projects"],
-    moveCard: ["POST /projects/columns/cards/{card_id}/moves"],
-    moveColumn: ["POST /projects/columns/{column_id}/moves"],
-    removeCollaborator: [
-      "DELETE /projects/{project_id}/collaborators/{username}"
-    ],
-    update: ["PATCH /projects/{project_id}"],
-    updateCard: ["PATCH /projects/columns/cards/{card_id}"],
-    updateColumn: ["PATCH /projects/columns/{column_id}"]
-  },
-  pulls: {
-    checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
-    create: ["POST /repos/{owner}/{repo}/pulls"],
-    createReplyForReviewComment: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"
-    ],
-    createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
-    createReviewComment: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"
-    ],
-    deletePendingReview: [
-      "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
-    ],
-    deleteReviewComment: [
-      "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"
-    ],
-    dismissReview: [
-      "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"
-    ],
-    get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"],
-    getReview: [
-      "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
-    ],
-    getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
-    list: ["GET /repos/{owner}/{repo}/pulls"],
-    listCommentsForReview: [
-      "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"
-    ],
-    listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],
-    listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],
-    listRequestedReviewers: [
-      "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
-    ],
-    listReviewComments: [
-      "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"
-    ],
-    listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"],
-    listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
-    merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
-    removeRequestedReviewers: [
-      "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
-    ],
-    requestReviewers: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
-    ],
-    submitReview: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"
-    ],
-    update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],
-    updateBranch: [
-      "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"
-    ],
-    updateReview: [
-      "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
-    ],
-    updateReviewComment: [
-      "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"
-    ]
-  },
-  rateLimit: { get: ["GET /rate_limit"] },
-  reactions: {
-    createForCommitComment: [
-      "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"
-    ],
-    createForIssue: [
-      "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"
-    ],
-    createForIssueComment: [
-      "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"
-    ],
-    createForPullRequestReviewComment: [
-      "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"
-    ],
-    createForRelease: [
-      "POST /repos/{owner}/{repo}/releases/{release_id}/reactions"
-    ],
-    createForTeamDiscussionCommentInOrg: [
-      "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"
-    ],
-    createForTeamDiscussionInOrg: [
-      "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"
-    ],
-    deleteForCommitComment: [
-      "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"
-    ],
-    deleteForIssue: [
-      "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"
-    ],
-    deleteForIssueComment: [
-      "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"
-    ],
-    deleteForPullRequestComment: [
-      "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"
-    ],
-    deleteForRelease: [
-      "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"
-    ],
-    deleteForTeamDiscussion: [
-      "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"
-    ],
-    deleteForTeamDiscussionComment: [
-      "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"
-    ],
-    listForCommitComment: [
-      "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"
-    ],
-    listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
-    listForIssueComment: [
-      "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"
-    ],
-    listForPullRequestReviewComment: [
-      "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"
-    ],
-    listForRelease: [
-      "GET /repos/{owner}/{repo}/releases/{release_id}/reactions"
-    ],
-    listForTeamDiscussionCommentInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"
-    ],
-    listForTeamDiscussionInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"
-    ]
-  },
-  repos: {
-    acceptInvitation: [
-      "PATCH /user/repository_invitations/{invitation_id}",
-      {},
-      { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] }
-    ],
-    acceptInvitationForAuthenticatedUser: [
-      "PATCH /user/repository_invitations/{invitation_id}"
-    ],
-    addAppAccessRestrictions: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
-      {},
-      { mapToData: "apps" }
-    ],
-    addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"],
-    addStatusCheckContexts: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
-      {},
-      { mapToData: "contexts" }
-    ],
-    addTeamAccessRestrictions: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
-      {},
-      { mapToData: "teams" }
-    ],
-    addUserAccessRestrictions: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
-      {},
-      { mapToData: "users" }
-    ],
-    checkAutomatedSecurityFixes: [
-      "GET /repos/{owner}/{repo}/automated-security-fixes"
-    ],
-    checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"],
-    checkVulnerabilityAlerts: [
-      "GET /repos/{owner}/{repo}/vulnerability-alerts"
-    ],
-    codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"],
-    compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"],
-    compareCommitsWithBasehead: [
-      "GET /repos/{owner}/{repo}/compare/{basehead}"
-    ],
-    createAutolink: ["POST /repos/{owner}/{repo}/autolinks"],
-    createCommitComment: [
-      "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"
-    ],
-    createCommitSignatureProtection: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
-    ],
-    createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"],
-    createDeployKey: ["POST /repos/{owner}/{repo}/keys"],
-    createDeployment: ["POST /repos/{owner}/{repo}/deployments"],
-    createDeploymentBranchPolicy: [
-      "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"
-    ],
-    createDeploymentProtectionRule: [
-      "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"
-    ],
-    createDeploymentStatus: [
-      "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"
-    ],
-    createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"],
-    createForAuthenticatedUser: ["POST /user/repos"],
-    createFork: ["POST /repos/{owner}/{repo}/forks"],
-    createInOrg: ["POST /orgs/{org}/repos"],
-    createOrUpdateEnvironment: [
-      "PUT /repos/{owner}/{repo}/environments/{environment_name}"
-    ],
-    createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
-    createOrgRuleset: ["POST /orgs/{org}/rulesets"],
-    createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"],
-    createPagesSite: ["POST /repos/{owner}/{repo}/pages"],
-    createRelease: ["POST /repos/{owner}/{repo}/releases"],
-    createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"],
-    createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"],
-    createUsingTemplate: [
-      "POST /repos/{template_owner}/{template_repo}/generate"
-    ],
-    createWebhook: ["POST /repos/{owner}/{repo}/hooks"],
-    declineInvitation: [
-      "DELETE /user/repository_invitations/{invitation_id}",
-      {},
-      { renamed: ["repos", "declineInvitationForAuthenticatedUser"] }
-    ],
-    declineInvitationForAuthenticatedUser: [
-      "DELETE /user/repository_invitations/{invitation_id}"
-    ],
-    delete: ["DELETE /repos/{owner}/{repo}"],
-    deleteAccessRestrictions: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"
-    ],
-    deleteAdminBranchProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
-    ],
-    deleteAnEnvironment: [
-      "DELETE /repos/{owner}/{repo}/environments/{environment_name}"
-    ],
-    deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],
-    deleteBranchProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection"
-    ],
-    deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
-    deleteCommitSignatureProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
-    ],
-    deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"],
-    deleteDeployment: [
-      "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"
-    ],
-    deleteDeploymentBranchPolicy: [
-      "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
-    ],
-    deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"],
-    deleteInvitation: [
-      "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"
-    ],
-    deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"],
-    deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"],
-    deletePullRequestReviewProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
-    ],
-    deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"],
-    deleteReleaseAsset: [
-      "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"
-    ],
-    deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
-    deleteTagProtection: [
-      "DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"
-    ],
-    deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],
-    disableAutomatedSecurityFixes: [
-      "DELETE /repos/{owner}/{repo}/automated-security-fixes"
-    ],
-    disableDeploymentProtectionRule: [
-      "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"
-    ],
-    disablePrivateVulnerabilityReporting: [
-      "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"
-    ],
-    disableVulnerabilityAlerts: [
-      "DELETE /repos/{owner}/{repo}/vulnerability-alerts"
-    ],
-    downloadArchive: [
-      "GET /repos/{owner}/{repo}/zipball/{ref}",
-      {},
-      { renamed: ["repos", "downloadZipballArchive"] }
-    ],
-    downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"],
-    downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"],
-    enableAutomatedSecurityFixes: [
-      "PUT /repos/{owner}/{repo}/automated-security-fixes"
-    ],
-    enablePrivateVulnerabilityReporting: [
-      "PUT /repos/{owner}/{repo}/private-vulnerability-reporting"
-    ],
-    enableVulnerabilityAlerts: [
-      "PUT /repos/{owner}/{repo}/vulnerability-alerts"
-    ],
-    generateReleaseNotes: [
-      "POST /repos/{owner}/{repo}/releases/generate-notes"
-    ],
-    get: ["GET /repos/{owner}/{repo}"],
-    getAccessRestrictions: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"
-    ],
-    getAdminBranchProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
-    ],
-    getAllDeploymentProtectionRules: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"
-    ],
-    getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"],
-    getAllStatusCheckContexts: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"
-    ],
-    getAllTopics: ["GET /repos/{owner}/{repo}/topics"],
-    getAppsWithAccessToProtectedBranch: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"
-    ],
-    getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],
-    getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"],
-    getBranchProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection"
-    ],
-    getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"],
-    getClones: ["GET /repos/{owner}/{repo}/traffic/clones"],
-    getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"],
-    getCollaboratorPermissionLevel: [
-      "GET /repos/{owner}/{repo}/collaborators/{username}/permission"
-    ],
-    getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"],
-    getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"],
-    getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"],
-    getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"],
-    getCommitSignatureProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
-    ],
-    getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"],
-    getContent: ["GET /repos/{owner}/{repo}/contents/{path}"],
-    getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"],
-    getCustomDeploymentProtectionRule: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"
-    ],
-    getCustomPropertiesValues: ["GET /repos/{owner}/{repo}/properties/values"],
-    getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
-    getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
-    getDeploymentBranchPolicy: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
-    ],
-    getDeploymentStatus: [
-      "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"
-    ],
-    getEnvironment: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}"
-    ],
-    getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
-    getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
-    getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],
-    getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"],
-    getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"],
-    getOrgRulesets: ["GET /orgs/{org}/rulesets"],
-    getPages: ["GET /repos/{owner}/{repo}/pages"],
-    getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],
-    getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"],
-    getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"],
-    getPullRequestReviewProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
-    ],
-    getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"],
-    getReadme: ["GET /repos/{owner}/{repo}/readme"],
-    getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"],
-    getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"],
-    getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],
-    getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"],
-    getRepoRuleSuite: [
-      "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"
-    ],
-    getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"],
-    getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
-    getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"],
-    getStatusChecksProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
-    ],
-    getTeamsWithAccessToProtectedBranch: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"
-    ],
-    getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"],
-    getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"],
-    getUsersWithAccessToProtectedBranch: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"
-    ],
-    getViews: ["GET /repos/{owner}/{repo}/traffic/views"],
-    getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"],
-    getWebhookConfigForRepo: [
-      "GET /repos/{owner}/{repo}/hooks/{hook_id}/config"
-    ],
-    getWebhookDelivery: [
-      "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"
-    ],
-    listActivities: ["GET /repos/{owner}/{repo}/activity"],
-    listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"],
-    listBranches: ["GET /repos/{owner}/{repo}/branches"],
-    listBranchesForHeadCommit: [
-      "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"
-    ],
-    listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"],
-    listCommentsForCommit: [
-      "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"
-    ],
-    listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"],
-    listCommitStatusesForRef: [
-      "GET /repos/{owner}/{repo}/commits/{ref}/statuses"
-    ],
-    listCommits: ["GET /repos/{owner}/{repo}/commits"],
-    listContributors: ["GET /repos/{owner}/{repo}/contributors"],
-    listCustomDeploymentRuleIntegrations: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"
-    ],
-    listDeployKeys: ["GET /repos/{owner}/{repo}/keys"],
-    listDeploymentBranchPolicies: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"
-    ],
-    listDeploymentStatuses: [
-      "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"
-    ],
-    listDeployments: ["GET /repos/{owner}/{repo}/deployments"],
-    listForAuthenticatedUser: ["GET /user/repos"],
-    listForOrg: ["GET /orgs/{org}/repos"],
-    listForUser: ["GET /users/{username}/repos"],
-    listForks: ["GET /repos/{owner}/{repo}/forks"],
-    listInvitations: ["GET /repos/{owner}/{repo}/invitations"],
-    listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"],
-    listLanguages: ["GET /repos/{owner}/{repo}/languages"],
-    listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"],
-    listPublic: ["GET /repositories"],
-    listPullRequestsAssociatedWithCommit: [
-      "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"
-    ],
-    listReleaseAssets: [
-      "GET /repos/{owner}/{repo}/releases/{release_id}/assets"
-    ],
-    listReleases: ["GET /repos/{owner}/{repo}/releases"],
-    listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"],
-    listTags: ["GET /repos/{owner}/{repo}/tags"],
-    listTeams: ["GET /repos/{owner}/{repo}/teams"],
-    listWebhookDeliveries: [
-      "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"
-    ],
-    listWebhooks: ["GET /repos/{owner}/{repo}/hooks"],
-    merge: ["POST /repos/{owner}/{repo}/merges"],
-    mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"],
-    pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],
-    redeliverWebhookDelivery: [
-      "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
-    ],
-    removeAppAccessRestrictions: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
-      {},
-      { mapToData: "apps" }
-    ],
-    removeCollaborator: [
-      "DELETE /repos/{owner}/{repo}/collaborators/{username}"
-    ],
-    removeStatusCheckContexts: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
-      {},
-      { mapToData: "contexts" }
-    ],
-    removeStatusCheckProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
-    ],
-    removeTeamAccessRestrictions: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
-      {},
-      { mapToData: "teams" }
-    ],
-    removeUserAccessRestrictions: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
-      {},
-      { mapToData: "users" }
-    ],
-    renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"],
-    replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"],
-    requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"],
-    setAdminBranchProtection: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
-    ],
-    setAppAccessRestrictions: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
-      {},
-      { mapToData: "apps" }
-    ],
-    setStatusCheckContexts: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
-      {},
-      { mapToData: "contexts" }
-    ],
-    setTeamAccessRestrictions: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
-      {},
-      { mapToData: "teams" }
-    ],
-    setUserAccessRestrictions: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
-      {},
-      { mapToData: "users" }
-    ],
-    testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],
-    transfer: ["POST /repos/{owner}/{repo}/transfer"],
-    update: ["PATCH /repos/{owner}/{repo}"],
-    updateBranchProtection: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection"
-    ],
-    updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],
-    updateDeploymentBranchPolicy: [
-      "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
-    ],
-    updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"],
-    updateInvitation: [
-      "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"
-    ],
-    updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"],
-    updatePullRequestReviewProtection: [
-      "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
-    ],
-    updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"],
-    updateReleaseAsset: [
-      "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"
-    ],
-    updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
-    updateStatusCheckPotection: [
-      "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",
-      {},
-      { renamed: ["repos", "updateStatusCheckProtection"] }
-    ],
-    updateStatusCheckProtection: [
-      "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
-    ],
-    updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],
-    updateWebhookConfigForRepo: [
-      "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"
-    ],
-    uploadReleaseAsset: [
-      "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",
-      { baseUrl: "https://uploads.github.com" }
-    ]
-  },
-  search: {
-    code: ["GET /search/code"],
-    commits: ["GET /search/commits"],
-    issuesAndPullRequests: ["GET /search/issues"],
-    labels: ["GET /search/labels"],
-    repos: ["GET /search/repositories"],
-    topics: ["GET /search/topics"],
-    users: ["GET /search/users"]
-  },
-  secretScanning: {
-    getAlert: [
-      "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"
-    ],
-    listAlertsForEnterprise: [
-      "GET /enterprises/{enterprise}/secret-scanning/alerts"
-    ],
-    listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"],
-    listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"],
-    listLocationsForAlert: [
-      "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"
-    ],
-    updateAlert: [
-      "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"
-    ]
-  },
-  securityAdvisories: {
-    createPrivateVulnerabilityReport: [
-      "POST /repos/{owner}/{repo}/security-advisories/reports"
-    ],
-    createRepositoryAdvisory: [
-      "POST /repos/{owner}/{repo}/security-advisories"
-    ],
-    createRepositoryAdvisoryCveRequest: [
-      "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"
-    ],
-    getGlobalAdvisory: ["GET /advisories/{ghsa_id}"],
-    getRepositoryAdvisory: [
-      "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"
-    ],
-    listGlobalAdvisories: ["GET /advisories"],
-    listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"],
-    listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"],
-    updateRepositoryAdvisory: [
-      "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"
-    ]
-  },
-  teams: {
-    addOrUpdateMembershipForUserInOrg: [
-      "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"
-    ],
-    addOrUpdateProjectPermissionsInOrg: [
-      "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"
-    ],
-    addOrUpdateRepoPermissionsInOrg: [
-      "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
-    ],
-    checkPermissionsForProjectInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"
-    ],
-    checkPermissionsForRepoInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
-    ],
-    create: ["POST /orgs/{org}/teams"],
-    createDiscussionCommentInOrg: [
-      "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"
-    ],
-    createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"],
-    deleteDiscussionCommentInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
-    ],
-    deleteDiscussionInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
-    ],
-    deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"],
-    getByName: ["GET /orgs/{org}/teams/{team_slug}"],
-    getDiscussionCommentInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
-    ],
-    getDiscussionInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
-    ],
-    getMembershipForUserInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/memberships/{username}"
-    ],
-    list: ["GET /orgs/{org}/teams"],
-    listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"],
-    listDiscussionCommentsInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"
-    ],
-    listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"],
-    listForAuthenticatedUser: ["GET /user/teams"],
-    listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"],
-    listPendingInvitationsInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/invitations"
-    ],
-    listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"],
-    listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
-    removeMembershipForUserInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"
-    ],
-    removeProjectInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"
-    ],
-    removeRepoInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
-    ],
-    updateDiscussionCommentInOrg: [
-      "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
-    ],
-    updateDiscussionInOrg: [
-      "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
-    ],
-    updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"]
-  },
-  users: {
-    addEmailForAuthenticated: [
-      "POST /user/emails",
-      {},
-      { renamed: ["users", "addEmailForAuthenticatedUser"] }
-    ],
-    addEmailForAuthenticatedUser: ["POST /user/emails"],
-    addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"],
-    block: ["PUT /user/blocks/{username}"],
-    checkBlocked: ["GET /user/blocks/{username}"],
-    checkFollowingForUser: ["GET /users/{username}/following/{target_user}"],
-    checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"],
-    createGpgKeyForAuthenticated: [
-      "POST /user/gpg_keys",
-      {},
-      { renamed: ["users", "createGpgKeyForAuthenticatedUser"] }
-    ],
-    createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"],
-    createPublicSshKeyForAuthenticated: [
-      "POST /user/keys",
-      {},
-      { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] }
-    ],
-    createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"],
-    createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"],
-    deleteEmailForAuthenticated: [
-      "DELETE /user/emails",
-      {},
-      { renamed: ["users", "deleteEmailForAuthenticatedUser"] }
-    ],
-    deleteEmailForAuthenticatedUser: ["DELETE /user/emails"],
-    deleteGpgKeyForAuthenticated: [
-      "DELETE /user/gpg_keys/{gpg_key_id}",
-      {},
-      { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] }
-    ],
-    deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"],
-    deletePublicSshKeyForAuthenticated: [
-      "DELETE /user/keys/{key_id}",
-      {},
-      { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] }
-    ],
-    deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"],
-    deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"],
-    deleteSshSigningKeyForAuthenticatedUser: [
-      "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"
-    ],
-    follow: ["PUT /user/following/{username}"],
-    getAuthenticated: ["GET /user"],
-    getByUsername: ["GET /users/{username}"],
-    getContextForUser: ["GET /users/{username}/hovercard"],
-    getGpgKeyForAuthenticated: [
-      "GET /user/gpg_keys/{gpg_key_id}",
-      {},
-      { renamed: ["users", "getGpgKeyForAuthenticatedUser"] }
-    ],
-    getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"],
-    getPublicSshKeyForAuthenticated: [
-      "GET /user/keys/{key_id}",
-      {},
-      { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] }
-    ],
-    getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"],
-    getSshSigningKeyForAuthenticatedUser: [
-      "GET /user/ssh_signing_keys/{ssh_signing_key_id}"
-    ],
-    list: ["GET /users"],
-    listBlockedByAuthenticated: [
-      "GET /user/blocks",
-      {},
-      { renamed: ["users", "listBlockedByAuthenticatedUser"] }
-    ],
-    listBlockedByAuthenticatedUser: ["GET /user/blocks"],
-    listEmailsForAuthenticated: [
-      "GET /user/emails",
-      {},
-      { renamed: ["users", "listEmailsForAuthenticatedUser"] }
-    ],
-    listEmailsForAuthenticatedUser: ["GET /user/emails"],
-    listFollowedByAuthenticated: [
-      "GET /user/following",
-      {},
-      { renamed: ["users", "listFollowedByAuthenticatedUser"] }
-    ],
-    listFollowedByAuthenticatedUser: ["GET /user/following"],
-    listFollowersForAuthenticatedUser: ["GET /user/followers"],
-    listFollowersForUser: ["GET /users/{username}/followers"],
-    listFollowingForUser: ["GET /users/{username}/following"],
-    listGpgKeysForAuthenticated: [
-      "GET /user/gpg_keys",
-      {},
-      { renamed: ["users", "listGpgKeysForAuthenticatedUser"] }
-    ],
-    listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"],
-    listGpgKeysForUser: ["GET /users/{username}/gpg_keys"],
-    listPublicEmailsForAuthenticated: [
-      "GET /user/public_emails",
-      {},
-      { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] }
-    ],
-    listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"],
-    listPublicKeysForUser: ["GET /users/{username}/keys"],
-    listPublicSshKeysForAuthenticated: [
-      "GET /user/keys",
-      {},
-      { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] }
-    ],
-    listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"],
-    listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"],
-    listSocialAccountsForUser: ["GET /users/{username}/social_accounts"],
-    listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"],
-    listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"],
-    setPrimaryEmailVisibilityForAuthenticated: [
-      "PATCH /user/email/visibility",
-      {},
-      { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] }
-    ],
-    setPrimaryEmailVisibilityForAuthenticatedUser: [
-      "PATCH /user/email/visibility"
-    ],
-    unblock: ["DELETE /user/blocks/{username}"],
-    unfollow: ["DELETE /user/following/{username}"],
-    updateAuthenticated: ["PATCH /user"]
-  }
-};
-var endpoints_default = Endpoints;
-export {
-  endpoints_default as default
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js
deleted file mode 100644
index e69de29..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js
+++ /dev/null
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js
deleted file mode 100644
index e69de29..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js
+++ /dev/null
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js
deleted file mode 100644
index 97ef797..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import { VERSION } from "./version.js";
-import { endpointsToMethods } from "./endpoints-to-methods.js";
-function restEndpointMethods(octokit) {
-  const api = endpointsToMethods(octokit);
-  return {
-    rest: api
-  };
-}
-restEndpointMethods.VERSION = VERSION;
-function legacyRestEndpointMethods(octokit) {
-  const api = endpointsToMethods(octokit);
-  return {
-    ...api,
-    rest: api
-  };
-}
-legacyRestEndpointMethods.VERSION = VERSION;
-export {
-  legacyRestEndpointMethods,
-  restEndpointMethods
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js
deleted file mode 100644
index 001de03..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js
+++ /dev/null
@@ -1,4 +0,0 @@
-const VERSION = "10.2.0";
-export {
-  VERSION
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts
deleted file mode 100644
index c46d15b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import type { Octokit } from "@octokit/core";
-import type { RestEndpointMethods } from "./generated/method-types.js";
-export declare function endpointsToMethods(octokit: Octokit): RestEndpointMethods;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts
deleted file mode 100644
index c2f1e81..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import type { EndpointsDefaultsAndDecorations } from "../types.js";
-declare const Endpoints: EndpointsDefaultsAndDecorations;
-export default Endpoints;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts
deleted file mode 100644
index e899dfd..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts
+++ /dev/null
@@ -1,11454 +0,0 @@
-import type { EndpointInterface, RequestInterface } from "@octokit/types";
-import type { RestEndpointMethodTypes } from "./parameters-and-response-types.js";
-export type RestEndpointMethods = {
-    actions: {
-        /**
-         * Add custom labels to a self-hosted runner configured in an organization.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        addCustomLabelsToSelfHostedRunnerForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["addCustomLabelsToSelfHostedRunnerForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["addCustomLabelsToSelfHostedRunnerForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Add custom labels to a self-hosted runner configured in a repository.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        addCustomLabelsToSelfHostedRunnerForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["addCustomLabelsToSelfHostedRunnerForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["addCustomLabelsToSelfHostedRunnerForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Adds a repository to an organization secret when the `visibility` for
-         * repository access is set to `selected`. The visibility is set when you [Create or
-         * update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret).
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        addSelectedRepoToOrgSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["addSelectedRepoToOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["addSelectedRepoToOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Adds a repository to an organization variable that is available to selected repositories.
-         * Organization variables that are available to selected repositories have their `visibility` field set to `selected`.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        addSelectedRepoToOrgVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["addSelectedRepoToOrgVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["addSelectedRepoToOrgVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Approves a workflow run for a pull request from a public fork of a first time contributor. For more information, see ["Approving workflow runs from public forks](https://docs.github.com/actions/managing-workflow-runs/approving-workflow-runs-from-public-forks)."
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-         */
-        approveWorkflowRun: {
-            (params?: RestEndpointMethodTypes["actions"]["approveWorkflowRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["approveWorkflowRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Cancels a workflow run using its `id`.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `actions:write` permission to use this endpoint.
-         */
-        cancelWorkflowRun: {
-            (params?: RestEndpointMethodTypes["actions"]["cancelWorkflowRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["cancelWorkflowRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create an environment variable that you can reference in a GitHub Actions workflow.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `environment:write` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        createEnvironmentVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["createEnvironmentVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["createEnvironmentVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates or updates an environment secret with an encrypted value. Encrypt your secret using
-         * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        createOrUpdateEnvironmentSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["createOrUpdateEnvironmentSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["createOrUpdateEnvironmentSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates or updates an organization secret with an encrypted value. Encrypt your secret using
-         * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access
-         * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to
-         * use this endpoint.
-         *
-         * #### Example encrypting a secret using Node.js
-         *
-         * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library.
-         *
-         * ```
-         * const sodium = require('tweetsodium');
-         *
-         * const key = "base64-encoded-public-key";
-         * const value = "plain-text-secret";
-         *
-         * // Convert the message and key to Uint8Array's (Buffer implements that interface)
-         * const messageBytes = Buffer.from(value);
-         * const keyBytes = Buffer.from(key, 'base64');
-         *
-         * // Encrypt using LibSodium.
-         * const encryptedBytes = sodium.seal(messageBytes, keyBytes);
-         *
-         * // Base64 the encrypted secret
-         * const encrypted = Buffer.from(encryptedBytes).toString('base64');
-         *
-         * console.log(encrypted);
-         * ```
-         *
-         *
-         * #### Example encrypting a secret using Python
-         *
-         * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3.
-         *
-         * ```
-         * from base64 import b64encode
-         * from nacl import encoding, public
-         *
-         * def encrypt(public_key: str, secret_value: str) -> str:
-         *   """Encrypt a Unicode string using the public key."""
-         *   public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder())
-         *   sealed_box = public.SealedBox(public_key)
-         *   encrypted = sealed_box.encrypt(secret_value.encode("utf-8"))
-         *   return b64encode(encrypted).decode("utf-8")
-         * ```
-         *
-         * #### Example encrypting a secret using C#
-         *
-         * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package.
-         *
-         * ```
-         * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret");
-         * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU=");
-         *
-         * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);
-         *
-         * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));
-         * ```
-         *
-         * #### Example encrypting a secret using Ruby
-         *
-         * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem.
-         *
-         * ```ruby
-         * require "rbnacl"
-         * require "base64"
-         *
-         * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=")
-         * public_key = RbNaCl::PublicKey.new(key)
-         *
-         * box = RbNaCl::Boxes::Sealed.from_public_key(public_key)
-         * encrypted_secret = box.encrypt("my_secret")
-         *
-         * # Print the base64 encoded secret
-         * puts Base64.strict_encode64(encrypted_secret)
-         * ```
-         */
-        createOrUpdateOrgSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["createOrUpdateOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["createOrUpdateOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates or updates a repository secret with an encrypted value. Encrypt your secret using
-         * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        createOrUpdateRepoSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["createOrUpdateRepoSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["createOrUpdateRepoSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates an organization variable that you can reference in a GitHub Actions workflow.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        createOrgVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["createOrgVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["createOrgVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a token that you can pass to the `config` script. The token expires after one hour.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         *
-         * Example using registration token:
-         *
-         * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint.
-         *
-         * ```
-         * ./config.sh --url https://github.com/octo-org --token TOKEN
-         * ```
-         */
-        createRegistrationTokenForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["createRegistrationTokenForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["createRegistrationTokenForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a token that you can pass to the `config` script. The token
-         * expires after one hour.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         *
-         * Example using registration token:
-         *
-         * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided
-         * by this endpoint.
-         *
-         * ```config.sh --url https://github.com/octo-org/octo-repo-artifacts --token TOKEN```
-         */
-        createRegistrationTokenForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["createRegistrationTokenForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["createRegistrationTokenForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * 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.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         *
-         * Example using remove token:
-         *
-         * To remove your self-hosted runner from an organization, replace `TOKEN` with the remove token provided by this
-         * endpoint.
-         *
-         * ```
-         * ./config.sh remove --token TOKEN
-         * ```
-         */
-        createRemoveTokenForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["createRemoveTokenForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["createRemoveTokenForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a token that you can pass to remove a self-hosted runner from
-         * a repository. The token expires after one hour.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         *
-         * Example using remove token:
-         *
-         * To remove your self-hosted runner from a repository, replace TOKEN with
-         * the remove token provided by this endpoint.
-         *
-         * ```config.sh remove --token TOKEN```
-         */
-        createRemoveTokenForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["createRemoveTokenForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["createRemoveTokenForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a repository variable that you can reference in a GitHub Actions workflow.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `actions_variables:write` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        createRepoVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["createRepoVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["createRepoVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`.
-         *
-         * You must configure your GitHub Actions workflow to run when the [`workflow_dispatch` webhook](/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch) event occurs. The `inputs` are configured in the workflow file. For more information about how to configure the `workflow_dispatch` event in the workflow file, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch)."
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. For more information, see "[Creating a personal access token for the command line](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line)."
-         */
-        createWorkflowDispatch: {
-            (params?: RestEndpointMethodTypes["actions"]["createWorkflowDispatch"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["createWorkflowDispatch"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a GitHub Actions cache for a repository, using a cache ID.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         *
-         * GitHub Apps must have the `actions:write` permission to use this endpoint.
-         */
-        deleteActionsCacheById: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteActionsCacheById"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteActionsCacheById"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes one or more GitHub Actions caches for a repository, using a complete cache key. By default, all caches that match the provided key are deleted, but you can optionally provide a Git ref to restrict deletions to caches that match both the provided key and the Git ref.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         *
-         * GitHub Apps must have the `actions:write` permission to use this endpoint.
-         */
-        deleteActionsCacheByKey: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteActionsCacheByKey"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteActionsCacheByKey"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes an artifact for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-         */
-        deleteArtifact: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteArtifact"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteArtifact"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a secret in an environment using the secret name.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        deleteEnvironmentSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteEnvironmentSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteEnvironmentSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes an environment variable using the variable name.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `environment:write` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        deleteEnvironmentVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteEnvironmentVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteEnvironmentVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a secret in an organization using the secret name.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        deleteOrgSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes an organization variable using the variable name.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        deleteOrgVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteOrgVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteOrgVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a secret in a repository using the secret name.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        deleteRepoSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteRepoSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteRepoSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a repository variable using the variable name.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `actions_variables:write` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        deleteRepoVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteRepoVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteRepoVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Forces the removal of a self-hosted runner from an organization. You can use this endpoint to completely remove the runner when the machine you were using no longer exists.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        deleteSelfHostedRunnerFromOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteSelfHostedRunnerFromOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteSelfHostedRunnerFromOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Forces the removal of a self-hosted runner from a repository. You can use this endpoint to completely remove the runner when the machine you were using no longer exists.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        deleteSelfHostedRunnerFromRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteSelfHostedRunnerFromRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteSelfHostedRunnerFromRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Delete a specific workflow run. Anyone with write access to the repository can use this endpoint. If the repository is
-         * private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:write` permission to use
-         * this endpoint.
-         */
-        deleteWorkflowRun: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteWorkflowRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteWorkflowRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes all logs for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-         */
-        deleteWorkflowRunLogs: {
-            (params?: RestEndpointMethodTypes["actions"]["deleteWorkflowRunLogs"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["deleteWorkflowRunLogs"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * 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](#set-github-actions-permissions-for-an-organization)."
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-         */
-        disableSelectedRepositoryGithubActionsOrganization: {
-            (params?: RestEndpointMethodTypes["actions"]["disableSelectedRepositoryGithubActionsOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["disableSelectedRepositoryGithubActionsOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Disables a workflow and sets the `state` of the workflow to `disabled_manually`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-         */
-        disableWorkflow: {
-            (params?: RestEndpointMethodTypes["actions"]["disableWorkflow"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["disableWorkflow"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in
-         * the response header to find the URL for the download. The `:archive_format` must be `zip`.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        downloadArtifact: {
-            (params?: RestEndpointMethodTypes["actions"]["downloadArtifact"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["downloadArtifact"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look
-         * for `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can
-         * use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must
-         * have the `actions:read` permission to use this endpoint.
-         */
-        downloadJobLogsForWorkflowRun: {
-            (params?: RestEndpointMethodTypes["actions"]["downloadJobLogsForWorkflowRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["downloadJobLogsForWorkflowRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a redirect URL to download an archive of log files for a specific workflow run attempt. This link expires after
-         * 1 minute. Look for `Location:` in the response header to find the URL for the download. Anyone with read access to
-         * the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        downloadWorkflowRunAttemptLogs: {
-            (params?: RestEndpointMethodTypes["actions"]["downloadWorkflowRunAttemptLogs"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["downloadWorkflowRunAttemptLogs"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a redirect URL to download an archive of log files for a workflow run. This link expires after 1 minute. Look for
-         * `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can use
-         * this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have
-         * the `actions:read` permission to use this endpoint.
-         */
-        downloadWorkflowRunLogs: {
-            (params?: RestEndpointMethodTypes["actions"]["downloadWorkflowRunLogs"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["downloadWorkflowRunLogs"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * 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](#set-github-actions-permissions-for-an-organization)."
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-         */
-        enableSelectedRepositoryGithubActionsOrganization: {
-            (params?: RestEndpointMethodTypes["actions"]["enableSelectedRepositoryGithubActionsOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["enableSelectedRepositoryGithubActionsOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Enables a workflow and sets the `state` of the workflow to `active`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-         */
-        enableWorkflow: {
-            (params?: RestEndpointMethodTypes["actions"]["enableWorkflow"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["enableWorkflow"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Cancels a workflow run and bypasses conditions that would otherwise cause a workflow execution to continue, such as an `always()` condition on a job.
-         * You should only use this endpoint to cancel a workflow run when the workflow run is not responding to [`POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel`](/rest/actions/workflow-runs#cancel-a-workflow-run).
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `actions:write` permission to use this endpoint.
-         */
-        forceCancelWorkflowRun: {
-            (params?: RestEndpointMethodTypes["actions"]["forceCancelWorkflowRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["forceCancelWorkflowRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Generates a configuration that can be passed to the runner application at startup.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        generateRunnerJitconfigForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["generateRunnerJitconfigForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["generateRunnerJitconfigForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Generates a configuration that can be passed to the runner application at startup.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        generateRunnerJitconfigForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["generateRunnerJitconfigForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["generateRunnerJitconfigForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the GitHub Actions caches for a repository.
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getActionsCacheList: {
-            (params?: RestEndpointMethodTypes["actions"]["getActionsCacheList"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getActionsCacheList"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets GitHub Actions cache usage for a repository.
-         * The 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.
-         * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getActionsCacheUsage: {
-            (params?: RestEndpointMethodTypes["actions"]["getActionsCacheUsage"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getActionsCacheUsage"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists repositories and their GitHub Actions cache usage for an organization.
-         * The 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.
-         * You must authenticate using an access token with the `read:org` scope to use this endpoint. GitHub Apps must have the `organization_admistration:read` permission to use this endpoint.
-         */
-        getActionsCacheUsageByRepoForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["getActionsCacheUsageByRepoForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getActionsCacheUsageByRepoForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the total GitHub Actions cache usage for an organization.
-         * The 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.
-         * You must authenticate using an access token with the `read:org` scope to use this endpoint. GitHub Apps must have the `organization_admistration:read` permission to use this endpoint.
-         */
-        getActionsCacheUsageForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["getActionsCacheUsageForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getActionsCacheUsageForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the selected actions and reusable workflows 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](#set-github-actions-permissions-for-an-organization).""
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-         */
-        getAllowedActionsOrganization: {
-            (params?: RestEndpointMethodTypes["actions"]["getAllowedActionsOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getAllowedActionsOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the settings for selected actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)."
-         *
-         * 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.
-         */
-        getAllowedActionsRepository: {
-            (params?: RestEndpointMethodTypes["actions"]["getAllowedActionsRepository"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getAllowedActionsRepository"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific artifact for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getArtifact: {
-            (params?: RestEndpointMethodTypes["actions"]["getArtifact"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getArtifact"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get the public key for an environment, which you need to encrypt environment
-         * secrets. You need to encrypt a secret before you can create or update secrets.
-         *
-         * Anyone with read access to the repository can use this endpoint.
-         * If the repository is private you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        getEnvironmentPublicKey: {
-            (params?: RestEndpointMethodTypes["actions"]["getEnvironmentPublicKey"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getEnvironmentPublicKey"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a single environment secret without revealing its encrypted value.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        getEnvironmentSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["getEnvironmentSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getEnvironmentSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific variable in an environment.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `environments:read` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        getEnvironmentVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["getEnvironmentVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getEnvironmentVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization,
-         * as well as whether GitHub Actions can submit approving pull request reviews. For more information, see
-         * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)."
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-         */
-        getGithubActionsDefaultWorkflowPermissionsOrganization: {
-            (params?: RestEndpointMethodTypes["actions"]["getGithubActionsDefaultWorkflowPermissionsOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getGithubActionsDefaultWorkflowPermissionsOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository,
-         * as well as if GitHub Actions can submit approving pull request reviews.
-         * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/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)."
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the repository `administration` permission to use this API.
-         */
-        getGithubActionsDefaultWorkflowPermissionsRepository: {
-            (params?: RestEndpointMethodTypes["actions"]["getGithubActionsDefaultWorkflowPermissionsRepository"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getGithubActionsDefaultWorkflowPermissionsRepository"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-         */
-        getGithubActionsPermissionsOrganization: {
-            (params?: RestEndpointMethodTypes["actions"]["getGithubActionsPermissionsOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getGithubActionsPermissionsOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions and reusable workflows allowed to run in the repository.
-         *
-         * 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.
-         */
-        getGithubActionsPermissionsRepository: {
-            (params?: RestEndpointMethodTypes["actions"]["getGithubActionsPermissionsRepository"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getGithubActionsPermissionsRepository"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific job in a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getJobForWorkflowRun: {
-            (params?: RestEndpointMethodTypes["actions"]["getJobForWorkflowRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getJobForWorkflowRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets your public key, which you need to encrypt secrets. You need to
-         * encrypt a secret before you can create or update secrets.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        getOrgPublicKey: {
-            (params?: RestEndpointMethodTypes["actions"]["getOrgPublicKey"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getOrgPublicKey"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a single organization secret without revealing its encrypted value.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        getOrgSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["getOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific variable in an organization.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `organization_actions_variables:read` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        getOrgVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["getOrgVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getOrgVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get all deployment environments for a workflow run that are waiting for protection rules to pass.
-         *
-         * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getPendingDeploymentsForRun: {
-            (params?: RestEndpointMethodTypes["actions"]["getPendingDeploymentsForRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getPendingDeploymentsForRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions and reusable workflows allowed to run in the repository.
-         *
-         * 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.
-         * @deprecated octokit.rest.actions.getRepoPermissions() has been renamed to octokit.rest.actions.getGithubActionsPermissionsRepository() (2020-11-10)
-         */
-        getRepoPermissions: {
-            (params?: RestEndpointMethodTypes["actions"]["getRepoPermissions"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getRepoPermissions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets your public key, which you need to encrypt secrets. You need to
-         * encrypt a secret before you can create or update secrets.
-         *
-         * Anyone with read access to the repository can use this endpoint.
-         * If the repository is private you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        getRepoPublicKey: {
-            (params?: RestEndpointMethodTypes["actions"]["getRepoPublicKey"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getRepoPublicKey"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a single repository secret without revealing its encrypted value.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        getRepoSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["getRepoSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getRepoSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific variable in a repository.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `actions_variables:read` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        getRepoVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["getRepoVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getRepoVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getReviewsForRun: {
-            (params?: RestEndpointMethodTypes["actions"]["getReviewsForRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getReviewsForRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific self-hosted runner configured in an organization.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        getSelfHostedRunnerForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["getSelfHostedRunnerForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getSelfHostedRunnerForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific self-hosted runner configured in a repository.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        getSelfHostedRunnerForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["getSelfHostedRunnerForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getSelfHostedRunnerForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getWorkflow: {
-            (params?: RestEndpointMethodTypes["actions"]["getWorkflow"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getWorkflow"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository.
-         * This endpoint only applies to private repositories.
-         * For more information, see "[Allowing access to components in a private repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)."
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the
-         * repository `administration` permission to use this endpoint.
-         */
-        getWorkflowAccessToRepository: {
-            (params?: RestEndpointMethodTypes["actions"]["getWorkflowAccessToRepository"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getWorkflowAccessToRepository"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getWorkflowRun: {
-            (params?: RestEndpointMethodTypes["actions"]["getWorkflowRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getWorkflowRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific workflow run attempt. Anyone with read access to the repository
-         * can use this endpoint. If the repository is private you must use an access token
-         * with the `repo` scope. GitHub Apps must have the `actions:read` permission to
-         * use this endpoint.
-         */
-        getWorkflowRunAttempt: {
-            (params?: RestEndpointMethodTypes["actions"]["getWorkflowRunAttempt"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getWorkflowRunAttempt"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the number of billable minutes and total run time for a specific workflow run. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
-         *
-         * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getWorkflowRunUsage: {
-            (params?: RestEndpointMethodTypes["actions"]["getWorkflowRunUsage"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getWorkflowRunUsage"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
-         *
-         * You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getWorkflowUsage: {
-            (params?: RestEndpointMethodTypes["actions"]["getWorkflowUsage"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["getWorkflowUsage"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all artifacts for a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        listArtifactsForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["listArtifactsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listArtifactsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all secrets available in an environment without revealing their
-         * encrypted values.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        listEnvironmentSecrets: {
-            (params?: RestEndpointMethodTypes["actions"]["listEnvironmentSecrets"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listEnvironmentSecrets"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all environment variables.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `environments:read` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        listEnvironmentVariables: {
-            (params?: RestEndpointMethodTypes["actions"]["listEnvironmentVariables"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listEnvironmentVariables"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists jobs for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).
-         */
-        listJobsForWorkflowRun: {
-            (params?: RestEndpointMethodTypes["actions"]["listJobsForWorkflowRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listJobsForWorkflowRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists jobs for a specific workflow run attempt. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).
-         */
-        listJobsForWorkflowRunAttempt: {
-            (params?: RestEndpointMethodTypes["actions"]["listJobsForWorkflowRunAttempt"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listJobsForWorkflowRunAttempt"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all labels for a self-hosted runner configured in an organization.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        listLabelsForSelfHostedRunnerForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["listLabelsForSelfHostedRunnerForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listLabelsForSelfHostedRunnerForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all labels for a self-hosted runner configured in a repository.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        listLabelsForSelfHostedRunnerForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["listLabelsForSelfHostedRunnerForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listLabelsForSelfHostedRunnerForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all secrets available in an organization without revealing their
-         * encrypted values.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        listOrgSecrets: {
-            (params?: RestEndpointMethodTypes["actions"]["listOrgSecrets"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listOrgSecrets"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all organization variables.
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `organization_actions_variables:read` organization permission to use this endpoint. Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        listOrgVariables: {
-            (params?: RestEndpointMethodTypes["actions"]["listOrgVariables"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listOrgVariables"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all organization secrets shared with a repository without revealing their encrypted
-         * values.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        listRepoOrganizationSecrets: {
-            (params?: RestEndpointMethodTypes["actions"]["listRepoOrganizationSecrets"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listRepoOrganizationSecrets"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all organiation variables shared with a repository.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `actions_variables:read` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        listRepoOrganizationVariables: {
-            (params?: RestEndpointMethodTypes["actions"]["listRepoOrganizationVariables"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listRepoOrganizationVariables"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all secrets available in a repository without revealing their encrypted
-         * values.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `secrets` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        listRepoSecrets: {
-            (params?: RestEndpointMethodTypes["actions"]["listRepoSecrets"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listRepoSecrets"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all repository variables.
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `actions_variables:read` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        listRepoVariables: {
-            (params?: RestEndpointMethodTypes["actions"]["listRepoVariables"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listRepoVariables"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the workflows in a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        listRepoWorkflows: {
-            (params?: RestEndpointMethodTypes["actions"]["listRepoWorkflows"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listRepoWorkflows"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists binaries for the runner application that you can download and run.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        listRunnerApplicationsForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["listRunnerApplicationsForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listRunnerApplicationsForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists binaries for the runner application that you can download and run.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        listRunnerApplicationsForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["listRunnerApplicationsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listRunnerApplicationsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all repositories that have been selected when the `visibility`
-         * for repository access to a secret is set to `selected`.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        listSelectedReposForOrgSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["listSelectedReposForOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listSelectedReposForOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all repositories that can access an organization variable
-         * that is available to selected repositories.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `organization_actions_variables:read` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        listSelectedReposForOrgVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["listSelectedReposForOrgVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listSelectedReposForOrgVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the 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](#set-github-actions-permissions-for-an-organization)."
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-         */
-        listSelectedRepositoriesEnabledGithubActionsOrganization: {
-            (params?: RestEndpointMethodTypes["actions"]["listSelectedRepositoriesEnabledGithubActionsOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listSelectedRepositoriesEnabledGithubActionsOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all self-hosted runners configured in an organization.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        listSelfHostedRunnersForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["listSelfHostedRunnersForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listSelfHostedRunnersForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all self-hosted runners configured in a repository.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        listSelfHostedRunnersForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["listSelfHostedRunnersForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listSelfHostedRunnersForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists artifacts for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        listWorkflowRunArtifacts: {
-            (params?: RestEndpointMethodTypes["actions"]["listWorkflowRunArtifacts"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listWorkflowRunArtifacts"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List all workflow runs for a workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).
-         *
-         * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope.
-         */
-        listWorkflowRuns: {
-            (params?: RestEndpointMethodTypes["actions"]["listWorkflowRuns"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listWorkflowRuns"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * 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](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters).
-         *
-         * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        listWorkflowRunsForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["listWorkflowRunsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["listWorkflowRunsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Re-run a job and its dependent jobs in a workflow run.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `actions:write` permission to use this endpoint.
-         */
-        reRunJobForWorkflowRun: {
-            (params?: RestEndpointMethodTypes["actions"]["reRunJobForWorkflowRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["reRunJobForWorkflowRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Re-runs your workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint.
-         */
-        reRunWorkflow: {
-            (params?: RestEndpointMethodTypes["actions"]["reRunWorkflow"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["reRunWorkflow"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Re-run all of the failed jobs and their dependent jobs in a workflow run using the `id` of the workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint.
-         */
-        reRunWorkflowFailedJobs: {
-            (params?: RestEndpointMethodTypes["actions"]["reRunWorkflowFailedJobs"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["reRunWorkflowFailedJobs"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Remove all custom labels from a self-hosted runner configured in an
-         * organization. Returns the remaining read-only labels from the runner.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        removeAllCustomLabelsFromSelfHostedRunnerForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["removeAllCustomLabelsFromSelfHostedRunnerForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["removeAllCustomLabelsFromSelfHostedRunnerForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Remove all custom labels from a self-hosted runner configured in a
-         * repository. Returns the remaining read-only labels from the runner.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        removeAllCustomLabelsFromSelfHostedRunnerForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["removeAllCustomLabelsFromSelfHostedRunnerForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["removeAllCustomLabelsFromSelfHostedRunnerForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Remove a custom label from a self-hosted runner configured
-         * in an organization. Returns the remaining labels from the runner.
-         *
-         * This endpoint returns a `404 Not Found` status if the custom label is not
-         * present on the runner.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        removeCustomLabelFromSelfHostedRunnerForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["removeCustomLabelFromSelfHostedRunnerForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["removeCustomLabelFromSelfHostedRunnerForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Remove a custom label from a self-hosted runner configured
-         * in a repository. Returns the remaining labels from the runner.
-         *
-         * This endpoint returns a `404 Not Found` status if the custom label is not
-         * present on the runner.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        removeCustomLabelFromSelfHostedRunnerForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["removeCustomLabelFromSelfHostedRunnerForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["removeCustomLabelFromSelfHostedRunnerForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a repository from an organization secret when the `visibility`
-         * for repository access is set to `selected`. The visibility is set when you [Create
-         * or update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret).
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        removeSelectedRepoFromOrgSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["removeSelectedRepoFromOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["removeSelectedRepoFromOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a repository from an organization variable that is
-         * available to selected repositories. Organization variables that are available to
-         * selected repositories have their `visibility` field set to `selected`.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        removeSelectedRepoFromOrgVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["removeSelectedRepoFromOrgVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["removeSelectedRepoFromOrgVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Approve or reject custom deployment protection rules provided by a GitHub App for a workflow run. For more information, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
-         *
-         * **Note:** GitHub Apps can only review their own custom deployment protection rules.
-         * To approve or reject pending deployments that are waiting for review from a specific person or team, see [`POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments`](/rest/actions/workflow-runs#review-pending-deployments-for-a-workflow-run).
-         *
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have read and write permission for **Deployments** to use this endpoint.
-         */
-        reviewCustomGatesForRun: {
-            (params?: RestEndpointMethodTypes["actions"]["reviewCustomGatesForRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["reviewCustomGatesForRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Approve or reject pending deployments that are waiting on approval by a required reviewer.
-         *
-         * Required reviewers with read access to the repository contents and deployments can use this endpoint. Required reviewers must authenticate using an access token with the `repo` scope to use this endpoint.
-         */
-        reviewPendingDeploymentsForRun: {
-            (params?: RestEndpointMethodTypes["actions"]["reviewPendingDeploymentsForRun"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["reviewPendingDeploymentsForRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Sets the actions and reusable workflows 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](#set-github-actions-permissions-for-an-organization)."
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-         */
-        setAllowedActionsOrganization: {
-            (params?: RestEndpointMethodTypes["actions"]["setAllowedActionsOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["setAllowedActionsOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Sets the actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)."
-         *
-         * 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.
-         */
-        setAllowedActionsRepository: {
-            (params?: RestEndpointMethodTypes["actions"]["setAllowedActionsRepository"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["setAllowedActionsRepository"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Remove all previous custom labels and set the new custom labels for a specific
-         * self-hosted runner configured in an organization.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        setCustomLabelsForSelfHostedRunnerForOrg: {
-            (params?: RestEndpointMethodTypes["actions"]["setCustomLabelsForSelfHostedRunnerForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["setCustomLabelsForSelfHostedRunnerForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Remove all previous custom labels and set the new custom labels for a specific
-         * self-hosted runner configured in a repository.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `administration` permission for repositories and the `organization_self_hosted_runners` permission for organizations.
-         * Authenticated users must have admin access to repositories or organizations, or the `manage_runners:enterprise` scope for enterprises, to use these endpoints.
-         */
-        setCustomLabelsForSelfHostedRunnerForRepo: {
-            (params?: RestEndpointMethodTypes["actions"]["setCustomLabelsForSelfHostedRunnerForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["setCustomLabelsForSelfHostedRunnerForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, and sets if GitHub Actions
-         * can submit approving pull request reviews. For more information, see
-         * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)."
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-         */
-        setGithubActionsDefaultWorkflowPermissionsOrganization: {
-            (params?: RestEndpointMethodTypes["actions"]["setGithubActionsDefaultWorkflowPermissionsOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["setGithubActionsDefaultWorkflowPermissionsOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, and sets if GitHub Actions
-         * can submit approving pull request reviews.
-         * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/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)."
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the repository `administration` permission to use this API.
-         */
-        setGithubActionsDefaultWorkflowPermissionsRepository: {
-            (params?: RestEndpointMethodTypes["actions"]["setGithubActionsDefaultWorkflowPermissionsRepository"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["setGithubActionsDefaultWorkflowPermissionsRepository"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Sets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-         */
-        setGithubActionsPermissionsOrganization: {
-            (params?: RestEndpointMethodTypes["actions"]["setGithubActionsPermissionsOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["setGithubActionsPermissionsOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions and reusable workflows in the repository.
-         *
-         * 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.
-         */
-        setGithubActionsPermissionsRepository: {
-            (params?: RestEndpointMethodTypes["actions"]["setGithubActionsPermissionsRepository"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["setGithubActionsPermissionsRepository"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Replaces all repositories for an organization secret when the `visibility`
-         * for repository access is set to `selected`. The visibility is set when you [Create
-         * or update an organization secret](https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret).
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `secrets` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read secrets.
-         */
-        setSelectedReposForOrgSecret: {
-            (params?: RestEndpointMethodTypes["actions"]["setSelectedReposForOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["setSelectedReposForOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Replaces all repositories for an organization variable that is available
-         * to selected repositories. Organization variables that are available to selected
-         * repositories have their `visibility` field set to `selected`.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this
-         * endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        setSelectedReposForOrgVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["setSelectedReposForOrgVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["setSelectedReposForOrgVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Replaces 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](#set-github-actions-permissions-for-an-organization)."
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API.
-         */
-        setSelectedRepositoriesEnabledGithubActionsOrganization: {
-            (params?: RestEndpointMethodTypes["actions"]["setSelectedRepositoriesEnabledGithubActionsOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["setSelectedRepositoriesEnabledGithubActionsOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Sets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository.
-         * This endpoint only applies to private repositories.
-         * For more information, see "[Allowing access to components in a private repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)".
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the
-         * repository `administration` permission to use this endpoint.
-         */
-        setWorkflowAccessToRepository: {
-            (params?: RestEndpointMethodTypes["actions"]["setWorkflowAccessToRepository"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["setWorkflowAccessToRepository"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates an environment variable that you can reference in a GitHub Actions workflow.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `environment:write` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        updateEnvironmentVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["updateEnvironmentVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["updateEnvironmentVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates an organization variable that you can reference in a GitHub Actions workflow.
-         *
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         * If the repository is private, you must use an access token with the `repo` scope.
-         * GitHub Apps must have the `organization_actions_variables:write` organization permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        updateOrgVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["updateOrgVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["updateOrgVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates a repository variable that you can reference in a GitHub Actions workflow.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint.
-         * GitHub Apps must have the `actions_variables:write` repository permission to use this endpoint.
-         * Authenticated users must have collaborator access to a repository to create, update, or read variables.
-         */
-        updateRepoVariable: {
-            (params?: RestEndpointMethodTypes["actions"]["updateRepoVariable"]["parameters"]): Promise<RestEndpointMethodTypes["actions"]["updateRepoVariable"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    activity: {
-        /**
-         * Whether the authenticated user has starred the repository.
-         */
-        checkRepoIsStarredByAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["activity"]["checkRepoIsStarredByAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["checkRepoIsStarredByAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://docs.github.com/rest/activity/watching#set-a-repository-subscription).
-         */
-        deleteRepoSubscription: {
-            (params?: RestEndpointMethodTypes["activity"]["deleteRepoSubscription"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["deleteRepoSubscription"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/rest/activity/notifications#set-a-thread-subscription) endpoint and set `ignore` to `true`.
-         */
-        deleteThreadSubscription: {
-            (params?: RestEndpointMethodTypes["activity"]["deleteThreadSubscription"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["deleteThreadSubscription"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * GitHub provides several timeline resources in [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) format. The Feeds API lists all the feeds available to the authenticated user:
-         *
-         * *   **Timeline**: The GitHub global public timeline
-         * *   **User**: The public timeline for any user, using [URI template](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia)
-         * *   **Current user public**: The public timeline for the authenticated user
-         * *   **Current user**: The private timeline for the authenticated user
-         * *   **Current user actor**: The private timeline for activity created by the authenticated user
-         * *   **Current user organizations**: The private timeline for the organizations the authenticated user is a member of.
-         * *   **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub.
-         *
-         * **Note**: Private feeds are only returned when [authenticating via Basic Auth](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) since current feed URIs use the older, non revocable auth tokens.
-         */
-        getFeeds: {
-            (params?: RestEndpointMethodTypes["activity"]["getFeeds"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["getFeeds"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets information about whether the authenticated user is subscribed to the repository.
-         */
-        getRepoSubscription: {
-            (params?: RestEndpointMethodTypes["activity"]["getRepoSubscription"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["getRepoSubscription"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets information about a notification thread.
-         */
-        getThread: {
-            (params?: RestEndpointMethodTypes["activity"]["getThread"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["getThread"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/rest/activity/watching#get-a-repository-subscription).
-         *
-         * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread.
-         */
-        getThreadSubscriptionForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["activity"]["getThreadSubscriptionForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["getThreadSubscriptionForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events.
-         */
-        listEventsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["activity"]["listEventsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listEventsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List all notifications for the current user, sorted by most recently updated.
-         */
-        listNotificationsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["activity"]["listNotificationsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listNotificationsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This is the user's organization dashboard. You must be authenticated as the user to view this.
-         */
-        listOrgEventsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["activity"]["listOrgEventsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listOrgEventsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * We delay the public events feed by five minutes, which means the most recent event returned by the public events API actually occurred at least five minutes ago.
-         */
-        listPublicEvents: {
-            (params?: RestEndpointMethodTypes["activity"]["listPublicEvents"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listPublicEvents"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listPublicEventsForRepoNetwork: {
-            (params?: RestEndpointMethodTypes["activity"]["listPublicEventsForRepoNetwork"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listPublicEventsForRepoNetwork"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listPublicEventsForUser: {
-            (params?: RestEndpointMethodTypes["activity"]["listPublicEventsForUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listPublicEventsForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listPublicOrgEvents: {
-            (params?: RestEndpointMethodTypes["activity"]["listPublicOrgEvents"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listPublicOrgEvents"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * These are events that you've received by watching repos and following users. If you are authenticated as the given user, you will see private events. Otherwise, you'll only see public events.
-         */
-        listReceivedEventsForUser: {
-            (params?: RestEndpointMethodTypes["activity"]["listReceivedEventsForUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listReceivedEventsForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listReceivedPublicEventsForUser: {
-            (params?: RestEndpointMethodTypes["activity"]["listReceivedPublicEventsForUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listReceivedPublicEventsForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note**: This 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.
-         */
-        listRepoEvents: {
-            (params?: RestEndpointMethodTypes["activity"]["listRepoEvents"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listRepoEvents"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all notifications for the current user in the specified repository.
-         */
-        listRepoNotificationsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["activity"]["listRepoNotificationsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listRepoNotificationsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists repositories the authenticated user has starred.
-         *
-         * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: `application/vnd.github.star+json`.
-         */
-        listReposStarredByAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["activity"]["listReposStarredByAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listReposStarredByAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists repositories a user has starred.
-         *
-         * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: `application/vnd.github.star+json`.
-         */
-        listReposStarredByUser: {
-            (params?: RestEndpointMethodTypes["activity"]["listReposStarredByUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listReposStarredByUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists repositories a user is watching.
-         */
-        listReposWatchedByUser: {
-            (params?: RestEndpointMethodTypes["activity"]["listReposWatchedByUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listReposWatchedByUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the people that have starred the repository.
-         *
-         * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: `application/vnd.github.star+json`.
-         */
-        listStargazersForRepo: {
-            (params?: RestEndpointMethodTypes["activity"]["listStargazersForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listStargazersForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists repositories the authenticated user is watching.
-         */
-        listWatchedReposForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["activity"]["listWatchedReposForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listWatchedReposForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the people watching the specified repository.
-         */
-        listWatchersForRepo: {
-            (params?: RestEndpointMethodTypes["activity"]["listWatchersForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["listWatchersForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Marks all notifications as "read" for the current user. If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List notifications for the authenticated user](https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`.
-         */
-        markNotificationsAsRead: {
-            (params?: RestEndpointMethodTypes["activity"]["markNotificationsAsRead"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["markNotificationsAsRead"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Marks all notifications in a repository as "read" for the current user. If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List repository notifications for the authenticated user](https://docs.github.com/rest/activity/notifications#list-repository-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`.
-         */
-        markRepoNotificationsAsRead: {
-            (params?: RestEndpointMethodTypes["activity"]["markRepoNotificationsAsRead"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["markRepoNotificationsAsRead"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Marks a thread as "read." Marking a thread as "read" is equivalent to clicking a notification in your notification inbox on GitHub: https://github.com/notifications.
-         */
-        markThreadAsRead: {
-            (params?: RestEndpointMethodTypes["activity"]["markThreadAsRead"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["markThreadAsRead"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://docs.github.com/rest/activity/watching#delete-a-repository-subscription) completely.
-         */
-        setRepoSubscription: {
-            (params?: RestEndpointMethodTypes["activity"]["setRepoSubscription"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["setRepoSubscription"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**.
-         *
-         * You can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored.
-         *
-         * Unsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/rest/activity/notifications#delete-a-thread-subscription) endpoint.
-         */
-        setThreadSubscription: {
-            (params?: RestEndpointMethodTypes["activity"]["setThreadSubscription"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["setThreadSubscription"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-         */
-        starRepoForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["activity"]["starRepoForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["starRepoForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Unstar a repository that the authenticated user has previously starred.
-         */
-        unstarRepoForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["activity"]["unstarRepoForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["activity"]["unstarRepoForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    apps: {
-        /**
-         * Add a single repository to an installation. The authenticated user must have admin access to the repository.
-         *
-         * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint.
-         * @deprecated octokit.rest.apps.addRepoToInstallation() has been renamed to octokit.rest.apps.addRepoToInstallationForAuthenticatedUser() (2021-10-05)
-         */
-        addRepoToInstallation: {
-            (params?: RestEndpointMethodTypes["apps"]["addRepoToInstallation"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["addRepoToInstallation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Add a single repository to an installation. The authenticated user must have admin access to the repository.
-         *
-         * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint.
-         */
-        addRepoToInstallationForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["apps"]["addRepoToInstallationForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["addRepoToInstallationForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * OAuth applications and GitHub applications with OAuth authorizations can use this API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to use this endpoint, where the username is the application `client_id` and the password is its `client_secret`. Invalid tokens will return `404 NOT FOUND`.
-         */
-        checkToken: {
-            (params?: RestEndpointMethodTypes["apps"]["checkToken"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["checkToken"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`.
-         */
-        createFromManifest: {
-            (params?: RestEndpointMethodTypes["apps"]["createFromManifest"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["createFromManifest"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access. To restrict the access to specific repositories, you can provide the `repository_ids` when creating the token. When you omit `repository_ids`, the response does not contain the `repositories` key.
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        createInstallationAccessToken: {
-            (params?: RestEndpointMethodTypes["apps"]["createInstallationAccessToken"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["createInstallationAccessToken"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * OAuth and GitHub application owners can revoke a grant for their application and a specific user. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted.
-         * Deleting an application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized).
-         */
-        deleteAuthorization: {
-            (params?: RestEndpointMethodTypes["apps"]["deleteAuthorization"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["deleteAuthorization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Uninstalls a GitHub App on a user, organization, or business account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/rest/apps/apps#suspend-an-app-installation)" endpoint.
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        deleteInstallation: {
-            (params?: RestEndpointMethodTypes["apps"]["deleteInstallation"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["deleteInstallation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * OAuth  or GitHub application owners can revoke a single token for an OAuth application or a GitHub application with an OAuth authorization. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the application's `client_id` and `client_secret` as the username and password.
-         */
-        deleteToken: {
-            (params?: RestEndpointMethodTypes["apps"]["deleteToken"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["deleteToken"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/apps/apps#list-installations-for-the-authenticated-app)" endpoint.
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        getAuthenticated: {
-            (params?: RestEndpointMethodTypes["apps"]["getAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["getAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note**: The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`).
-         *
-         * If the GitHub App you specify is public, you can access this endpoint without authenticating. If the GitHub App you specify is private, you must authenticate with a [personal access token](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
-         */
-        getBySlug: {
-            (params?: RestEndpointMethodTypes["apps"]["getBySlug"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["getBySlug"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Enables an authenticated GitHub App to find an installation's information using the installation id.
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        getInstallation: {
-            (params?: RestEndpointMethodTypes["apps"]["getInstallation"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["getInstallation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Enables an authenticated GitHub App to find the organization's installation information.
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        getOrgInstallation: {
-            (params?: RestEndpointMethodTypes["apps"]["getOrgInstallation"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["getOrgInstallation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to.
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        getRepoInstallation: {
-            (params?: RestEndpointMethodTypes["apps"]["getRepoInstallation"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["getRepoInstallation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
-         *
-         * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-         */
-        getSubscriptionPlanForAccount: {
-            (params?: RestEndpointMethodTypes["apps"]["getSubscriptionPlanForAccount"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["getSubscriptionPlanForAccount"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
-         *
-         * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-         */
-        getSubscriptionPlanForAccountStubbed: {
-            (params?: RestEndpointMethodTypes["apps"]["getSubscriptionPlanForAccountStubbed"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["getSubscriptionPlanForAccountStubbed"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Enables an authenticated GitHub App to find the user’s installation information.
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        getUserInstallation: {
-            (params?: RestEndpointMethodTypes["apps"]["getUserInstallation"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["getUserInstallation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)."
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        getWebhookConfigForApp: {
-            (params?: RestEndpointMethodTypes["apps"]["getWebhookConfigForApp"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["getWebhookConfigForApp"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a delivery for the webhook configured for a GitHub App.
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        getWebhookDelivery: {
-            (params?: RestEndpointMethodTypes["apps"]["getWebhookDelivery"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["getWebhookDelivery"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
-         *
-         * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-         */
-        listAccountsForPlan: {
-            (params?: RestEndpointMethodTypes["apps"]["listAccountsForPlan"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["listAccountsForPlan"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
-         *
-         * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-         */
-        listAccountsForPlanStubbed: {
-            (params?: RestEndpointMethodTypes["apps"]["listAccountsForPlanStubbed"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["listAccountsForPlanStubbed"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation.
-         *
-         * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
-         *
-         * You must use a [user access token](https://docs.github.com/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), created for a user who has authorized your GitHub App, to access this endpoint.
-         *
-         * The access the user has to each repository is included in the hash under the `permissions` key.
-         */
-        listInstallationReposForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["apps"]["listInstallationReposForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["listInstallationReposForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all the pending installation requests for the authenticated GitHub App.
-         */
-        listInstallationRequestsForAuthenticatedApp: {
-            (params?: RestEndpointMethodTypes["apps"]["listInstallationRequestsForAuthenticatedApp"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["listInstallationRequestsForAuthenticatedApp"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You must use a [JWT](https://docs.github.com/enterprise-server@3.9/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         *
-         * The permissions the installation has are included under the `permissions` key.
-         */
-        listInstallations: {
-            (params?: RestEndpointMethodTypes["apps"]["listInstallations"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["listInstallations"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access.
-         *
-         * You must use a [user access token](https://docs.github.com/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), created for a user who has authorized your GitHub App, to access this endpoint.
-         *
-         * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
-         *
-         * You can find the permissions for the installation under the `permissions` key.
-         */
-        listInstallationsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["apps"]["listInstallationsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["listInstallationsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all plans that are part of your GitHub Marketplace listing.
-         *
-         * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-         */
-        listPlans: {
-            (params?: RestEndpointMethodTypes["apps"]["listPlans"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["listPlans"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all plans that are part of your GitHub Marketplace listing.
-         *
-         * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint.
-         */
-        listPlansStubbed: {
-            (params?: RestEndpointMethodTypes["apps"]["listPlansStubbed"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["listPlansStubbed"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List repositories that an app installation can access.
-         *
-         * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
-         */
-        listReposAccessibleToInstallation: {
-            (params?: RestEndpointMethodTypes["apps"]["listReposAccessibleToInstallation"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["listReposAccessibleToInstallation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the active subscriptions for the authenticated user. GitHub Apps must use a [user access token](https://docs.github.com/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), created for a user who has authorized your GitHub App, to access this endpoint. OAuth apps must authenticate using an [OAuth token](https://docs.github.com/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps).
-         */
-        listSubscriptionsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["apps"]["listSubscriptionsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["listSubscriptionsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the active subscriptions for the authenticated user. GitHub Apps must use a [user access token](https://docs.github.com/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), created for a user who has authorized your GitHub App, to access this endpoint. OAuth apps must authenticate using an [OAuth token](https://docs.github.com/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps).
-         */
-        listSubscriptionsForAuthenticatedUserStubbed: {
-            (params?: RestEndpointMethodTypes["apps"]["listSubscriptionsForAuthenticatedUserStubbed"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["listSubscriptionsForAuthenticatedUserStubbed"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a list of webhook deliveries for the webhook configured for a GitHub App.
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        listWebhookDeliveries: {
-            (params?: RestEndpointMethodTypes["apps"]["listWebhookDeliveries"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["listWebhookDeliveries"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Redeliver a delivery for the webhook configured for a GitHub App.
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        redeliverWebhookDelivery: {
-            (params?: RestEndpointMethodTypes["apps"]["redeliverWebhookDelivery"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["redeliverWebhookDelivery"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Remove a single repository from an installation. The authenticated user must have admin access to the repository. The installation must have the `repository_selection` of `selected`.
-         *
-         * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint.
-         * @deprecated octokit.rest.apps.removeRepoFromInstallation() has been renamed to octokit.rest.apps.removeRepoFromInstallationForAuthenticatedUser() (2021-10-05)
-         */
-        removeRepoFromInstallation: {
-            (params?: RestEndpointMethodTypes["apps"]["removeRepoFromInstallation"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["removeRepoFromInstallation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Remove a single repository from an installation. The authenticated user must have admin access to the repository. The installation must have the `repository_selection` of `selected`.
-         *
-         * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint.
-         */
-        removeRepoFromInstallationForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["apps"]["removeRepoFromInstallationForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["removeRepoFromInstallationForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * OAuth applications and GitHub applications with OAuth authorizations can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
-         */
-        resetToken: {
-            (params?: RestEndpointMethodTypes["apps"]["resetToken"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["resetToken"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Revokes the installation token you're using to authenticate as an installation and access this endpoint.
-         *
-         * Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the "[Create an installation access token for an app](https://docs.github.com/rest/apps/apps#create-an-installation-access-token-for-an-app)" endpoint.
-         *
-         * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
-         */
-        revokeInstallationAccessToken: {
-            (params?: RestEndpointMethodTypes["apps"]["revokeInstallationAccessToken"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["revokeInstallationAccessToken"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Use a non-scoped user access token to create a repository scoped and/or permission scoped user access token. You can specify which repositories the token can access and which permissions are granted to the token. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the `client_id` and `client_secret` of the GitHub App as the username and password. Invalid tokens will return `404 NOT FOUND`.
-         */
-        scopeToken: {
-            (params?: RestEndpointMethodTypes["apps"]["scopeToken"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["scopeToken"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Suspends a GitHub App on a user, organization, or business account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account.
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        suspendInstallation: {
-            (params?: RestEndpointMethodTypes["apps"]["suspendInstallation"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["suspendInstallation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a GitHub App installation suspension.
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        unsuspendInstallation: {
-            (params?: RestEndpointMethodTypes["apps"]["unsuspendInstallation"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["unsuspendInstallation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)."
-         *
-         * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
-         */
-        updateWebhookConfigForApp: {
-            (params?: RestEndpointMethodTypes["apps"]["updateWebhookConfigForApp"]["parameters"]): Promise<RestEndpointMethodTypes["apps"]["updateWebhookConfigForApp"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    billing: {
-        /**
-         * Gets the summary of the free and paid GitHub Actions minutes used.
-         *
-         * 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](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
-         *
-         * Access tokens must have the `repo` or `admin:org` scope.
-         */
-        getGithubActionsBillingOrg: {
-            (params?: RestEndpointMethodTypes["billing"]["getGithubActionsBillingOrg"]["parameters"]): Promise<RestEndpointMethodTypes["billing"]["getGithubActionsBillingOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the summary of the free and paid GitHub Actions minutes used.
-         *
-         * 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](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)".
-         *
-         * Access tokens must have the `user` scope.
-         */
-        getGithubActionsBillingUser: {
-            (params?: RestEndpointMethodTypes["billing"]["getGithubActionsBillingUser"]["parameters"]): Promise<RestEndpointMethodTypes["billing"]["getGithubActionsBillingUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the free and paid storage used for GitHub Packages in gigabytes.
-         *
-         * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)."
-         *
-         * Access tokens must have the `repo` or `admin:org` scope.
-         */
-        getGithubPackagesBillingOrg: {
-            (params?: RestEndpointMethodTypes["billing"]["getGithubPackagesBillingOrg"]["parameters"]): Promise<RestEndpointMethodTypes["billing"]["getGithubPackagesBillingOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the free and paid storage used for GitHub Packages in gigabytes.
-         *
-         * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)."
-         *
-         * Access tokens must have the `user` scope.
-         */
-        getGithubPackagesBillingUser: {
-            (params?: RestEndpointMethodTypes["billing"]["getGithubPackagesBillingUser"]["parameters"]): Promise<RestEndpointMethodTypes["billing"]["getGithubPackagesBillingUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages.
-         *
-         * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)."
-         *
-         * Access tokens must have the `repo` or `admin:org` scope.
-         */
-        getSharedStorageBillingOrg: {
-            (params?: RestEndpointMethodTypes["billing"]["getSharedStorageBillingOrg"]["parameters"]): Promise<RestEndpointMethodTypes["billing"]["getSharedStorageBillingOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages.
-         *
-         * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)."
-         *
-         * Access tokens must have the `user` scope.
-         */
-        getSharedStorageBillingUser: {
-            (params?: RestEndpointMethodTypes["billing"]["getSharedStorageBillingUser"]["parameters"]): Promise<RestEndpointMethodTypes["billing"]["getSharedStorageBillingUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    checks: {
-        /**
-         * **Note:** The 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.
-         *
-         * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs.
-         *
-         * In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs.
-         */
-        create: {
-            (params?: RestEndpointMethodTypes["checks"]["create"]["parameters"]): Promise<RestEndpointMethodTypes["checks"]["create"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** The 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`.
-         *
-         * By default, check suites are automatically created when you create a [check run](https://docs.github.com/rest/checks/runs). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Update repository preferences for check suites](https://docs.github.com/rest/checks/suites#update-repository-preferences-for-check-suites)". Your GitHub App must have the `checks:write` permission to create check suites.
-         */
-        createSuite: {
-            (params?: RestEndpointMethodTypes["checks"]["createSuite"]["parameters"]): Promise<RestEndpointMethodTypes["checks"]["createSuite"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** The 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.
-         *
-         * Gets a single check run using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth apps and authenticated users must have the `repo` scope to get check runs in a private repository.
-         */
-        get: {
-            (params?: RestEndpointMethodTypes["checks"]["get"]["parameters"]): Promise<RestEndpointMethodTypes["checks"]["get"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** The 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`.
-         *
-         * Gets a single check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check suites. OAuth apps and authenticated users must have the `repo` scope to get check suites in a private repository.
-         */
-        getSuite: {
-            (params?: RestEndpointMethodTypes["checks"]["getSuite"]["parameters"]): Promise<RestEndpointMethodTypes["checks"]["getSuite"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists annotations for a check run using the annotation `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get annotations for a check run. OAuth apps and authenticated users must have the `repo` scope to get annotations for a check run in a private repository.
-         */
-        listAnnotations: {
-            (params?: RestEndpointMethodTypes["checks"]["listAnnotations"]["parameters"]): Promise<RestEndpointMethodTypes["checks"]["listAnnotations"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth apps and authenticated users must have the `repo` scope to get check runs in a private repository.
-         *
-         * **Note:** The endpoints to manage checks only look 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.
-         *
-         * If there are more than 1000 check suites on a single git reference, this endpoint will limit check runs to the 1000 most recent check suites. To iterate over all possible check runs, use the [List check suites for a Git reference](https://docs.github.com/rest/reference/checks#list-check-suites-for-a-git-reference) endpoint and provide the `check_suite_id` parameter to the [List check runs in a check suite](https://docs.github.com/rest/reference/checks#list-check-runs-in-a-check-suite) endpoint.
-         */
-        listForRef: {
-            (params?: RestEndpointMethodTypes["checks"]["listForRef"]["parameters"]): Promise<RestEndpointMethodTypes["checks"]["listForRef"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists check runs for a check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth apps and authenticated users must have the `repo` scope to get check runs in a private repository.
-         *
-         * **Note:** The endpoints to manage checks only look 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.
-         */
-        listForSuite: {
-            (params?: RestEndpointMethodTypes["checks"]["listForSuite"]["parameters"]): Promise<RestEndpointMethodTypes["checks"]["listForSuite"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to list check suites. OAuth apps and authenticated users must have the `repo` scope to get check suites in a private repository.
-         *
-         * **Note:** The endpoints to manage checks only look 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`.
-         */
-        listSuitesForRef: {
-            (params?: RestEndpointMethodTypes["checks"]["listSuitesForRef"]["parameters"]): Promise<RestEndpointMethodTypes["checks"]["listSuitesForRef"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Triggers GitHub to rerequest an existing check run, without pushing new code to a repository. This endpoint will trigger the [`check_run` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) event with the action `rerequested`. When a check run is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared.
-         *
-         * To rerequest a check run, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository.
-         *
-         * For more information about how to re-run GitHub Actions jobs, see "[Re-run a job from a workflow run](https://docs.github.com/rest/actions/workflow-runs#re-run-a-job-from-a-workflow-run)".
-         */
-        rerequestRun: {
-            (params?: RestEndpointMethodTypes["checks"]["rerequestRun"]["parameters"]): Promise<RestEndpointMethodTypes["checks"]["rerequestRun"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://docs.github.com/webhooks/event-payloads/#check_suite) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared.
-         *
-         * To rerequest a check suite, your GitHub App must have the `checks:write` permission on a private repository or pull access to a public repository.
-         */
-        rerequestSuite: {
-            (params?: RestEndpointMethodTypes["checks"]["rerequestSuite"]["parameters"]): Promise<RestEndpointMethodTypes["checks"]["rerequestSuite"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://docs.github.com/rest/checks/suites#create-a-check-suite). You must have admin permissions in the repository to set preferences for check suites.
-         */
-        setSuitesPreferences: {
-            (params?: RestEndpointMethodTypes["checks"]["setSuitesPreferences"]["parameters"]): Promise<RestEndpointMethodTypes["checks"]["setSuitesPreferences"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates a check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to edit check runs.
-         *
-         * **Note:** The endpoints to manage checks only look 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.
-         */
-        update: {
-            (params?: RestEndpointMethodTypes["checks"]["update"]["parameters"]): Promise<RestEndpointMethodTypes["checks"]["update"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    codeScanning: {
-        /**
-         * Deletes a specified code scanning analysis from a repository. For
-         * private repositories, you must use an access token with the `repo` scope. For public repositories,
-         * you must use an access token with `public_repo` scope.
-         * GitHub Apps must have the `security_events` write permission to use this endpoint.
-         *
-         * You can delete one analysis at a time.
-         * To delete a series of analyses, start with the most recent analysis and work backwards.
-         * Conceptually, the process is similar to the undo function in a text editor.
-         *
-         * When you list the analyses for a repository,
-         * one or more will be identified as deletable in the response:
-         *
-         * ```
-         * "deletable": true
-         * ```
-         *
-         * An analysis is deletable when it's the most recent in a set of analyses.
-         * Typically, a repository will have multiple sets of analyses
-         * for each enabled code scanning tool,
-         * where a set is determined by a unique combination of analysis values:
-         *
-         * * `ref`
-         * * `tool`
-         * * `category`
-         *
-         * If you attempt to delete an analysis that is not the most recent in a set,
-         * you'll get a 400 response with the message:
-         *
-         * ```
-         * Analysis specified is not deletable.
-         * ```
-         *
-         * The response from a successful `DELETE` operation provides you with
-         * two alternative URLs for deleting the next analysis in the set:
-         * `next_analysis_url` and `confirm_delete_url`.
-         * Use the `next_analysis_url` URL if you want to avoid accidentally deleting the final analysis
-         * in a set. This is a useful option if you want to preserve at least one analysis
-         * for the specified tool in your repository.
-         * Use the `confirm_delete_url` URL if you are content to remove all analyses for a tool.
-         * When you delete the last analysis in a set, the value of `next_analysis_url` and `confirm_delete_url`
-         * in the 200 response is `null`.
-         *
-         * As an example of the deletion process,
-         * let's imagine that you added a workflow that configured a particular code scanning tool
-         * to analyze the code in a repository. This tool has added 15 analyses:
-         * 10 on the default branch, and another 5 on a topic branch.
-         * You therefore have two separate sets of analyses for this tool.
-         * You've now decided that you want to remove all of the analyses for the tool.
-         * To do this you must make 15 separate deletion requests.
-         * To start, you must find an analysis that's identified as deletable.
-         * Each set of analyses always has one that's identified as deletable.
-         * Having found the deletable analysis for one of the two sets,
-         * delete this analysis and then continue deleting the next analysis in the set until they're all deleted.
-         * Then repeat the process for the second set.
-         * The procedure therefore consists of a nested loop:
-         *
-         * **Outer loop**:
-         * * List the analyses for the repository, filtered by tool.
-         * * Parse this list to find a deletable analysis. If found:
-         *
-         *   **Inner loop**:
-         *   * Delete the identified analysis.
-         *   * Parse the response for the value of `confirm_delete_url` and, if found, use this in the next iteration.
-         *
-         * The above process assumes that you want to remove all trace of the tool's analyses from the GitHub user interface, for the specified repository, and it therefore uses the `confirm_delete_url` value. Alternatively, you could use the `next_analysis_url` value, which would leave the last analysis in each set undeleted to avoid removing a tool's analysis entirely.
-         */
-        deleteAnalysis: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["deleteAnalysis"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["deleteAnalysis"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint with private repos, the `public_repo` scope also grants permission to read security events on public repos only. GitHub Apps must have the `security_events` read permission to use this endpoint.
-         */
-        getAlert: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["getAlert"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["getAlert"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specified code scanning analysis for a repository.
-         * You must use an access token with the `security_events` scope to use this endpoint with private repos,
-         * the `public_repo` scope also grants permission to read security events on public repos only.
-         * GitHub Apps must have the `security_events` read permission to use this endpoint.
-         *
-         * The default JSON response contains fields that describe the analysis.
-         * This includes the Git reference and commit SHA to which the analysis relates,
-         * the datetime of the analysis, the name of the code scanning tool,
-         * and the number of alerts.
-         *
-         * The `rules_count` field in the default response give the number of rules
-         * that were run in the analysis.
-         * For very old analyses this data is not available,
-         * and `0` is returned in this field.
-         *
-         * If you use the Accept header `application/sarif+json`,
-         * the response contains the analysis data that was uploaded.
-         * This is formatted as
-         * [SARIF version 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html).
-         */
-        getAnalysis: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["getAnalysis"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["getAnalysis"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a CodeQL database for a language in a repository.
-         *
-         * By default this endpoint returns JSON metadata about the CodeQL database. To
-         * download the CodeQL database binary content, set the `Accept` header of the request
-         * to [`application/zip`](https://docs.github.com/rest/overview/media-types), and make sure
-         * your HTTP client is configured to follow redirects or use the `Location` header
-         * to make a second request to get the redirect URL.
-         *
-         * For private repositories, you must use an access token with the `security_events` scope.
-         * For public repositories, you can use tokens with the `security_events` or `public_repo` scope.
-         * GitHub Apps must have the `contents` read permission to use this endpoint.
-         */
-        getCodeqlDatabase: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["getCodeqlDatabase"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["getCodeqlDatabase"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a code scanning default setup configuration.
-         * You must use an access token with the `repo` scope to use this endpoint with private repos or the `public_repo`
-         * scope for public repos. GitHub Apps must have the `repo` write permission to use this endpoint.
-         */
-        getDefaultSetup: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["getDefaultSetup"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["getDefaultSetup"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets information about a SARIF upload, including the status and the URL of the analysis that was uploaded so that you can retrieve details of the analysis. For more information, see "[Get a code scanning analysis for a repository](/rest/code-scanning/code-scanning#get-a-code-scanning-analysis-for-a-repository)." You must use an access token with the `security_events` scope to use this endpoint with private repos, the `public_repo` scope also grants permission to read security events on public repos only. GitHub Apps must have the `security_events` read permission to use this endpoint.
-         */
-        getSarif: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["getSarif"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["getSarif"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all instances of the specified code scanning alert.
-         * You must use an access token with the `security_events` scope to use this endpoint with private repos,
-         * the `public_repo` scope also grants permission to read security events on public repos only.
-         * GitHub Apps must have the `security_events` read permission to use this endpoint.
-         */
-        listAlertInstances: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["listAlertInstances"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["listAlertInstances"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists code scanning alerts for the default branch for all eligible repositories in an organization. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-         *
-         * To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.
-         *
-         * For public repositories, you may instead use the `public_repo` scope.
-         *
-         * GitHub Apps must have the `security_events` read permission to use this endpoint.
-         */
-        listAlertsForOrg: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["listAlertsForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["listAlertsForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all open code scanning alerts for the default branch (usually `main`
-         * or `master`). You must use an access token with the `security_events` scope to use
-         * this endpoint with private repos, the `public_repo` scope also grants permission to read
-         * security events on public repos only. GitHub Apps must have the `security_events` read
-         * permission to use this endpoint.
-         *
-         * The response includes a `most_recent_instance` object.
-         * This provides details of the most recent instance of this alert
-         * for the default branch or for the specified Git reference
-         * (if you used `ref` in the request).
-         */
-        listAlertsForRepo: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["listAlertsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["listAlertsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all instances of the specified code scanning alert.
-         * You must use an access token with the `security_events` scope to use this endpoint with private repos,
-         * the `public_repo` scope also grants permission to read security events on public repos only.
-         * GitHub Apps must have the `security_events` read permission to use this endpoint.
-         * @deprecated octokit.rest.codeScanning.listAlertsInstances() has been renamed to octokit.rest.codeScanning.listAlertInstances() (2021-04-30)
-         */
-        listAlertsInstances: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["listAlertsInstances"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["listAlertsInstances"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the CodeQL databases that are available in a repository.
-         *
-         * For private repositories, you must use an access token with the `security_events` scope.
-         * For public repositories, you can use tokens with the `security_events` or `public_repo` scope.
-         * GitHub Apps must have the `contents` read permission to use this endpoint.
-         */
-        listCodeqlDatabases: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["listCodeqlDatabases"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["listCodeqlDatabases"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the details of all code scanning analyses for a repository,
-         * starting with the most recent.
-         * The response is paginated and you can use the `page` and `per_page` parameters
-         * to list the analyses you're interested in.
-         * By default 30 analyses are listed per page.
-         *
-         * The `rules_count` field in the response give the number of rules
-         * that were run in the analysis.
-         * For very old analyses this data is not available,
-         * and `0` is returned in this field.
-         *
-         * You must use an access token with the `security_events` scope to use this endpoint with private repos,
-         * the `public_repo` scope also grants permission to read security events on public repos only.
-         * GitHub Apps must have the `security_events` read permission to use this endpoint.
-         *
-         * **Deprecation notice**:
-         * The `tool_name` field is deprecated and will, in future, not be included in the response for this endpoint. The example response reflects this change. The tool name can now be found inside the `tool` field.
-         */
-        listRecentAnalyses: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["listRecentAnalyses"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["listRecentAnalyses"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates the status of a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint with private repositories. You can also use tokens with the `public_repo` scope for public repositories only. GitHub Apps must have the `security_events` write permission to use this endpoint.
-         */
-        updateAlert: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["updateAlert"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["updateAlert"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates a code scanning default setup configuration.
-         * You must use an access token with the `repo` scope to use this endpoint with private repos or the `public_repo`
-         * scope for public repos. GitHub Apps must have the `repo` write permission to use this endpoint.
-         */
-        updateDefaultSetup: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["updateDefaultSetup"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["updateDefaultSetup"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint for private repositories. You can also use tokens with the `public_repo` scope for public repositories only. GitHub Apps must have the `security_events` write permission to use this endpoint. For troubleshooting information, see "[Troubleshooting SARIF uploads](https://docs.github.com/code-security/code-scanning/troubleshooting-sarif)."
-         *
-         * There are two places where you can upload code scanning results.
-         *  - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see "[Triaging code scanning alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)."
-         *  - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see "[Managing code scanning alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)."
-         *
-         * You must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:
-         *
-         * ```
-         * gzip -c analysis-data.sarif | base64 -w0
-         * ```
-         * <br>
-         * SARIF upload supports a maximum number of entries per the following data objects, and an analysis will be rejected if any of these objects is above its maximum value. For some objects, there are additional values over which the entries will be ignored while keeping the most important entries whenever applicable.
-         * To get the most out of your analysis when it includes data above the supported limits, try to optimize the analysis configuration. For example, for the CodeQL tool, identify and remove the most noisy queries. For more information, see "[SARIF results exceed one or more limits](https://docs.github.com/code-security/code-scanning/troubleshooting-sarif/results-exceed-limit)."
-         *
-         *
-         * | **SARIF data**                   | **Maximum values** | **Additional limits**                                                            |
-         * |----------------------------------|:------------------:|----------------------------------------------------------------------------------|
-         * | Runs per file                    |         20         |                                                                                  |
-         * | Results per run                  |       25,000       | Only the top 5,000 results will be included, prioritized by severity.            |
-         * | Rules per run                    |       25,000       |                                                                                  |
-         * | Tool extensions per run          |        100         |                                                                                  |
-         * | Thread Flow Locations per result |       10,000       | Only the top 1,000 Thread Flow Locations will be included, using prioritization. |
-         * | Location per result	             |       1,000        | Only 100 locations will be included.                                             |
-         * | Tags per rule	                   |         20         | Only 10 tags will be included.                                                   |
-         *
-         *
-         * The `202 Accepted` response includes an `id` value.
-         * You can use this ID to check the status of the upload by using it in the `/sarifs/{sarif_id}` endpoint.
-         * For more information, see "[Get information about a SARIF upload](/rest/code-scanning/code-scanning#get-information-about-a-sarif-upload)."
-         */
-        uploadSarif: {
-            (params?: RestEndpointMethodTypes["codeScanning"]["uploadSarif"]["parameters"]): Promise<RestEndpointMethodTypes["codeScanning"]["uploadSarif"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    codesOfConduct: {
-        /**
-         * Returns array of all GitHub's codes of conduct.
-         */
-        getAllCodesOfConduct: {
-            (params?: RestEndpointMethodTypes["codesOfConduct"]["getAllCodesOfConduct"]["parameters"]): Promise<RestEndpointMethodTypes["codesOfConduct"]["getAllCodesOfConduct"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns information about the specified GitHub code of conduct.
-         */
-        getConductCode: {
-            (params?: RestEndpointMethodTypes["codesOfConduct"]["getConductCode"]["parameters"]): Promise<RestEndpointMethodTypes["codesOfConduct"]["getConductCode"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    codespaces: {
-        /**
-         * Adds a repository to the selected repositories for a user's codespace secret.
-         * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-         * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on the referenced repository to use this endpoint.
-         */
-        addRepositoryForSecretForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["addRepositoryForSecretForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["addRepositoryForSecretForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         */
-        addSelectedRepoToOrgSecret: {
-            (params?: RestEndpointMethodTypes["codespaces"]["addSelectedRepoToOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["addSelectedRepoToOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Checks whether the permissions defined by a given devcontainer configuration have been accepted by the authenticated user.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-         */
-        checkPermissionsForDevcontainer: {
-            (params?: RestEndpointMethodTypes["codespaces"]["checkPermissionsForDevcontainer"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["checkPermissionsForDevcontainer"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the machine types a codespace can transition to use.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have read access to the `codespaces_metadata` repository permission to use this endpoint.
-         */
-        codespaceMachinesForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["codespaceMachinesForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["codespaceMachinesForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a new codespace, owned by the authenticated user.
-         *
-         * This endpoint requires either a `repository_id` OR a `pull_request` but not both.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-         */
-        createForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["createForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["createForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates or updates an organization secret with an encrypted value. Encrypt your secret using
-         * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-         *
-         * You must authenticate using an access
-         * token with the `admin:org` scope to use this endpoint.
-         */
-        createOrUpdateOrgSecret: {
-            (params?: RestEndpointMethodTypes["codespaces"]["createOrUpdateOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["createOrUpdateOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates or updates a repository secret with an encrypted value. Encrypt your secret using
-         * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-         *
-         * You must authenticate using an access
-         * token with the `repo` scope to use this endpoint. GitHub Apps must have write access to the `codespaces_secrets`
-         * repository permission to use this endpoint.
-         */
-        createOrUpdateRepoSecret: {
-            (params?: RestEndpointMethodTypes["codespaces"]["createOrUpdateRepoSecret"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["createOrUpdateRepoSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates or updates a secret for a user's codespace with an encrypted value. Encrypt your secret using
-         * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-         *
-         * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must also have Codespaces access to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and `codespaces_secrets` repository permission on all referenced repositories to use this endpoint.
-         */
-        createOrUpdateSecretForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["createOrUpdateSecretForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["createOrUpdateSecretForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a codespace owned by the authenticated user for the specified pull request.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-         */
-        createWithPrForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["createWithPrForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["createWithPrForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a codespace owned by the authenticated user in the specified repository.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-         */
-        createWithRepoForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["createWithRepoForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["createWithRepoForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a user's codespace.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-         */
-        deleteForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["deleteForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["deleteForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a user's codespace.
-         *
-         * To use this endpoint you must authenticate using one of the following methods:
-         *
-         * - An access token with the `admin:org` scope
-         * - An access token with write permissions for `Codespaces` on the specific repository and write permissions for `Organization codespaces`
-         */
-        deleteFromOrganization: {
-            (params?: RestEndpointMethodTypes["codespaces"]["deleteFromOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["deleteFromOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes an organization secret using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         */
-        deleteOrgSecret: {
-            (params?: RestEndpointMethodTypes["codespaces"]["deleteOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["deleteOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have write access to the `codespaces_secrets` repository permission to use this endpoint.
-         */
-        deleteRepoSecret: {
-            (params?: RestEndpointMethodTypes["codespaces"]["deleteRepoSecret"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["deleteRepoSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a secret from a user's codespaces using the secret name. Deleting the secret will remove access from all codespaces that were allowed to access the secret.
-         *
-         * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces_user_secrets` user permission to use this endpoint.
-         */
-        deleteSecretForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["deleteSecretForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["deleteSecretForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Triggers an export of the specified codespace and returns a URL and ID where the status of the export can be monitored.
-         *
-         * If changes cannot be pushed to the codespace's repository, they will be pushed to a new or previously-existing fork instead.
-         *
-         * You must authenticate using a personal access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint.
-         */
-        exportForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["exportForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["exportForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the codespaces that a member of an organization has for repositories in that organization.
-         *
-         * You must authenticate using an access token with the `admin:org` scope or the `Organization codespaces` read permission to use this endpoint.
-         */
-        getCodespacesForUserInOrg: {
-            (params?: RestEndpointMethodTypes["codespaces"]["getCodespacesForUserInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["getCodespacesForUserInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets information about an export of a codespace.
-         *
-         * You must authenticate using a personal access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have read access to the `codespaces_lifecycle_admin` repository permission to use this endpoint.
-         */
-        getExportDetailsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["getExportDetailsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["getExportDetailsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets information about a user's codespace.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint.
-         */
-        getForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["getForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["getForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a public key for an organization, which is required in order to encrypt secrets. You need to encrypt the value of a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         */
-        getOrgPublicKey: {
-            (params?: RestEndpointMethodTypes["codespaces"]["getOrgPublicKey"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["getOrgPublicKey"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets an organization secret without revealing its encrypted value.
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         */
-        getOrgSecret: {
-            (params?: RestEndpointMethodTypes["codespaces"]["getOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["getOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets.
-         *
-         * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-         *
-         * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint.
-         */
-        getPublicKeyForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["getPublicKeyForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["getPublicKeyForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have write access to the `codespaces_secrets` repository permission to use this endpoint.
-         */
-        getRepoPublicKey: {
-            (params?: RestEndpointMethodTypes["codespaces"]["getRepoPublicKey"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["getRepoPublicKey"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have write access to the `codespaces_secrets` repository permission to use this endpoint.
-         */
-        getRepoSecret: {
-            (params?: RestEndpointMethodTypes["codespaces"]["getRepoSecret"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["getRepoSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a secret available to a user's codespaces without revealing its encrypted value.
-         *
-         * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-         *
-         * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint.
-         */
-        getSecretForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["getSecretForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["getSecretForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the devcontainer.json files associated with a specified repository and the authenticated user. These files
-         * specify launchpoint configurations for codespaces created within the repository.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have read access to the `codespaces_metadata` repository permission to use this endpoint.
-         */
-        listDevcontainersInRepositoryForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["listDevcontainersInRepositoryForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["listDevcontainersInRepositoryForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the authenticated user's codespaces.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint.
-         */
-        listForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["listForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["listForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the codespaces associated to a specified organization.
-         *
-         * You must authenticate using an access token with the `admin:org` scope or the `Organization codespaces` read permission to use this endpoint.
-         */
-        listInOrganization: {
-            (params?: RestEndpointMethodTypes["codespaces"]["listInOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["listInOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the codespaces associated to a specified repository and the authenticated user.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint.
-         */
-        listInRepositoryForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["listInRepositoryForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["listInRepositoryForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all Codespaces secrets available at the organization-level without revealing their encrypted values.
-         * You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         */
-        listOrgSecrets: {
-            (params?: RestEndpointMethodTypes["codespaces"]["listOrgSecrets"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["listOrgSecrets"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have write access to the `codespaces_secrets` repository permission to use this endpoint.
-         */
-        listRepoSecrets: {
-            (params?: RestEndpointMethodTypes["codespaces"]["listRepoSecrets"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["listRepoSecrets"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the repositories that have been granted the ability to use a user's codespace secret.
-         *
-         * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-         *
-         * GitHub Apps must have read access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on all referenced repositories to use this endpoint.
-         */
-        listRepositoriesForSecretForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["listRepositoriesForSecretForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["listRepositoriesForSecretForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all secrets available for a user's Codespaces without revealing their
-         * encrypted values.
-         *
-         * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-         *
-         * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint.
-         */
-        listSecretsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["listSecretsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["listSecretsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         */
-        listSelectedReposForOrgSecret: {
-            (params?: RestEndpointMethodTypes["codespaces"]["listSelectedReposForOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["listSelectedReposForOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the default attributes for codespaces created by the user with the repository.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-         */
-        preFlightWithRepoForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["preFlightWithRepoForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["preFlightWithRepoForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Publishes an unpublished codespace, creating a new repository and assigning it to the codespace.
-         *
-         * The codespace's token is granted write permissions to the repository, allowing the user to push their changes.
-         *
-         * This will fail for a codespace that is already published, meaning it has an associated repository.
-         *
-         * You must authenticate using a personal access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-         */
-        publishForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["publishForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["publishForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a repository from the selected repositories for a user's codespace secret.
-         * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-         * GitHub Apps must have write access to the `codespaces_user_secrets` user permission to use this endpoint.
-         */
-        removeRepositoryForSecretForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["removeRepositoryForSecretForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["removeRepositoryForSecretForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         */
-        removeSelectedRepoFromOrgSecret: {
-            (params?: RestEndpointMethodTypes["codespaces"]["removeSelectedRepoFromOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["removeSelectedRepoFromOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the machine types available for a given repository based on its configuration.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces_metadata` repository permission to use this endpoint.
-         */
-        repoMachinesForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["repoMachinesForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["repoMachinesForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Select the repositories that will use a user's codespace secret.
-         *
-         * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on all referenced repositories to use this endpoint.
-         */
-        setRepositoriesForSecretForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["setRepositoriesForSecretForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["setRepositoriesForSecretForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint.
-         */
-        setSelectedReposForOrgSecret: {
-            (params?: RestEndpointMethodTypes["codespaces"]["setSelectedReposForOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["setSelectedReposForOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Starts a user's codespace.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint.
-         */
-        startForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["startForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["startForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Stops a user's codespace.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint.
-         */
-        stopForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["stopForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["stopForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Stops a user's codespace.
-         *
-         * To use this endpoint you must authenticate using one of the following methods:
-         *
-         * - An access token with the `admin:org` scope
-         * - An access token with write permissions for `Codespaces lifecycle admin` on the specific repository and write permissions for `Organization codespaces`
-         */
-        stopInOrganization: {
-            (params?: RestEndpointMethodTypes["codespaces"]["stopInOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["stopInOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates a codespace owned by the authenticated user. Currently only the codespace's machine type and recent folders can be modified using this endpoint.
-         *
-         * If you specify a new machine type it will be applied the next time your codespace is started.
-         *
-         * You must authenticate using an access token with the `codespace` scope to use this endpoint.
-         *
-         * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint.
-         */
-        updateForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["codespaces"]["updateForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["codespaces"]["updateForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    copilot: {
-        /**
-         * **Note**: This endpoint is in beta and is subject to change.
-         *
-         *  Purchases a GitHub Copilot for Business seat for all users within each specified team.
-         *  The organization will be billed accordingly. For more information about Copilot for Business pricing, see "[About billing for GitHub Copilot for Business](https://docs.github.com/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#pricing-for-github-copilot-for-business)".
-         *
-         *  Only organization owners and members with admin permissions can configure GitHub Copilot in their organization. You must
-         *  authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-         *
-         *  In order for an admin to use this endpoint, the organization must have a Copilot for Business subscription and a configured suggestion matching policy.
-         *  For more information about setting up a Copilot for Business subscription, see "[Setting up a Copilot for Business subscription for your organization](https://docs.github.com/billing/managing-billing-for-github-copilot/managing-your-github-copilot-subscription-for-your-organization-or-enterprise#setting-up-a-copilot-for-business-subscription-for-your-organization)".
-         *  For more information about setting a suggestion matching policy, see "[Configuring suggestion matching policies for GitHub Copilot in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization#configuring-suggestion-matching-policies-for-github-copilot-in-your-organization)".
-         */
-        addCopilotForBusinessSeatsForTeams: {
-            (params?: RestEndpointMethodTypes["copilot"]["addCopilotForBusinessSeatsForTeams"]["parameters"]): Promise<RestEndpointMethodTypes["copilot"]["addCopilotForBusinessSeatsForTeams"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note**: This endpoint is in beta and is subject to change.
-         *
-         * Purchases a GitHub Copilot for Business seat for each user specified.
-         * The organization will be billed accordingly. For more information about Copilot for Business pricing, see "[About billing for GitHub Copilot for Business](https://docs.github.com/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#pricing-for-github-copilot-for-business)".
-         *
-         * Only organization owners and members with admin permissions can configure GitHub Copilot in their organization. You must
-         * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-         *
-         * In order for an admin to use this endpoint, the organization must have a Copilot for Business subscription and a configured suggestion matching policy.
-         * For more information about setting up a Copilot for Business subscription, see "[Setting up a Copilot for Business subscription for your organization](https://docs.github.com/billing/managing-billing-for-github-copilot/managing-your-github-copilot-subscription-for-your-organization-or-enterprise#setting-up-a-copilot-for-business-subscription-for-your-organization)".
-         * For more information about setting a suggestion matching policy, see "[Configuring suggestion matching policies for GitHub Copilot in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization#configuring-suggestion-matching-policies-for-github-copilot-in-your-organization)".
-         */
-        addCopilotForBusinessSeatsForUsers: {
-            (params?: RestEndpointMethodTypes["copilot"]["addCopilotForBusinessSeatsForUsers"]["parameters"]): Promise<RestEndpointMethodTypes["copilot"]["addCopilotForBusinessSeatsForUsers"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note**: This endpoint is in beta and is subject to change.
-         *
-         * Cancels the Copilot for Business seat assignment for all members of each team specified.
-         * This will cause the members of the specified team(s) to lose access to GitHub Copilot at the end of the current billing cycle, and the organization will not be billed further for those users.
-         *
-         * For more information about Copilot for Business pricing, see "[About billing for GitHub Copilot for Business](https://docs.github.com/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#pricing-for-github-copilot-for-business)".
-         *
-         * For more information about disabling access to Copilot for Business, see "[Disabling access to GitHub Copilot for specific users in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization#disabling-access-to-github-copilot-for-specific-users-in-your-organization)".
-         *
-         * Only organization owners and members with admin permissions can configure GitHub Copilot in their organization. You must
-         * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-         */
-        cancelCopilotSeatAssignmentForTeams: {
-            (params?: RestEndpointMethodTypes["copilot"]["cancelCopilotSeatAssignmentForTeams"]["parameters"]): Promise<RestEndpointMethodTypes["copilot"]["cancelCopilotSeatAssignmentForTeams"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note**: This endpoint is in beta and is subject to change.
-         *
-         * Cancels the Copilot for Business seat assignment for each user specified.
-         * This will cause the specified users to lose access to GitHub Copilot at the end of the current billing cycle, and the organization will not be billed further for those users.
-         *
-         * For more information about Copilot for Business pricing, see "[About billing for GitHub Copilot for Business](https://docs.github.com/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#pricing-for-github-copilot-for-business)"
-         *
-         * For more information about disabling access to Copilot for Business, see "[Disabling access to GitHub Copilot for specific users in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization#disabling-access-to-github-copilot-for-specific-users-in-your-organization)".
-         *
-         * Only organization owners and members with admin permissions can configure GitHub Copilot in their organization. You must
-         * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-         */
-        cancelCopilotSeatAssignmentForUsers: {
-            (params?: RestEndpointMethodTypes["copilot"]["cancelCopilotSeatAssignmentForUsers"]["parameters"]): Promise<RestEndpointMethodTypes["copilot"]["cancelCopilotSeatAssignmentForUsers"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note**: This endpoint is in beta and is subject to change.
-         *
-         * Gets information about an organization's Copilot for Business subscription, including seat breakdown
-         * and code matching policies. To configure these settings, go to your organization's settings on GitHub.com.
-         * For more information, see "[Configuring GitHub Copilot settings in your organization](https://docs.github.com/copilot/configuring-github-copilot/configuring-github-copilot-settings-in-your-organization)".
-         *
-         * Only organization owners and members with admin permissions can configure and view details about the organization's Copilot for Business subscription. You must
-         * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-         */
-        getCopilotOrganizationDetails: {
-            (params?: RestEndpointMethodTypes["copilot"]["getCopilotOrganizationDetails"]["parameters"]): Promise<RestEndpointMethodTypes["copilot"]["getCopilotOrganizationDetails"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note**: This endpoint is in beta and is subject to change.
-         *
-         * Gets the GitHub Copilot for Business seat assignment details for a member of an organization who currently has access to GitHub Copilot.
-         *
-         * Organization owners and members with admin permissions can view GitHub Copilot seat assignment details for members in their organization. You must authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-         */
-        getCopilotSeatDetailsForUser: {
-            (params?: RestEndpointMethodTypes["copilot"]["getCopilotSeatDetailsForUser"]["parameters"]): Promise<RestEndpointMethodTypes["copilot"]["getCopilotSeatDetailsForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note**: This endpoint is in beta and is subject to change.
-         *
-         * Lists all Copilot for Business seat assignments for an organization that are currently being billed (either active or pending cancellation at the start of the next billing cycle).
-         *
-         * Only organization owners and members with admin permissions can configure and view details about the organization's Copilot for Business subscription. You must
-         * authenticate using an access token with the `manage_billing:copilot` scope to use this endpoint.
-         */
-        listCopilotSeats: {
-            (params?: RestEndpointMethodTypes["copilot"]["listCopilotSeats"]["parameters"]): Promise<RestEndpointMethodTypes["copilot"]["listCopilotSeats"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    dependabot: {
-        /**
-         * Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-         */
-        addSelectedRepoToOrgSecret: {
-            (params?: RestEndpointMethodTypes["dependabot"]["addSelectedRepoToOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["addSelectedRepoToOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates or updates an organization secret with an encrypted value. Encrypt your secret using
-         * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access
-         * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization
-         * permission to use this endpoint.
-         *
-         * #### Example encrypting a secret using Node.js
-         *
-         * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library.
-         *
-         * ```
-         * const sodium = require('tweetsodium');
-         *
-         * const key = "base64-encoded-public-key";
-         * const value = "plain-text-secret";
-         *
-         * // Convert the message and key to Uint8Array's (Buffer implements that interface)
-         * const messageBytes = Buffer.from(value);
-         * const keyBytes = Buffer.from(key, 'base64');
-         *
-         * // Encrypt using LibSodium.
-         * const encryptedBytes = sodium.seal(messageBytes, keyBytes);
-         *
-         * // Base64 the encrypted secret
-         * const encrypted = Buffer.from(encryptedBytes).toString('base64');
-         *
-         * console.log(encrypted);
-         * ```
-         *
-         *
-         * #### Example encrypting a secret using Python
-         *
-         * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3.
-         *
-         * ```
-         * from base64 import b64encode
-         * from nacl import encoding, public
-         *
-         * def encrypt(public_key: str, secret_value: str) -> str:
-         *   """Encrypt a Unicode string using the public key."""
-         *   public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder())
-         *   sealed_box = public.SealedBox(public_key)
-         *   encrypted = sealed_box.encrypt(secret_value.encode("utf-8"))
-         *   return b64encode(encrypted).decode("utf-8")
-         * ```
-         *
-         * #### Example encrypting a secret using C#
-         *
-         * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package.
-         *
-         * ```
-         * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret");
-         * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU=");
-         *
-         * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);
-         *
-         * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));
-         * ```
-         *
-         * #### Example encrypting a secret using Ruby
-         *
-         * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem.
-         *
-         * ```ruby
-         * require "rbnacl"
-         * require "base64"
-         *
-         * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=")
-         * public_key = RbNaCl::PublicKey.new(key)
-         *
-         * box = RbNaCl::Boxes::Sealed.from_public_key(public_key)
-         * encrypted_secret = box.encrypt("my_secret")
-         *
-         * # Print the base64 encoded secret
-         * puts Base64.strict_encode64(encrypted_secret)
-         * ```
-         */
-        createOrUpdateOrgSecret: {
-            (params?: RestEndpointMethodTypes["dependabot"]["createOrUpdateOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["createOrUpdateOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates or updates a repository secret with an encrypted value. Encrypt your secret using
-         * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). For more information, see "[Encrypting secrets for the REST API](https://docs.github.com/rest/guides/encrypting-secrets-for-the-rest-api)."
-         *
-         * You must authenticate using an access
-         * token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository
-         * permission to use this endpoint.
-         */
-        createOrUpdateRepoSecret: {
-            (params?: RestEndpointMethodTypes["dependabot"]["createOrUpdateRepoSecret"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["createOrUpdateRepoSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a secret in an organization using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-         */
-        deleteOrgSecret: {
-            (params?: RestEndpointMethodTypes["dependabot"]["deleteOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["deleteOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint.
-         */
-        deleteRepoSecret: {
-            (params?: RestEndpointMethodTypes["dependabot"]["deleteRepoSecret"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["deleteRepoSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You must use an access token with the `security_events` scope to use this endpoint with private repositories.
-         * You can also use tokens with the `public_repo` scope for public repositories only.
-         * GitHub Apps must have **Dependabot alerts** read permission to use this endpoint.
-         */
-        getAlert: {
-            (params?: RestEndpointMethodTypes["dependabot"]["getAlert"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["getAlert"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-         */
-        getOrgPublicKey: {
-            (params?: RestEndpointMethodTypes["dependabot"]["getOrgPublicKey"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["getOrgPublicKey"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a single organization secret without revealing its encrypted value. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-         */
-        getOrgSecret: {
-            (params?: RestEndpointMethodTypes["dependabot"]["getOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["getOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint.
-         */
-        getRepoPublicKey: {
-            (params?: RestEndpointMethodTypes["dependabot"]["getRepoPublicKey"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["getRepoPublicKey"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint.
-         */
-        getRepoSecret: {
-            (params?: RestEndpointMethodTypes["dependabot"]["getRepoSecret"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["getRepoSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists Dependabot alerts for repositories that are owned by the specified enterprise.
-         * To use this endpoint, you must be a member of the enterprise, and you must use an
-         * access token with the `repo` scope or `security_events` scope.
-         * Alerts are only returned for organizations in the enterprise for which you are an organization owner or a security manager. For more information about security managers, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-         */
-        listAlertsForEnterprise: {
-            (params?: RestEndpointMethodTypes["dependabot"]["listAlertsForEnterprise"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["listAlertsForEnterprise"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists Dependabot alerts for an organization.
-         *
-         * To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.
-         *
-         * For public repositories, you may instead use the `public_repo` scope.
-         *
-         * GitHub Apps must have **Dependabot alerts** read permission to use this endpoint.
-         */
-        listAlertsForOrg: {
-            (params?: RestEndpointMethodTypes["dependabot"]["listAlertsForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["listAlertsForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You must use an access token with the `security_events` scope to use this endpoint with private repositories.
-         * You can also use tokens with the `public_repo` scope for public repositories only.
-         * GitHub Apps must have **Dependabot alerts** read permission to use this endpoint.
-         */
-        listAlertsForRepo: {
-            (params?: RestEndpointMethodTypes["dependabot"]["listAlertsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["listAlertsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all secrets available in an organization without revealing their encrypted values. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-         */
-        listOrgSecrets: {
-            (params?: RestEndpointMethodTypes["dependabot"]["listOrgSecrets"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["listOrgSecrets"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint.
-         */
-        listRepoSecrets: {
-            (params?: RestEndpointMethodTypes["dependabot"]["listRepoSecrets"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["listRepoSecrets"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-         */
-        listSelectedReposForOrgSecret: {
-            (params?: RestEndpointMethodTypes["dependabot"]["listSelectedReposForOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["listSelectedReposForOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-         */
-        removeSelectedRepoFromOrgSecret: {
-            (params?: RestEndpointMethodTypes["dependabot"]["removeSelectedRepoFromOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["removeSelectedRepoFromOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint.
-         */
-        setSelectedReposForOrgSecret: {
-            (params?: RestEndpointMethodTypes["dependabot"]["setSelectedReposForOrgSecret"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["setSelectedReposForOrgSecret"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You must use an access token with the `security_events` scope to use this endpoint with private repositories.
-         * You can also use tokens with the `public_repo` scope for public repositories only.
-         * GitHub Apps must have **Dependabot alerts** write permission to use this endpoint.
-         *
-         * To use this endpoint, you must have access to security alerts for the repository. For more information, see "[Granting access to security alerts](https://docs.github.com/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)."
-         */
-        updateAlert: {
-            (params?: RestEndpointMethodTypes["dependabot"]["updateAlert"]["parameters"]): Promise<RestEndpointMethodTypes["dependabot"]["updateAlert"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    dependencyGraph: {
-        /**
-         * Create a new snapshot of a repository's dependencies. You must authenticate using an access token with the `repo` scope to use this endpoint for a repository that the requesting user has access to.
-         */
-        createRepositorySnapshot: {
-            (params?: RestEndpointMethodTypes["dependencyGraph"]["createRepositorySnapshot"]["parameters"]): Promise<RestEndpointMethodTypes["dependencyGraph"]["createRepositorySnapshot"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the diff of the dependency changes between two commits of a repository, based on the changes to the dependency manifests made in those commits.
-         */
-        diffRange: {
-            (params?: RestEndpointMethodTypes["dependencyGraph"]["diffRange"]["parameters"]): Promise<RestEndpointMethodTypes["dependencyGraph"]["diffRange"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Exports the software bill of materials (SBOM) for a repository in SPDX JSON format.
-         */
-        exportSbom: {
-            (params?: RestEndpointMethodTypes["dependencyGraph"]["exportSbom"]["parameters"]): Promise<RestEndpointMethodTypes["dependencyGraph"]["exportSbom"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    emojis: {
-        /**
-         * Lists all the emojis available to use on GitHub.
-         */
-        get: {
-            (params?: RestEndpointMethodTypes["emojis"]["get"]["parameters"]): Promise<RestEndpointMethodTypes["emojis"]["get"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    gists: {
-        checkIsStarred: {
-            (params?: RestEndpointMethodTypes["gists"]["checkIsStarred"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["checkIsStarred"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Allows you to add a new gist with one or more files.
-         *
-         * **Note:** Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally.
-         */
-        create: {
-            (params?: RestEndpointMethodTypes["gists"]["create"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["create"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        createComment: {
-            (params?: RestEndpointMethodTypes["gists"]["createComment"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["createComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        delete: {
-            (params?: RestEndpointMethodTypes["gists"]["delete"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["delete"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        deleteComment: {
-            (params?: RestEndpointMethodTypes["gists"]["deleteComment"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["deleteComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        fork: {
-            (params?: RestEndpointMethodTypes["gists"]["fork"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["fork"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        get: {
-            (params?: RestEndpointMethodTypes["gists"]["get"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["get"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        getComment: {
-            (params?: RestEndpointMethodTypes["gists"]["getComment"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["getComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        getRevision: {
-            (params?: RestEndpointMethodTypes["gists"]["getRevision"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["getRevision"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the authenticated user's gists or if called anonymously, this endpoint returns all public gists:
-         */
-        list: {
-            (params?: RestEndpointMethodTypes["gists"]["list"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["list"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listComments: {
-            (params?: RestEndpointMethodTypes["gists"]["listComments"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["listComments"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listCommits: {
-            (params?: RestEndpointMethodTypes["gists"]["listCommits"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["listCommits"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists public gists for the specified user:
-         */
-        listForUser: {
-            (params?: RestEndpointMethodTypes["gists"]["listForUser"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["listForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listForks: {
-            (params?: RestEndpointMethodTypes["gists"]["listForks"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["listForks"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List public gists sorted by most recently updated to least recently updated.
-         *
-         * Note: With [pagination](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page.
-         */
-        listPublic: {
-            (params?: RestEndpointMethodTypes["gists"]["listPublic"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["listPublic"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the authenticated user's starred gists:
-         */
-        listStarred: {
-            (params?: RestEndpointMethodTypes["gists"]["listStarred"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["listStarred"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-         */
-        star: {
-            (params?: RestEndpointMethodTypes["gists"]["star"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["star"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        unstar: {
-            (params?: RestEndpointMethodTypes["gists"]["unstar"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["unstar"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Allows you to update a gist's description and to update, delete, or rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged.
-         */
-        update: {
-            (params?: RestEndpointMethodTypes["gists"]["update"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["update"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        updateComment: {
-            (params?: RestEndpointMethodTypes["gists"]["updateComment"]["parameters"]): Promise<RestEndpointMethodTypes["gists"]["updateComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    git: {
-        createBlob: {
-            (params?: RestEndpointMethodTypes["git"]["createBlob"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["createBlob"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a new Git [commit object](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects).
-         *
-         * **Signature verification object**
-         *
-         * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-         *
-         * | Name | Type | Description |
-         * | ---- | ---- | ----------- |
-         * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-         * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. |
-         * | `signature` | `string` | The signature that was extracted from the commit. |
-         * | `payload` | `string` | The value that was signed. |
-         *
-         * These are the possible values for `reason` in the `verification` object:
-         *
-         * | Value | Description |
-         * | ----- | ----------- |
-         * | `expired_key` | The key that made the signature is expired. |
-         * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-         * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-         * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-         * | `unsigned` | The object does not include a signature. |
-         * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-         * | `no_user` | No user was associated with the `committer` email address in the commit. |
-         * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-         * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-         * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-         * | `malformed_signature` | There was an error parsing the signature. |
-         * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-         * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-         */
-        createCommit: {
-            (params?: RestEndpointMethodTypes["git"]["createCommit"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["createCommit"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches.
-         */
-        createRef: {
-            (params?: RestEndpointMethodTypes["git"]["createRef"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["createRef"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://docs.github.com/rest/git/refs#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://docs.github.com/rest/git/refs#create-a-reference) the tag reference - this call would be unnecessary.
-         *
-         * **Signature verification object**
-         *
-         * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-         *
-         * | Name | Type | Description |
-         * | ---- | ---- | ----------- |
-         * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-         * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-         * | `signature` | `string` | The signature that was extracted from the commit. |
-         * | `payload` | `string` | The value that was signed. |
-         *
-         * These are the possible values for `reason` in the `verification` object:
-         *
-         * | Value | Description |
-         * | ----- | ----------- |
-         * | `expired_key` | The key that made the signature is expired. |
-         * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-         * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-         * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-         * | `unsigned` | The object does not include a signature. |
-         * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-         * | `no_user` | No user was associated with the `committer` email address in the commit. |
-         * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-         * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-         * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-         * | `malformed_signature` | There was an error parsing the signature. |
-         * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-         * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-         */
-        createTag: {
-            (params?: RestEndpointMethodTypes["git"]["createTag"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["createTag"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure.
-         *
-         * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://docs.github.com/rest/git/commits#create-a-commit)" and "[Update a reference](https://docs.github.com/rest/git/refs#update-a-reference)."
-         *
-         * Returns an error if you try to delete a file that does not exist.
-         */
-        createTree: {
-            (params?: RestEndpointMethodTypes["git"]["createTree"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["createTree"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        deleteRef: {
-            (params?: RestEndpointMethodTypes["git"]["deleteRef"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["deleteRef"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * The `content` in the response will always be Base64 encoded.
-         *
-         * _Note_: This API supports blobs up to 100 megabytes in size.
-         */
-        getBlob: {
-            (params?: RestEndpointMethodTypes["git"]["getBlob"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["getBlob"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a Git [commit object](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects).
-         *
-         * To get the contents of a commit, see "[Get a commit](/rest/commits/commits#get-a-commit)."
-         *
-         * **Signature verification object**
-         *
-         * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-         *
-         * | Name | Type | Description |
-         * | ---- | ---- | ----------- |
-         * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-         * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. |
-         * | `signature` | `string` | The signature that was extracted from the commit. |
-         * | `payload` | `string` | The value that was signed. |
-         *
-         * These are the possible values for `reason` in the `verification` object:
-         *
-         * | Value | Description |
-         * | ----- | ----------- |
-         * | `expired_key` | The key that made the signature is expired. |
-         * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-         * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-         * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-         * | `unsigned` | The object does not include a signature. |
-         * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-         * | `no_user` | No user was associated with the `committer` email address in the commit. |
-         * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-         * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-         * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-         * | `malformed_signature` | There was an error parsing the signature. |
-         * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-         * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-         */
-        getCommit: {
-            (params?: RestEndpointMethodTypes["git"]["getCommit"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["getCommit"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/<branch name>` for branches and `tags/<tag name>` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned.
-         *
-         * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)".
-         */
-        getRef: {
-            (params?: RestEndpointMethodTypes["git"]["getRef"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["getRef"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Signature verification object**
-         *
-         * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-         *
-         * | Name | Type | Description |
-         * | ---- | ---- | ----------- |
-         * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-         * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-         * | `signature` | `string` | The signature that was extracted from the commit. |
-         * | `payload` | `string` | The value that was signed. |
-         *
-         * These are the possible values for `reason` in the `verification` object:
-         *
-         * | Value | Description |
-         * | ----- | ----------- |
-         * | `expired_key` | The key that made the signature is expired. |
-         * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-         * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-         * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-         * | `unsigned` | The object does not include a signature. |
-         * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-         * | `no_user` | No user was associated with the `committer` email address in the commit. |
-         * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-         * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-         * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-         * | `malformed_signature` | There was an error parsing the signature. |
-         * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-         * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-         */
-        getTag: {
-            (params?: RestEndpointMethodTypes["git"]["getTag"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["getTag"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a single tree using the SHA1 value or ref name for that tree.
-         *
-         * If `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time.
-         *
-         *
-         * **Note**: The limit for the `tree` array is 100,000 entries with a maximum size of 7 MB when using the `recursive` parameter.
-         */
-        getTree: {
-            (params?: RestEndpointMethodTypes["git"]["getTree"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["getTree"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/<branch name>` for branches and `tags/<tag name>` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array.
-         *
-         * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`.
-         *
-         * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)".
-         *
-         * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`.
-         */
-        listMatchingRefs: {
-            (params?: RestEndpointMethodTypes["git"]["listMatchingRefs"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["listMatchingRefs"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        updateRef: {
-            (params?: RestEndpointMethodTypes["git"]["updateRef"]["parameters"]): Promise<RestEndpointMethodTypes["git"]["updateRef"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    gitignore: {
-        /**
-         * List all templates available to pass as an option when [creating a repository](https://docs.github.com/rest/repos/repos#create-a-repository-for-the-authenticated-user).
-         */
-        getAllTemplates: {
-            (params?: RestEndpointMethodTypes["gitignore"]["getAllTemplates"]["parameters"]): Promise<RestEndpointMethodTypes["gitignore"]["getAllTemplates"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * The API also allows fetching the source of a single template.
-         * Use the raw [media type](https://docs.github.com/rest/overview/media-types/) to get the raw contents.
-         */
-        getTemplate: {
-            (params?: RestEndpointMethodTypes["gitignore"]["getTemplate"]["parameters"]): Promise<RestEndpointMethodTypes["gitignore"]["getTemplate"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    interactions: {
-        /**
-         * Shows which type of GitHub user can interact with your public repositories and when the restriction expires.
-         */
-        getRestrictionsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["interactions"]["getRestrictionsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response.
-         */
-        getRestrictionsForOrg: {
-            (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["interactions"]["getRestrictionsForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response.
-         */
-        getRestrictionsForRepo: {
-            (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["interactions"]["getRestrictionsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Shows which type of GitHub user can interact with your public repositories and when the restriction expires.
-         * @deprecated octokit.rest.interactions.getRestrictionsForYourPublicRepos() has been renamed to octokit.rest.interactions.getRestrictionsForAuthenticatedUser() (2021-02-02)
-         */
-        getRestrictionsForYourPublicRepos: {
-            (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForYourPublicRepos"]["parameters"]): Promise<RestEndpointMethodTypes["interactions"]["getRestrictionsForYourPublicRepos"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes any interaction restrictions from your public repositories.
-         */
-        removeRestrictionsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["interactions"]["removeRestrictionsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions.
-         */
-        removeRestrictionsForOrg: {
-            (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["interactions"]["removeRestrictionsForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository.
-         */
-        removeRestrictionsForRepo: {
-            (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["interactions"]["removeRestrictionsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes any interaction restrictions from your public repositories.
-         * @deprecated octokit.rest.interactions.removeRestrictionsForYourPublicRepos() has been renamed to octokit.rest.interactions.removeRestrictionsForAuthenticatedUser() (2021-02-02)
-         */
-        removeRestrictionsForYourPublicRepos: {
-            (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForYourPublicRepos"]["parameters"]): Promise<RestEndpointMethodTypes["interactions"]["removeRestrictionsForYourPublicRepos"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user.
-         */
-        setRestrictionsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["interactions"]["setRestrictionsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization.
-         */
-        setRestrictionsForOrg: {
-            (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["interactions"]["setRestrictionsForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository.
-         */
-        setRestrictionsForRepo: {
-            (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["interactions"]["setRestrictionsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user.
-         * @deprecated octokit.rest.interactions.setRestrictionsForYourPublicRepos() has been renamed to octokit.rest.interactions.setRestrictionsForAuthenticatedUser() (2021-02-02)
-         */
-        setRestrictionsForYourPublicRepos: {
-            (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForYourPublicRepos"]["parameters"]): Promise<RestEndpointMethodTypes["interactions"]["setRestrictionsForYourPublicRepos"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    issues: {
-        /**
-         * Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced.
-         */
-        addAssignees: {
-            (params?: RestEndpointMethodTypes["issues"]["addAssignees"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["addAssignees"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Adds labels to an issue. If you provide an empty array of labels, all labels are removed from the issue.
-         */
-        addLabels: {
-            (params?: RestEndpointMethodTypes["issues"]["addLabels"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["addLabels"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Checks if a user has permission to be assigned to an issue in this repository.
-         *
-         * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned.
-         *
-         * Otherwise a `404` status code is returned.
-         */
-        checkUserCanBeAssigned: {
-            (params?: RestEndpointMethodTypes["issues"]["checkUserCanBeAssigned"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["checkUserCanBeAssigned"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Checks if a user has permission to be assigned to a specific issue.
-         *
-         * If the `assignee` can be assigned to this issue, a `204` status code with no content is returned.
-         *
-         * Otherwise a `404` status code is returned.
-         */
-        checkUserCanBeAssignedToIssue: {
-            (params?: RestEndpointMethodTypes["issues"]["checkUserCanBeAssignedToIssue"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["checkUserCanBeAssignedToIssue"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://docs.github.com/articles/disabling-issues/), the API returns a `410 Gone` status.
-         *
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-         */
-        create: {
-            (params?: RestEndpointMethodTypes["issues"]["create"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["create"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You can use the REST API to create comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.
-         *
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications).
-         * Creating content too quickly using this endpoint may result in secondary rate limiting.
-         * See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)"
-         * and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)"
-         * for details.
-         */
-        createComment: {
-            (params?: RestEndpointMethodTypes["issues"]["createComment"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["createComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a label for the specified repository with the given name and color. The name and color parameters are required. The color must be a valid [hexadecimal color code](http://www.color-hex.com/).
-         */
-        createLabel: {
-            (params?: RestEndpointMethodTypes["issues"]["createLabel"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["createLabel"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a milestone.
-         */
-        createMilestone: {
-            (params?: RestEndpointMethodTypes["issues"]["createMilestone"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["createMilestone"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * 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.
-         */
-        deleteComment: {
-            (params?: RestEndpointMethodTypes["issues"]["deleteComment"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["deleteComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a label using the given label name.
-         */
-        deleteLabel: {
-            (params?: RestEndpointMethodTypes["issues"]["deleteLabel"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["deleteLabel"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a milestone using the given milestone number.
-         */
-        deleteMilestone: {
-            (params?: RestEndpointMethodTypes["issues"]["deleteMilestone"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["deleteMilestone"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * The API returns a [`301 Moved Permanently` status](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-redirects-redirects) if the issue was
-         * [transferred](https://docs.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If
-         * the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API
-         * returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read
-         * access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe
-         * to the [`issues`](https://docs.github.com/webhooks/event-payloads/#issues) webhook.
-         *
-         * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-         * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-         * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-         * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-         */
-        get: {
-            (params?: RestEndpointMethodTypes["issues"]["get"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["get"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You can use the REST API to get comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.
-         */
-        getComment: {
-            (params?: RestEndpointMethodTypes["issues"]["getComment"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["getComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a single event by the event id.
-         */
-        getEvent: {
-            (params?: RestEndpointMethodTypes["issues"]["getEvent"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["getEvent"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a label using the given name.
-         */
-        getLabel: {
-            (params?: RestEndpointMethodTypes["issues"]["getLabel"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["getLabel"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a milestone using the given milestone number.
-         */
-        getMilestone: {
-            (params?: RestEndpointMethodTypes["issues"]["getMilestone"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["getMilestone"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List issues assigned to the authenticated user across all visible repositories including owned repositories, member
-         * repositories, and organization repositories. You can use the `filter` query parameter to fetch issues that are not
-         * necessarily assigned to you.
-         *
-         *
-         * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-         * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-         * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-         * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-         */
-        list: {
-            (params?: RestEndpointMethodTypes["issues"]["list"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["list"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the [available assignees](https://docs.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository.
-         */
-        listAssignees: {
-            (params?: RestEndpointMethodTypes["issues"]["listAssignees"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listAssignees"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You can use the REST API to list comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.
-         *
-         * Issue comments are ordered by ascending ID.
-         */
-        listComments: {
-            (params?: RestEndpointMethodTypes["issues"]["listComments"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listComments"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You can use the REST API to list comments on issues and pull requests for a repository. Every pull request is an issue, but not every issue is a pull request.
-         *
-         * By default, issue comments are ordered by ascending ID.
-         */
-        listCommentsForRepo: {
-            (params?: RestEndpointMethodTypes["issues"]["listCommentsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listCommentsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all events for an issue.
-         */
-        listEvents: {
-            (params?: RestEndpointMethodTypes["issues"]["listEvents"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listEvents"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists events for a repository.
-         */
-        listEventsForRepo: {
-            (params?: RestEndpointMethodTypes["issues"]["listEventsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listEventsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List all timeline events for an issue.
-         */
-        listEventsForTimeline: {
-            (params?: RestEndpointMethodTypes["issues"]["listEventsForTimeline"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listEventsForTimeline"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List issues across owned and member repositories assigned to the authenticated user.
-         *
-         * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-         * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-         * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-         * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-         */
-        listForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["issues"]["listForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List issues in an organization assigned to the authenticated user.
-         *
-         * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-         * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-         * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-         * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-         */
-        listForOrg: {
-            (params?: RestEndpointMethodTypes["issues"]["listForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List issues in a repository. Only open issues will be listed.
-         *
-         * **Note**: GitHub's REST API considers every pull request an issue, but not every issue is a pull request. For this
-         * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by
-         * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull
-         * request id, use the "[List pull requests](https://docs.github.com/rest/pulls/pulls#list-pull-requests)" endpoint.
-         */
-        listForRepo: {
-            (params?: RestEndpointMethodTypes["issues"]["listForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists labels for issues in a milestone.
-         */
-        listLabelsForMilestone: {
-            (params?: RestEndpointMethodTypes["issues"]["listLabelsForMilestone"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listLabelsForMilestone"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all labels for a repository.
-         */
-        listLabelsForRepo: {
-            (params?: RestEndpointMethodTypes["issues"]["listLabelsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listLabelsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all labels for an issue.
-         */
-        listLabelsOnIssue: {
-            (params?: RestEndpointMethodTypes["issues"]["listLabelsOnIssue"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listLabelsOnIssue"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists milestones for a repository.
-         */
-        listMilestones: {
-            (params?: RestEndpointMethodTypes["issues"]["listMilestones"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["listMilestones"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with push access can lock an issue or pull request's conversation.
-         *
-         * 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 verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-         */
-        lock: {
-            (params?: RestEndpointMethodTypes["issues"]["lock"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["lock"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes all labels from an issue.
-         */
-        removeAllLabels: {
-            (params?: RestEndpointMethodTypes["issues"]["removeAllLabels"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["removeAllLabels"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes one or more assignees from an issue.
-         */
-        removeAssignees: {
-            (params?: RestEndpointMethodTypes["issues"]["removeAssignees"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["removeAssignees"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist.
-         */
-        removeLabel: {
-            (params?: RestEndpointMethodTypes["issues"]["removeLabel"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["removeLabel"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes any previous labels and sets the new labels for an issue.
-         */
-        setLabels: {
-            (params?: RestEndpointMethodTypes["issues"]["setLabels"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["setLabels"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with push access can unlock an issue's conversation.
-         */
-        unlock: {
-            (params?: RestEndpointMethodTypes["issues"]["unlock"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["unlock"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Issue owners and users with push access can edit an issue.
-         */
-        update: {
-            (params?: RestEndpointMethodTypes["issues"]["update"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["update"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You can use the REST API to update comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.
-         */
-        updateComment: {
-            (params?: RestEndpointMethodTypes["issues"]["updateComment"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["updateComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates a label using the given label name.
-         */
-        updateLabel: {
-            (params?: RestEndpointMethodTypes["issues"]["updateLabel"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["updateLabel"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        updateMilestone: {
-            (params?: RestEndpointMethodTypes["issues"]["updateMilestone"]["parameters"]): Promise<RestEndpointMethodTypes["issues"]["updateMilestone"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    licenses: {
-        /**
-         * Gets information about a specific license. For more information, see "[Licensing a repository ](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)."
-         */
-        get: {
-            (params?: RestEndpointMethodTypes["licenses"]["get"]["parameters"]): Promise<RestEndpointMethodTypes["licenses"]["get"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the most commonly used licenses on GitHub. For more information, see "[Licensing a repository ](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)."
-         */
-        getAllCommonlyUsed: {
-            (params?: RestEndpointMethodTypes["licenses"]["getAllCommonlyUsed"]["parameters"]): Promise<RestEndpointMethodTypes["licenses"]["getAllCommonlyUsed"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This method returns the contents of the repository's license file, if one is detected.
-         *
-         * Similar to [Get repository content](https://docs.github.com/rest/repos/contents#get-repository-content), this method also supports [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw license content or rendered license HTML.
-         */
-        getForRepo: {
-            (params?: RestEndpointMethodTypes["licenses"]["getForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["licenses"]["getForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    markdown: {
-        render: {
-            (params?: RestEndpointMethodTypes["markdown"]["render"]["parameters"]): Promise<RestEndpointMethodTypes["markdown"]["render"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less.
-         */
-        renderRaw: {
-            (params?: RestEndpointMethodTypes["markdown"]["renderRaw"]["parameters"]): Promise<RestEndpointMethodTypes["markdown"]["renderRaw"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    meta: {
-        /**
-         * Returns meta information about GitHub, including a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://docs.github.com/articles/about-github-s-ip-addresses/)."
-         *
-         * The API's response also includes a list of GitHub's domain names.
-         *
-         * The values shown in the documentation's response are example values. You must always query the API directly to get the latest values.
-         *
-         * **Note:** This endpoint returns both IPv4 and IPv6 addresses. However, not all features support IPv6. You should refer to the specific documentation for each feature to determine if IPv6 is supported.
-         */
-        get: {
-            (params?: RestEndpointMethodTypes["meta"]["get"]["parameters"]): Promise<RestEndpointMethodTypes["meta"]["get"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get all supported GitHub API versions.
-         */
-        getAllVersions: {
-            (params?: RestEndpointMethodTypes["meta"]["getAllVersions"]["parameters"]): Promise<RestEndpointMethodTypes["meta"]["getAllVersions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get the octocat as ASCII art
-         */
-        getOctocat: {
-            (params?: RestEndpointMethodTypes["meta"]["getOctocat"]["parameters"]): Promise<RestEndpointMethodTypes["meta"]["getOctocat"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get a random sentence from the Zen of GitHub
-         */
-        getZen: {
-            (params?: RestEndpointMethodTypes["meta"]["getZen"]["parameters"]): Promise<RestEndpointMethodTypes["meta"]["getZen"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get Hypermedia links to resources accessible in GitHub's REST API
-         */
-        root: {
-            (params?: RestEndpointMethodTypes["meta"]["root"]["parameters"]): Promise<RestEndpointMethodTypes["meta"]["root"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    migrations: {
-        /**
-         * Stop an import for a repository.
-         *
-         * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-         *
-         * @deprecated octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import
-         */
-        cancelImport: {
-            (params?: RestEndpointMethodTypes["migrations"]["cancelImport"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["cancelImport"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [List user migrations](https://docs.github.com/rest/migrations/users#list-user-migrations) and [Get a user migration status](https://docs.github.com/rest/migrations/users#get-a-user-migration-status) endpoints, will continue to be available even after an archive is deleted.
-         */
-        deleteArchiveForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["migrations"]["deleteArchiveForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["deleteArchiveForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a previous migration archive. Migration archives are automatically deleted after seven days.
-         */
-        deleteArchiveForOrg: {
-            (params?: RestEndpointMethodTypes["migrations"]["deleteArchiveForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["deleteArchiveForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Fetches the URL to a migration archive.
-         */
-        downloadArchiveForOrg: {
-            (params?: RestEndpointMethodTypes["migrations"]["downloadArchiveForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["downloadArchiveForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects:
-         *
-         * *   attachments
-         * *   bases
-         * *   commit\_comments
-         * *   issue\_comments
-         * *   issue\_events
-         * *   issues
-         * *   milestones
-         * *   organizations
-         * *   projects
-         * *   protected\_branches
-         * *   pull\_request\_reviews
-         * *   pull\_requests
-         * *   releases
-         * *   repositories
-         * *   review\_comments
-         * *   schema
-         * *   users
-         *
-         * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data.
-         */
-        getArchiveForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["migrations"]["getArchiveForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["getArchiveForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot <hubot@12341234-abab-fefe-8787-fedcba987654>`.
-         *
-         * This endpoint and the [Map a commit author](https://docs.github.com/rest/migrations/source-imports#map-a-commit-author) endpoint allow you to provide correct Git author information.
-         *
-         * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-         * @deprecated octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors
-         */
-        getCommitAuthors: {
-            (params?: RestEndpointMethodTypes["migrations"]["getCommitAuthors"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["getCommitAuthors"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * View the progress of an import.
-         *
-         * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-         *
-         * **Import status**
-         *
-         * This section includes details about the possible values of the `status` field of the Import Progress response.
-         *
-         * An import that does not have errors will progress through these steps:
-         *
-         * *   `detecting` - the "detection" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL.
-         * *   `importing` - the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import).
-         * *   `mapping` - the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information.
-         * *   `pushing` - the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is "Writing objects".
-         * *   `complete` - the import is complete, and the repository is ready on GitHub.
-         *
-         * If there are problems, you will see one of these in the `status` field:
-         *
-         * *   `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section.
-         * *   `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api) for more information.
-         * *   `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section.
-         * *   `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://docs.github.com/rest/migrations/source-imports#cancel-an-import) and [retry](https://docs.github.com/rest/migrations/source-imports#start-an-import) with the correct URL.
-         * *   `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update an import](https://docs.github.com/rest/migrations/source-imports#update-an-import) section.
-         *
-         * **The project_choices field**
-         *
-         * When multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type.
-         *
-         * **Git LFS related fields**
-         *
-         * This section includes details about Git LFS related fields that may be present in the Import Progress response.
-         *
-         * *   `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken.
-         * *   `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step.
-         * *   `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository.
-         * *   `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request.
-         * @deprecated octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status
-         */
-        getImportStatus: {
-            (params?: RestEndpointMethodTypes["migrations"]["getImportStatus"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["getImportStatus"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List files larger than 100MB found during the import
-         *
-         * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-         *
-         * @deprecated octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files
-         */
-        getLargeFiles: {
-            (params?: RestEndpointMethodTypes["migrations"]["getLargeFiles"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["getLargeFiles"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values:
-         *
-         * *   `pending` - the migration hasn't started yet.
-         * *   `exporting` - the migration is in progress.
-         * *   `exported` - the migration finished successfully.
-         * *   `failed` - the migration failed.
-         *
-         * Once the migration has been `exported` you can [download the migration archive](https://docs.github.com/rest/migrations/users#download-a-user-migration-archive).
-         */
-        getStatusForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["migrations"]["getStatusForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["getStatusForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Fetches the status of a migration.
-         *
-         * The `state` of a migration can be one of the following values:
-         *
-         * *   `pending`, which means the migration hasn't started yet.
-         * *   `exporting`, which means the migration is in progress.
-         * *   `exported`, which means the migration finished successfully.
-         * *   `failed`, which means the migration failed.
-         */
-        getStatusForOrg: {
-            (params?: RestEndpointMethodTypes["migrations"]["getStatusForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["getStatusForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all migrations a user has started.
-         */
-        listForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["migrations"]["listForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["listForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the most recent migrations, including both exports (which can be started through the REST API) and imports (which cannot be started using the REST API).
-         *
-         * A list of `repositories` is only returned for export migrations.
-         */
-        listForOrg: {
-            (params?: RestEndpointMethodTypes["migrations"]["listForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["listForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all the repositories for this user migration.
-         */
-        listReposForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["migrations"]["listReposForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["listReposForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List all the repositories for this organization migration.
-         */
-        listReposForOrg: {
-            (params?: RestEndpointMethodTypes["migrations"]["listReposForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["listReposForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all the repositories for this user migration.
-         * @deprecated octokit.rest.migrations.listReposForUser() has been renamed to octokit.rest.migrations.listReposForAuthenticatedUser() (2021-10-05)
-         */
-        listReposForUser: {
-            (params?: RestEndpointMethodTypes["migrations"]["listReposForUser"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["listReposForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Update an author's identity for the import. Your application can continue updating authors any time before you push
-         * new commits to the repository.
-         *
-         * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-         *
-         * @deprecated octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author
-         */
-        mapCommitAuthor: {
-            (params?: RestEndpointMethodTypes["migrations"]["mapCommitAuthor"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["mapCommitAuthor"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability
-         * is powered by [Git LFS](https://git-lfs.com).
-         *
-         * You can learn more about our LFS feature and working with large files [on our help
-         * site](https://docs.github.com/repositories/working-with-files/managing-large-files).
-         *
-         * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-         *
-         * @deprecated octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference
-         */
-        setLfsPreference: {
-            (params?: RestEndpointMethodTypes["migrations"]["setLfsPreference"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["setLfsPreference"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Initiates the generation of a user migration archive.
-         */
-        startForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["migrations"]["startForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["startForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Initiates the generation of a migration archive.
-         */
-        startForOrg: {
-            (params?: RestEndpointMethodTypes["migrations"]["startForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["startForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Start a source import to a GitHub repository using GitHub Importer.
-         * Importing into a GitHub repository with GitHub Actions enabled is not supported and will
-         * return a status `422 Unprocessable Entity` response.
-         *
-         * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-         *
-         * @deprecated octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import
-         */
-        startImport: {
-            (params?: RestEndpointMethodTypes["migrations"]["startImport"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["startImport"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Unlocks a repository. You can lock repositories when you [start a user migration](https://docs.github.com/rest/migrations/users#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://docs.github.com/rest/repos/repos#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked.
-         */
-        unlockRepoForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["migrations"]["unlockRepoForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["unlockRepoForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://docs.github.com/rest/repos/repos#delete-a-repository) when the migration is complete and you no longer need the source data.
-         */
-        unlockRepoForOrg: {
-            (params?: RestEndpointMethodTypes["migrations"]["unlockRepoForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["unlockRepoForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API
-         * request. If no parameters are provided, the import will be restarted.
-         *
-         * Some servers (e.g. TFS servers) can have several projects at a single URL. In those cases the import progress will
-         * have the status `detection_found_multiple` and the Import Progress response will include a `project_choices` array.
-         * You can select the project to import by providing one of the objects in the `project_choices` array in the update request.
-         *
-         * **Warning:** Due to very low levels of usage and available alternatives, this endpoint is deprecated and will no longer be available from 00:00 UTC on April 12, 2024. For more details and alternatives, see the [changelog](https://gh.io/source-imports-api-deprecation).
-         * @deprecated octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import
-         */
-        updateImport: {
-            (params?: RestEndpointMethodTypes["migrations"]["updateImport"]["parameters"]): Promise<RestEndpointMethodTypes["migrations"]["updateImport"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    orgs: {
-        /**
-         * Adds a team as a security manager for an organization. For more information, see "[Managing security for an organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization) for an organization."
-         *
-         * To use this endpoint, you must be an administrator for the organization, and you must use an access token with the `write:org` scope.
-         *
-         * GitHub Apps must have the `administration` organization read-write permission to use this endpoint.
-         */
-        addSecurityManagerTeam: {
-            (params?: RestEndpointMethodTypes["orgs"]["addSecurityManagerTeam"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["addSecurityManagerTeam"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Blocks the given user on behalf of the specified organization and returns a 204. If the organization cannot block the given user a 422 is returned.
-         */
-        blockUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["blockUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["blockUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Cancel an organization invitation. In order to cancel an organization invitation, the authenticated user must be an organization owner.
-         *
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications).
-         */
-        cancelInvitation: {
-            (params?: RestEndpointMethodTypes["orgs"]["cancelInvitation"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["cancelInvitation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a 204 if the given user is blocked by the given organization. Returns a 404 if the organization is not blocking the user, or if the user account has been identified as spam by GitHub.
-         */
-        checkBlockedUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["checkBlockedUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["checkBlockedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Check if a user is, publicly or privately, a member of the organization.
-         */
-        checkMembershipForUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["checkMembershipForUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["checkMembershipForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Check if the provided user is a public member of the organization.
-         */
-        checkPublicMembershipForUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["checkPublicMembershipForUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["checkPublicMembershipForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://docs.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)". Converting an organization member to an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)."
-         */
-        convertMemberToOutsideCollaborator: {
-            (params?: RestEndpointMethodTypes["orgs"]["convertMemberToOutsideCollaborator"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["convertMemberToOutsideCollaborator"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner.
-         *
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-         */
-        createInvitation: {
-            (params?: RestEndpointMethodTypes["orgs"]["createInvitation"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["createInvitation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates new or updates existing custom properties defined for an organization in a batch.
-         * Only organization owners (or users with the proper permissions granted by them) can update these properties
-         */
-        createOrUpdateCustomProperties: {
-            (params?: RestEndpointMethodTypes["orgs"]["createOrUpdateCustomProperties"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["createOrUpdateCustomProperties"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create new or update existing custom property values for repositories in a batch that belong to an organization.
-         * Each target repository will have its custom property values updated to match the values provided in the request.
-         *
-         * A maximum of 30 repositories can be updated in a single request.
-         *
-         * Using a value of `null` for a custom property will remove or 'unset' the property value from the repository.
-         *
-         * Only organization owners (or users with the proper permissions granted by them) can update these properties
-         */
-        createOrUpdateCustomPropertiesValuesForRepos: {
-            (params?: RestEndpointMethodTypes["orgs"]["createOrUpdateCustomPropertiesValuesForRepos"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["createOrUpdateCustomPropertiesValuesForRepos"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a new or updates an existing custom property that is defined for an organization.
-         * You must be an organization owner to use this endpoint.
-         */
-        createOrUpdateCustomProperty: {
-            (params?: RestEndpointMethodTypes["orgs"]["createOrUpdateCustomProperty"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["createOrUpdateCustomProperty"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Here's how you can create a hook that posts payloads in JSON format:
-         */
-        createWebhook: {
-            (params?: RestEndpointMethodTypes["orgs"]["createWebhook"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["createWebhook"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes an organization and all its repositories.
-         *
-         * The organization login will be unavailable for 90 days after deletion.
-         *
-         * Please review the Terms of Service regarding account deletion before using this endpoint:
-         *
-         * https://docs.github.com/site-policy/github-terms/github-terms-of-service
-         */
-        delete: {
-            (params?: RestEndpointMethodTypes["orgs"]["delete"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["delete"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        deleteWebhook: {
-            (params?: RestEndpointMethodTypes["orgs"]["deleteWebhook"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["deleteWebhook"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Enables or disables the specified security feature for all eligible repositories in an organization.
-         *
-         * To use this endpoint, you must be an organization owner or be member of a team with the security manager role.
-         * A token with the 'write:org' scope is also required.
-         *
-         * GitHub Apps must have the `organization_administration:write` permission to use this endpoint.
-         *
-         * For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-         */
-        enableOrDisableSecurityProductOnAllOrgRepos: {
-            (params?: RestEndpointMethodTypes["orgs"]["enableOrDisableSecurityProductOnAllOrgRepos"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["enableOrDisableSecurityProductOnAllOrgRepos"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * To see many of the organization response values, you need to be an authenticated organization owner with the `admin:org` scope. When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, and outside collaborators to enable [two-factor authentication](https://docs.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/).
-         *
-         * GitHub Apps with the `Organization plan` permission can use this endpoint to retrieve information about an organization's GitHub plan. See "[Authenticating with GitHub Apps](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/)" for details. For an example response, see 'Response with GitHub plan information' below."
-         */
-        get: {
-            (params?: RestEndpointMethodTypes["orgs"]["get"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["get"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets all custom properties defined for an organization.
-         * You must be an organization owner to use this endpoint.
-         */
-        getAllCustomProperties: {
-            (params?: RestEndpointMethodTypes["orgs"]["getAllCustomProperties"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["getAllCustomProperties"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a custom property that is defined for an organization.
-         * You must be an organization owner to use this endpoint.
-         */
-        getCustomProperty: {
-            (params?: RestEndpointMethodTypes["orgs"]["getCustomProperty"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["getCustomProperty"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * If the authenticated user is an active or pending member of the organization, this endpoint will return the user's membership. If the authenticated user is not affiliated with the organization, a `404` is returned. This endpoint will return a `403` if the request is made by a GitHub App that is blocked by the organization.
-         */
-        getMembershipForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["getMembershipForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["getMembershipForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * In order to get a user's membership with an organization, the authenticated user must be an organization member. The `state` parameter in the response can be used to identify the user's membership status.
-         */
-        getMembershipForUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["getMembershipForUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["getMembershipForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a webhook configured in an organization. To get only the webhook `config` properties, see "[Get a webhook configuration for an organization](/rest/orgs/webhooks#get-a-webhook-configuration-for-an-organization)."
-         */
-        getWebhook: {
-            (params?: RestEndpointMethodTypes["orgs"]["getWebhook"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["getWebhook"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns the webhook configuration for an organization. To get more information about the webhook, including the `active` state and `events`, use "[Get an organization webhook ](/rest/orgs/webhooks#get-an-organization-webhook)."
-         *
-         * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:read` permission.
-         */
-        getWebhookConfigForOrg: {
-            (params?: RestEndpointMethodTypes["orgs"]["getWebhookConfigForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["getWebhookConfigForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a delivery for a webhook configured in an organization.
-         */
-        getWebhookDelivery: {
-            (params?: RestEndpointMethodTypes["orgs"]["getWebhookDelivery"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["getWebhookDelivery"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all organizations, in the order that they were created on GitHub.
-         *
-         * **Note:** Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of organizations.
-         */
-        list: {
-            (params?: RestEndpointMethodTypes["orgs"]["list"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["list"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all GitHub Apps in an organization. The installation count includes all GitHub Apps installed on repositories in the organization. You must be an organization owner with `admin:read` scope to use this endpoint.
-         */
-        listAppInstallations: {
-            (params?: RestEndpointMethodTypes["orgs"]["listAppInstallations"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listAppInstallations"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the users blocked by an organization.
-         */
-        listBlockedUsers: {
-            (params?: RestEndpointMethodTypes["orgs"]["listBlockedUsers"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listBlockedUsers"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists organization repositories with all of their custom property values.
-         * Organization members can read these properties.
-         */
-        listCustomPropertiesValuesForRepos: {
-            (params?: RestEndpointMethodTypes["orgs"]["listCustomPropertiesValuesForRepos"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listCustomPropertiesValuesForRepos"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * The return hash contains `failed_at` and `failed_reason` fields which represent the time at which the invitation failed and the reason for the failure.
-         */
-        listFailedInvitations: {
-            (params?: RestEndpointMethodTypes["orgs"]["listFailedInvitations"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listFailedInvitations"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List organizations for the authenticated user.
-         *
-         * **OAuth scope requirements**
-         *
-         * This only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope. OAuth requests with insufficient scope receive a `403 Forbidden` response.
-         */
-        listForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["listForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List [public organization memberships](https://docs.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user.
-         *
-         * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List organizations for the authenticated user](https://docs.github.com/rest/orgs/orgs#list-organizations-for-the-authenticated-user) API instead.
-         */
-        listForUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["listForUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner.
-         */
-        listInvitationTeams: {
-            (params?: RestEndpointMethodTypes["orgs"]["listInvitationTeams"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listInvitationTeams"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned.
-         */
-        listMembers: {
-            (params?: RestEndpointMethodTypes["orgs"]["listMembers"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listMembers"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all of the authenticated user's organization memberships.
-         */
-        listMembershipsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["listMembershipsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listMembershipsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List all users who are outside collaborators of an organization.
-         */
-        listOutsideCollaborators: {
-            (params?: RestEndpointMethodTypes["orgs"]["listOutsideCollaborators"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listOutsideCollaborators"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the repositories a fine-grained personal access token has access to. Only GitHub Apps can call this API,
-         * using the `organization_personal_access_tokens: read` permission.
-         *
-         * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-         */
-        listPatGrantRepositories: {
-            (params?: RestEndpointMethodTypes["orgs"]["listPatGrantRepositories"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listPatGrantRepositories"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the repositories a fine-grained personal access token request is requesting access to. Only GitHub Apps can call this API,
-         * using the `organization_personal_access_token_requests: read` permission.
-         *
-         * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-         */
-        listPatGrantRequestRepositories: {
-            (params?: RestEndpointMethodTypes["orgs"]["listPatGrantRequestRepositories"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listPatGrantRequestRepositories"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists requests from organization members to access organization resources with a fine-grained personal access token. Only GitHub Apps can call this API,
-         * using the `organization_personal_access_token_requests: read` permission.
-         *
-         * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-         */
-        listPatGrantRequests: {
-            (params?: RestEndpointMethodTypes["orgs"]["listPatGrantRequests"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listPatGrantRequests"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists approved fine-grained personal access tokens owned by organization members that can access organization resources. Only GitHub Apps can call this API,
-         * using the `organization_personal_access_tokens: read` permission.
-         *
-         * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-         */
-        listPatGrants: {
-            (params?: RestEndpointMethodTypes["orgs"]["listPatGrants"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listPatGrants"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, or `hiring_manager`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.
-         */
-        listPendingInvitations: {
-            (params?: RestEndpointMethodTypes["orgs"]["listPendingInvitations"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listPendingInvitations"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Members of an organization can choose to have their membership publicized or not.
-         */
-        listPublicMembers: {
-            (params?: RestEndpointMethodTypes["orgs"]["listPublicMembers"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listPublicMembers"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists teams that are security managers for an organization. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-         *
-         * To use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the `read:org` scope.
-         *
-         * GitHub Apps must have the `administration` organization read permission to use this endpoint.
-         */
-        listSecurityManagerTeams: {
-            (params?: RestEndpointMethodTypes["orgs"]["listSecurityManagerTeams"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listSecurityManagerTeams"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a list of webhook deliveries for a webhook configured in an organization.
-         */
-        listWebhookDeliveries: {
-            (params?: RestEndpointMethodTypes["orgs"]["listWebhookDeliveries"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listWebhookDeliveries"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listWebhooks: {
-            (params?: RestEndpointMethodTypes["orgs"]["listWebhooks"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["listWebhooks"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook.
-         */
-        pingWebhook: {
-            (params?: RestEndpointMethodTypes["orgs"]["pingWebhook"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["pingWebhook"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Redeliver a delivery for a webhook configured in an organization.
-         */
-        redeliverWebhookDelivery: {
-            (params?: RestEndpointMethodTypes["orgs"]["redeliverWebhookDelivery"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["redeliverWebhookDelivery"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a custom property that is defined for an organization.
-         * You must be an organization owner to use this endpoint.
-         */
-        removeCustomProperty: {
-            (params?: RestEndpointMethodTypes["orgs"]["removeCustomProperty"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["removeCustomProperty"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories.
-         */
-        removeMember: {
-            (params?: RestEndpointMethodTypes["orgs"]["removeMember"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["removeMember"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * In order to remove a user's membership with an organization, the authenticated user must be an organization owner.
-         *
-         * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases.
-         */
-        removeMembershipForUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["removeMembershipForUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["removeMembershipForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removing a user from this list will remove them from all the organization's repositories.
-         */
-        removeOutsideCollaborator: {
-            (params?: RestEndpointMethodTypes["orgs"]["removeOutsideCollaborator"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["removeOutsideCollaborator"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes the public membership for the authenticated user from the specified organization, unless public visibility is enforced by default.
-         */
-        removePublicMembershipForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["removePublicMembershipForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["removePublicMembershipForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes the security manager role from a team for an organization. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization) team from an organization."
-         *
-         * To use this endpoint, you must be an administrator for the organization, and you must use an access token with the `admin:org` scope.
-         *
-         * GitHub Apps must have the `administration` organization read-write permission to use this endpoint.
-         */
-        removeSecurityManagerTeam: {
-            (params?: RestEndpointMethodTypes["orgs"]["removeSecurityManagerTeam"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["removeSecurityManagerTeam"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Approves or denies a pending request to access organization resources via a fine-grained personal access token. Only GitHub Apps can call this API,
-         * using the `organization_personal_access_token_requests: write` permission.
-         *
-         * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-         */
-        reviewPatGrantRequest: {
-            (params?: RestEndpointMethodTypes["orgs"]["reviewPatGrantRequest"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["reviewPatGrantRequest"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Approves or denies multiple pending requests to access organization resources via a fine-grained personal access token. Only GitHub Apps can call this API,
-         * using the `organization_personal_access_token_requests: write` permission.
-         *
-         * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-         */
-        reviewPatGrantRequestsInBulk: {
-            (params?: RestEndpointMethodTypes["orgs"]["reviewPatGrantRequestsInBulk"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["reviewPatGrantRequestsInBulk"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Only authenticated organization owners can add a member to the organization or update the member's role.
-         *
-         * *   If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/orgs/members#get-organization-membership-for-a-user) will be `pending` until they accept the invitation.
-         *
-         * *   Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent.
-         *
-         * **Rate limits**
-         *
-         * To prevent abuse, the authenticated user is limited to 50 organization invitations per 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period.
-         */
-        setMembershipForUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["setMembershipForUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["setMembershipForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * The user can publicize their own membership. (A user cannot publicize the membership for another user.)
-         *
-         * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-         */
-        setPublicMembershipForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["setPublicMembershipForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["setPublicMembershipForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Unblocks the given user on behalf of the specified organization.
-         */
-        unblockUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["unblockUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["unblockUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Parameter Deprecation Notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. The new input parameters are `members_can_create_public_repositories`, `members_can_create_private_repositories` for all organizations and `members_can_create_internal_repositories` for organizations associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes).
-         *
-         * Enables an authenticated organization owner with the `admin:org` scope or the `repo` scope to update the organization's profile and member privileges.
-         */
-        update: {
-            (params?: RestEndpointMethodTypes["orgs"]["update"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["update"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Converts the authenticated user to an active member of the organization, if that user has a pending invitation from the organization.
-         */
-        updateMembershipForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["orgs"]["updateMembershipForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["updateMembershipForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates the access an organization member has to organization resources via a fine-grained personal access token. Limited to revoking the token's existing access. Limited to revoking a token's existing access. Only GitHub Apps can call this API,
-         * using the `organization_personal_access_tokens: write` permission.
-         *
-         * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-         */
-        updatePatAccess: {
-            (params?: RestEndpointMethodTypes["orgs"]["updatePatAccess"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["updatePatAccess"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates the access organization members have to organization resources via fine-grained personal access tokens. Limited to revoking a token's existing access. Only GitHub Apps can call this API,
-         * using the `organization_personal_access_tokens: write` permission.
-         *
-         * **Note**: Fine-grained PATs are in public beta. Related APIs, events, and functionality are subject to change.
-         */
-        updatePatAccesses: {
-            (params?: RestEndpointMethodTypes["orgs"]["updatePatAccesses"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["updatePatAccesses"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates a webhook configured in an organization. When you update a webhook, the `secret` will be overwritten. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for an organization](/rest/orgs/webhooks#update-a-webhook-configuration-for-an-organization)."
-         */
-        updateWebhook: {
-            (params?: RestEndpointMethodTypes["orgs"]["updateWebhook"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["updateWebhook"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * 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 ](/rest/orgs/webhooks#update-an-organization-webhook)."
-         *
-         * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:write` permission.
-         */
-        updateWebhookConfigForOrg: {
-            (params?: RestEndpointMethodTypes["orgs"]["updateWebhookConfigForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["orgs"]["updateWebhookConfigForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    packages: {
-        /**
-         * Deletes a package owned by the authenticated user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` and `delete:packages` scopes.
-         * If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        deletePackageForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["packages"]["deletePackageForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["deletePackageForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes an entire package in an organization. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance.
-         *
-         * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `delete:packages` scopes. In addition:
-         * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package you want to delete. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-         */
-        deletePackageForOrg: {
-            (params?: RestEndpointMethodTypes["packages"]["deletePackageForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["deletePackageForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes an entire package for a user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` and `delete:packages` scopes. In addition:
-         * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package you want to delete. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-         */
-        deletePackageForUser: {
-            (params?: RestEndpointMethodTypes["packages"]["deletePackageForUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["deletePackageForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a specific package version for a package owned by the authenticated user.  If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance.
-         *
-         * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `delete:packages` scopes.
-         * If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        deletePackageVersionForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["packages"]["deletePackageVersionForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["deletePackageVersionForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a specific package version in an organization. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance.
-         *
-         * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `delete:packages` scopes. In addition:
-         * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package whose version you want to delete. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-         */
-        deletePackageVersionForOrg: {
-            (params?: RestEndpointMethodTypes["packages"]["deletePackageVersionForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["deletePackageVersionForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a specific package version for a user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` and `delete:packages` scopes. In addition:
-         * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package whose version you want to delete. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-         */
-        deletePackageVersionForUser: {
-            (params?: RestEndpointMethodTypes["packages"]["deletePackageVersionForUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["deletePackageVersionForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists package versions for a package owned by an organization.
-         *
-         * If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         * @deprecated octokit.rest.packages.getAllPackageVersionsForAPackageOwnedByAnOrg() has been renamed to octokit.rest.packages.getAllPackageVersionsForPackageOwnedByOrg() (2021-03-24)
-         */
-        getAllPackageVersionsForAPackageOwnedByAnOrg: {
-            (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForAPackageOwnedByAnOrg"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["getAllPackageVersionsForAPackageOwnedByAnOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists package versions for a package owned by the authenticated user.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         * @deprecated octokit.rest.packages.getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser() has been renamed to octokit.rest.packages.getAllPackageVersionsForPackageOwnedByAuthenticatedUser() (2021-03-24)
-         */
-        getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists package versions for a package owned by the authenticated user.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        getAllPackageVersionsForPackageOwnedByAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists package versions for a package owned by an organization.
-         *
-         * If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        getAllPackageVersionsForPackageOwnedByOrg: {
-            (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForPackageOwnedByOrg"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["getAllPackageVersionsForPackageOwnedByOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists package versions for a public package owned by a specified user.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        getAllPackageVersionsForPackageOwnedByUser: {
-            (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForPackageOwnedByUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["getAllPackageVersionsForPackageOwnedByUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific package for a package owned by the authenticated user.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        getPackageForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["packages"]["getPackageForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["getPackageForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific package in an organization.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        getPackageForOrganization: {
-            (params?: RestEndpointMethodTypes["packages"]["getPackageForOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["getPackageForOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific package metadata for a public package owned by a user.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        getPackageForUser: {
-            (params?: RestEndpointMethodTypes["packages"]["getPackageForUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["getPackageForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific package version for a package owned by the authenticated user.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        getPackageVersionForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["packages"]["getPackageVersionForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["getPackageVersionForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific package version in an organization.
-         *
-         * You must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        getPackageVersionForOrganization: {
-            (params?: RestEndpointMethodTypes["packages"]["getPackageVersionForOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["getPackageVersionForOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a specific package version for a public package owned by a specified user.
-         *
-         * At this time, to use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        getPackageVersionForUser: {
-            (params?: RestEndpointMethodTypes["packages"]["getPackageVersionForUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["getPackageVersionForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all packages that are owned by the authenticated user within the user's namespace, and that encountered a conflict during a Docker migration.
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope.
-         */
-        listDockerMigrationConflictingPackagesForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["packages"]["listDockerMigrationConflictingPackagesForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["listDockerMigrationConflictingPackagesForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all packages that are in a specific organization, are readable by the requesting user, and that encountered a conflict during a Docker migration.
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope.
-         */
-        listDockerMigrationConflictingPackagesForOrganization: {
-            (params?: RestEndpointMethodTypes["packages"]["listDockerMigrationConflictingPackagesForOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["listDockerMigrationConflictingPackagesForOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all packages that are in a specific user's namespace, that the requesting user has access to, and that encountered a conflict during Docker migration.
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope.
-         */
-        listDockerMigrationConflictingPackagesForUser: {
-            (params?: RestEndpointMethodTypes["packages"]["listDockerMigrationConflictingPackagesForUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["listDockerMigrationConflictingPackagesForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists packages owned by the authenticated user within the user's namespace.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        listPackagesForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["packages"]["listPackagesForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["listPackagesForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists packages in an organization readable by the user.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        listPackagesForOrganization: {
-            (params?: RestEndpointMethodTypes["packages"]["listPackagesForOrganization"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["listPackagesForOrganization"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all packages in a user's namespace for which the requesting user has access.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` scope. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        listPackagesForUser: {
-            (params?: RestEndpointMethodTypes["packages"]["listPackagesForUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["listPackagesForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Restores a package owned by the authenticated user.
-         *
-         * You can restore a deleted package under the following conditions:
-         *   - The package was deleted within the last 30 days.
-         *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` and `write:packages` scopes. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        restorePackageForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["packages"]["restorePackageForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["restorePackageForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Restores an entire package in an organization.
-         *
-         * You can restore a deleted package under the following conditions:
-         *   - The package was deleted within the last 30 days.
-         *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-         *
-         * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `write:packages` scopes. In addition:
-         * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package you want to restore. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-         */
-        restorePackageForOrg: {
-            (params?: RestEndpointMethodTypes["packages"]["restorePackageForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["restorePackageForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Restores an entire package for a user.
-         *
-         * You can restore a deleted package under the following conditions:
-         *   - The package was deleted within the last 30 days.
-         *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` and `write:packages` scopes. In addition:
-         * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package you want to restore. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-         */
-        restorePackageForUser: {
-            (params?: RestEndpointMethodTypes["packages"]["restorePackageForUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["restorePackageForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Restores a package version owned by the authenticated user.
-         *
-         * You can restore a deleted package version under the following conditions:
-         *   - The package was deleted within the last 30 days.
-         *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` and `write:packages` scopes. If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of GitHub Packages registries that only support repository-scoped permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         */
-        restorePackageVersionForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["packages"]["restorePackageVersionForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["restorePackageVersionForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Restores a specific package version in an organization.
-         *
-         * You can restore a deleted package under the following conditions:
-         *   - The package was deleted within the last 30 days.
-         *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-         *
-         * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `read:packages` and `write:packages` scopes. In addition:
-         * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package whose version you want to restore. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-         */
-        restorePackageVersionForOrg: {
-            (params?: RestEndpointMethodTypes["packages"]["restorePackageVersionForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["restorePackageVersionForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Restores a specific package version for a user.
-         *
-         * You can restore a deleted package under the following conditions:
-         *   - The package was deleted within the last 30 days.
-         *   - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.
-         *
-         * To use this endpoint, you must authenticate using an access token with the `read:packages` and `write:packages` scopes. In addition:
-         * - If the `package_type` belongs to a GitHub Packages registry that only supports repository-scoped permissions, your token must also include the `repo` scope. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages)."
-         * - If the `package_type` belongs to a GitHub Packages registry that supports granular permissions, you must have admin permissions to the package whose version you want to restore. For the list of these registries, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
-         */
-        restorePackageVersionForUser: {
-            (params?: RestEndpointMethodTypes["packages"]["restorePackageVersionForUser"]["parameters"]): Promise<RestEndpointMethodTypes["packages"]["restorePackageVersionForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    projects: {
-        /**
-         * Adds a collaborator to an organization project and sets their permission level. You must be an organization owner or a project `admin` to add a collaborator.
-         */
-        addCollaborator: {
-            (params?: RestEndpointMethodTypes["projects"]["addCollaborator"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["addCollaborator"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        createCard: {
-            (params?: RestEndpointMethodTypes["projects"]["createCard"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["createCard"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a new project column.
-         */
-        createColumn: {
-            (params?: RestEndpointMethodTypes["projects"]["createColumn"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["createColumn"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a user project board. Returns a `410 Gone` status if the user does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-         */
-        createForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["projects"]["createForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["createForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates an organization project board. Returns a `410 Gone` status if projects are disabled in the organization or if the organization does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-         */
-        createForOrg: {
-            (params?: RestEndpointMethodTypes["projects"]["createForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["createForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a repository project board. Returns a `410 Gone` status if projects are disabled in the repository or if the repository does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-         */
-        createForRepo: {
-            (params?: RestEndpointMethodTypes["projects"]["createForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["createForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a project board. Returns a `404 Not Found` status if projects are disabled.
-         */
-        delete: {
-            (params?: RestEndpointMethodTypes["projects"]["delete"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["delete"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a project card
-         */
-        deleteCard: {
-            (params?: RestEndpointMethodTypes["projects"]["deleteCard"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["deleteCard"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a project column.
-         */
-        deleteColumn: {
-            (params?: RestEndpointMethodTypes["projects"]["deleteColumn"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["deleteColumn"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a project by its `id`. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-         */
-        get: {
-            (params?: RestEndpointMethodTypes["projects"]["get"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["get"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets information about a project card.
-         */
-        getCard: {
-            (params?: RestEndpointMethodTypes["projects"]["getCard"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["getCard"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets information about a project column.
-         */
-        getColumn: {
-            (params?: RestEndpointMethodTypes["projects"]["getColumn"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["getColumn"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns the collaborator's permission level for an organization project. Possible values for the `permission` key: `admin`, `write`, `read`, `none`. You must be an organization owner or a project `admin` to review a user's permission level.
-         */
-        getPermissionForUser: {
-            (params?: RestEndpointMethodTypes["projects"]["getPermissionForUser"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["getPermissionForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the project cards in a project.
-         */
-        listCards: {
-            (params?: RestEndpointMethodTypes["projects"]["listCards"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["listCards"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the collaborators for an organization project. For a project, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. You must be an organization owner or a project `admin` to list collaborators.
-         */
-        listCollaborators: {
-            (params?: RestEndpointMethodTypes["projects"]["listCollaborators"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["listCollaborators"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the project columns in a project.
-         */
-        listColumns: {
-            (params?: RestEndpointMethodTypes["projects"]["listColumns"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["listColumns"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the projects in an organization. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-         */
-        listForOrg: {
-            (params?: RestEndpointMethodTypes["projects"]["listForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["listForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the projects in a repository. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-         */
-        listForRepo: {
-            (params?: RestEndpointMethodTypes["projects"]["listForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["listForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists projects for a user.
-         */
-        listForUser: {
-            (params?: RestEndpointMethodTypes["projects"]["listForUser"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["listForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        moveCard: {
-            (params?: RestEndpointMethodTypes["projects"]["moveCard"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["moveCard"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        moveColumn: {
-            (params?: RestEndpointMethodTypes["projects"]["moveColumn"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["moveColumn"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a collaborator from an organization project. You must be an organization owner or a project `admin` to remove a collaborator.
-         */
-        removeCollaborator: {
-            (params?: RestEndpointMethodTypes["projects"]["removeCollaborator"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["removeCollaborator"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates a project board's information. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
-         */
-        update: {
-            (params?: RestEndpointMethodTypes["projects"]["update"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["update"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        updateCard: {
-            (params?: RestEndpointMethodTypes["projects"]["updateCard"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["updateCard"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        updateColumn: {
-            (params?: RestEndpointMethodTypes["projects"]["updateColumn"]["parameters"]): Promise<RestEndpointMethodTypes["projects"]["updateColumn"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    pulls: {
-        /**
-         * Checks if a pull request has been merged into the base branch. The HTTP status of the response indicates whether or not the pull request has been merged; the response body is empty.
-         */
-        checkIfMerged: {
-            (params?: RestEndpointMethodTypes["pulls"]["checkIfMerged"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["checkIfMerged"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request.
-         *
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details.
-         */
-        create: {
-            (params?: RestEndpointMethodTypes["pulls"]["create"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["create"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported.
-         *
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-         */
-        createReplyForReviewComment: {
-            (params?: RestEndpointMethodTypes["pulls"]["createReplyForReviewComment"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["createReplyForReviewComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-         *
-         * Pull request reviews created in the `PENDING` state are not submitted and therefore do not include the `submitted_at` property in the response. To create a pending review for a pull request, leave the `event` parameter blank. For more information about submitting a `PENDING` review, see "[Submit a review for a pull request](https://docs.github.com/rest/pulls/reviews#submit-a-review-for-a-pull-request)."
-         *
-         * **Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API offers the `application/vnd.github.v3.diff` [media type](https://docs.github.com/rest/overview/media-types#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](https://docs.github.com/rest/pulls/pulls#get-a-pull-request) endpoint.
-         *
-         * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
-         */
-        createReview: {
-            (params?: RestEndpointMethodTypes["pulls"]["createReview"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["createReview"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see "[Create an issue comment](https://docs.github.com/rest/issues/comments#create-an-issue-comment)." We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff.
-         *
-         * The `position` parameter is deprecated. If you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required.
-         *
-         * **Note:** The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
-         *
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-         */
-        createReviewComment: {
-            (params?: RestEndpointMethodTypes["pulls"]["createReviewComment"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["createReviewComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a pull request review that has not been submitted. Submitted reviews cannot be deleted.
-         */
-        deletePendingReview: {
-            (params?: RestEndpointMethodTypes["pulls"]["deletePendingReview"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["deletePendingReview"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a review comment.
-         */
-        deleteReviewComment: {
-            (params?: RestEndpointMethodTypes["pulls"]["deleteReviewComment"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["deleteReviewComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** To dismiss a pull request review on a [protected branch](https://docs.github.com/rest/branches/branch-protection), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews.
-         */
-        dismissReview: {
-            (params?: RestEndpointMethodTypes["pulls"]["dismissReview"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["dismissReview"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Lists details of a pull request by providing its number.
-         *
-         * When you get, [create](https://docs.github.com/rest/pulls/pulls/#create-a-pull-request), or [edit](https://docs.github.com/rest/pulls/pulls#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)".
-         *
-         * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit.
-         *
-         * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request:
-         *
-         * *   If merged as a [merge commit](https://docs.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit.
-         * *   If merged via a [squash](https://docs.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch.
-         * *   If [rebased](https://docs.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to.
-         *
-         * Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
-         */
-        get: {
-            (params?: RestEndpointMethodTypes["pulls"]["get"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["get"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Retrieves a pull request review by its ID.
-         */
-        getReview: {
-            (params?: RestEndpointMethodTypes["pulls"]["getReview"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["getReview"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Provides details for a review comment.
-         */
-        getReviewComment: {
-            (params?: RestEndpointMethodTypes["pulls"]["getReviewComment"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["getReviewComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         */
-        list: {
-            (params?: RestEndpointMethodTypes["pulls"]["list"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["list"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List comments for a specific pull request review.
-         */
-        listCommentsForReview: {
-            (params?: RestEndpointMethodTypes["pulls"]["listCommentsForReview"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["listCommentsForReview"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists a maximum of 250 commits for a pull request. To receive a complete commit list for pull requests with more than 250 commits, use the [List commits](https://docs.github.com/rest/commits/commits#list-commits) endpoint.
-         */
-        listCommits: {
-            (params?: RestEndpointMethodTypes["pulls"]["listCommits"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["listCommits"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** Responses include a maximum of 3000 files. The paginated response returns 30 files per page by default.
-         */
-        listFiles: {
-            (params?: RestEndpointMethodTypes["pulls"]["listFiles"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["listFiles"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * 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](https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request) operation.
-         */
-        listRequestedReviewers: {
-            (params?: RestEndpointMethodTypes["pulls"]["listRequestedReviewers"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["listRequestedReviewers"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all review comments for a pull request. By default, review comments are in ascending order by ID.
-         */
-        listReviewComments: {
-            (params?: RestEndpointMethodTypes["pulls"]["listReviewComments"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["listReviewComments"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists review comments for all pull requests in a repository. By default, review comments are in ascending order by ID.
-         */
-        listReviewCommentsForRepo: {
-            (params?: RestEndpointMethodTypes["pulls"]["listReviewCommentsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["listReviewCommentsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * The list of reviews returns in chronological order.
-         */
-        listReviews: {
-            (params?: RestEndpointMethodTypes["pulls"]["listReviews"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["listReviews"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Merges a pull request into the base branch.
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-         */
-        merge: {
-            (params?: RestEndpointMethodTypes["pulls"]["merge"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["merge"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes review requests from a pull request for a given set of users and/or teams.
-         */
-        removeRequestedReviewers: {
-            (params?: RestEndpointMethodTypes["pulls"]["removeRequestedReviewers"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["removeRequestedReviewers"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-         */
-        requestReviewers: {
-            (params?: RestEndpointMethodTypes["pulls"]["requestReviewers"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["requestReviewers"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Submits a pending review for a pull request. For more information about creating a pending review for a pull request, see "[Create a review for a pull request](https://docs.github.com/rest/pulls/reviews#create-a-review-for-a-pull-request)."
-         */
-        submitReview: {
-            (params?: RestEndpointMethodTypes["pulls"]["submitReview"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["submitReview"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request.
-         */
-        update: {
-            (params?: RestEndpointMethodTypes["pulls"]["update"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["update"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch.
-         */
-        updateBranch: {
-            (params?: RestEndpointMethodTypes["pulls"]["updateBranch"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["updateBranch"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Update the review summary comment with new text.
-         */
-        updateReview: {
-            (params?: RestEndpointMethodTypes["pulls"]["updateReview"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["updateReview"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Enables you to edit a review comment.
-         */
-        updateReviewComment: {
-            (params?: RestEndpointMethodTypes["pulls"]["updateReviewComment"]["parameters"]): Promise<RestEndpointMethodTypes["pulls"]["updateReviewComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    rateLimit: {
-        /**
-         * **Note:** Accessing this endpoint does not count against your REST API rate limit.
-         *
-         * Some categories of endpoints have custom rate limits that are separate from the rate limit governing the other REST API endpoints. For this reason, the API response categorizes your rate limit. Under `resources`, you'll see objects relating to different categories:
-         * * The `core` object provides your rate limit status for all non-search-related resources in the REST API.
-         * * The `search` object provides your rate limit status for the REST API for searching (excluding code searches). For more information, see "[Search](https://docs.github.com/rest/search)."
-         * * The `code_search` object provides your rate limit status for the REST API for searching code. For more information, see "[Search code](https://docs.github.com/rest/search/search#search-code)."
-         * * The `graphql` object provides your rate limit status for the GraphQL API. For more information, see "[Resource limitations](https://docs.github.com/graphql/overview/resource-limitations#rate-limit)."
-         * * The `integration_manifest` object provides your rate limit status for the `POST /app-manifests/{code}/conversions` operation. For more information, see "[Creating a GitHub App from a manifest](https://docs.github.com/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app-from-a-manifest#3-you-exchange-the-temporary-code-to-retrieve-the-app-configuration)."
-         * * The `dependency_snapshots` object provides your rate limit status for submitting snapshots to the dependency graph. For more information, see "[Dependency graph](https://docs.github.com/rest/dependency-graph)."
-         * * The `code_scanning_upload` object provides your rate limit status for uploading SARIF results to code scanning. For more information, see "[Uploading a SARIF file to GitHub](https://docs.github.com/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github)."
-         * * The `actions_runner_registration` object provides your rate limit status for registering self-hosted runners in GitHub Actions. For more information, see "[Self-hosted runners](https://docs.github.com/rest/actions/self-hosted-runners)."
-         * * The `source_import` object is no longer in use for any API endpoints, and it will be removed in the next API version. For more information about API versions, see "[API Versions](https://docs.github.com/rest/overview/api-versions)."
-         *
-         * **Note:** The `rate` object is deprecated. If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object.
-         */
-        get: {
-            (params?: RestEndpointMethodTypes["rateLimit"]["get"]["parameters"]): Promise<RestEndpointMethodTypes["rateLimit"]["get"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    reactions: {
-        /**
-         * Create a reaction to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment). A response with an HTTP `200` status means that you already added the reaction type to this commit comment.
-         */
-        createForCommitComment: {
-            (params?: RestEndpointMethodTypes["reactions"]["createForCommitComment"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["createForCommitComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create a reaction to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue). A response with an HTTP `200` status means that you already added the reaction type to this issue.
-         */
-        createForIssue: {
-            (params?: RestEndpointMethodTypes["reactions"]["createForIssue"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["createForIssue"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create a reaction to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment). A response with an HTTP `200` status means that you already added the reaction type to this issue comment.
-         */
-        createForIssueComment: {
-            (params?: RestEndpointMethodTypes["reactions"]["createForIssueComment"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["createForIssueComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create a reaction to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request). A response with an HTTP `200` status means that you already added the reaction type to this pull request review comment.
-         */
-        createForPullRequestReviewComment: {
-            (params?: RestEndpointMethodTypes["reactions"]["createForPullRequestReviewComment"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["createForPullRequestReviewComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create a reaction to a [release](https://docs.github.com/rest/releases/releases#get-a-release). A response with a `Status: 200 OK` means that you already added the reaction type to this release.
-         */
-        createForRelease: {
-            (params?: RestEndpointMethodTypes["reactions"]["createForRelease"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["createForRelease"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment.
-         *
-         * **Note:** You 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`.
-         */
-        createForTeamDiscussionCommentInOrg: {
-            (params?: RestEndpointMethodTypes["reactions"]["createForTeamDiscussionCommentInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["createForTeamDiscussionCommentInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`.
-         */
-        createForTeamDiscussionInOrg: {
-            (params?: RestEndpointMethodTypes["reactions"]["createForTeamDiscussionInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["createForTeamDiscussionInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/comments/:comment_id/reactions/:reaction_id`.
-         *
-         * Delete a reaction to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment).
-         */
-        deleteForCommitComment: {
-            (params?: RestEndpointMethodTypes["reactions"]["deleteForCommitComment"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["deleteForCommitComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/issues/:issue_number/reactions/:reaction_id`.
-         *
-         * Delete a reaction to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue).
-         */
-        deleteForIssue: {
-            (params?: RestEndpointMethodTypes["reactions"]["deleteForIssue"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["deleteForIssue"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id`.
-         *
-         * Delete a reaction to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment).
-         */
-        deleteForIssueComment: {
-            (params?: RestEndpointMethodTypes["reactions"]["deleteForIssueComment"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["deleteForIssueComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/pulls/comments/:comment_id/reactions/:reaction_id.`
-         *
-         * Delete a reaction to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request).
-         */
-        deleteForPullRequestComment: {
-            (params?: RestEndpointMethodTypes["reactions"]["deleteForPullRequestComment"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["deleteForPullRequestComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/releases/:release_id/reactions/:reaction_id`.
-         *
-         * Delete a reaction to a [release](https://docs.github.com/rest/releases/releases#get-a-release).
-         */
-        deleteForRelease: {
-            (params?: RestEndpointMethodTypes["reactions"]["deleteForRelease"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["deleteForRelease"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** You 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/reactions/:reaction_id`.
-         *
-         * Delete a reaction to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         */
-        deleteForTeamDiscussion: {
-            (params?: RestEndpointMethodTypes["reactions"]["deleteForTeamDiscussion"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["deleteForTeamDiscussion"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** You 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`.
-         *
-         * Delete a reaction to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         */
-        deleteForTeamDiscussionComment: {
-            (params?: RestEndpointMethodTypes["reactions"]["deleteForTeamDiscussionComment"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["deleteForTeamDiscussionComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the reactions to a [commit comment](https://docs.github.com/rest/commits/comments#get-a-commit-comment).
-         */
-        listForCommitComment: {
-            (params?: RestEndpointMethodTypes["reactions"]["listForCommitComment"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["listForCommitComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the reactions to an [issue](https://docs.github.com/rest/issues/issues#get-an-issue).
-         */
-        listForIssue: {
-            (params?: RestEndpointMethodTypes["reactions"]["listForIssue"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["listForIssue"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the reactions to an [issue comment](https://docs.github.com/rest/issues/comments#get-an-issue-comment).
-         */
-        listForIssueComment: {
-            (params?: RestEndpointMethodTypes["reactions"]["listForIssueComment"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["listForIssueComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the reactions to a [pull request review comment](https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request).
-         */
-        listForPullRequestReviewComment: {
-            (params?: RestEndpointMethodTypes["reactions"]["listForPullRequestReviewComment"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["listForPullRequestReviewComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the reactions to a [release](https://docs.github.com/rest/releases/releases#get-a-release).
-         */
-        listForRelease: {
-            (params?: RestEndpointMethodTypes["reactions"]["listForRelease"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["listForRelease"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the reactions to a [team discussion comment](https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         *
-         * **Note:** You 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`.
-         */
-        listForTeamDiscussionCommentInOrg: {
-            (params?: RestEndpointMethodTypes["reactions"]["listForTeamDiscussionCommentInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["listForTeamDiscussionCommentInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the reactions to a [team discussion](https://docs.github.com/rest/teams/discussions#get-a-discussion). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         *
-         * **Note:** You 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`.
-         */
-        listForTeamDiscussionInOrg: {
-            (params?: RestEndpointMethodTypes["reactions"]["listForTeamDiscussionInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["reactions"]["listForTeamDiscussionInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    repos: {
-        /**
-         * @deprecated octokit.rest.repos.acceptInvitation() has been renamed to octokit.rest.repos.acceptInvitationForAuthenticatedUser() (2021-10-05)
-         */
-        acceptInvitation: {
-            (params?: RestEndpointMethodTypes["repos"]["acceptInvitation"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["acceptInvitation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        acceptInvitationForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["repos"]["acceptInvitationForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["acceptInvitationForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Grants the specified apps push access for this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
-         */
-        addAppAccessRestrictions: {
-            (params?: RestEndpointMethodTypes["repos"]["addAppAccessRestrictions"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["addAppAccessRestrictions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-         *
-         * Adding an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)."
-         *
-         * For more information on permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". There are restrictions on which permissions can be granted to organization members when an organization base role is in place. In this case, the permission being given must be equal to or higher than the org base permission. Otherwise, the request will fail with:
-         *
-         * ```
-         * Cannot assign {member} permission of {role name}
-         * ```
-         *
-         * 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 verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-         *
-         * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [API](https://docs.github.com/rest/collaborators/invitations).
-         *
-         * **Updating an existing collaborator's permission level**
-         *
-         * The endpoint can also be used to change the permissions of an existing collaborator without first removing and re-adding the collaborator. To change the permissions, use the same endpoint and pass a different `permission` parameter. The response will be a `204`, with no other indication that the permission level changed.
-         *
-         * **Rate limits**
-         *
-         * You are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository.
-         */
-        addCollaborator: {
-            (params?: RestEndpointMethodTypes["repos"]["addCollaborator"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["addCollaborator"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         */
-        addStatusCheckContexts: {
-            (params?: RestEndpointMethodTypes["repos"]["addStatusCheckContexts"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["addStatusCheckContexts"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Grants the specified teams push access for this branch. You can also give push access to child teams.
-         */
-        addTeamAccessRestrictions: {
-            (params?: RestEndpointMethodTypes["repos"]["addTeamAccessRestrictions"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["addTeamAccessRestrictions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Grants the specified people push access for this branch.
-         *
-         * | Type    | Description                                                                                                                   |
-         * | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
-         * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
-         */
-        addUserAccessRestrictions: {
-            (params?: RestEndpointMethodTypes["repos"]["addUserAccessRestrictions"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["addUserAccessRestrictions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Shows whether automated security fixes are enabled, disabled or paused for a repository. The authenticated user must have admin read access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/articles/configuring-automated-security-fixes)".
-         */
-        checkAutomatedSecurityFixes: {
-            (params?: RestEndpointMethodTypes["repos"]["checkAutomatedSecurityFixes"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["checkAutomatedSecurityFixes"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.
-         *
-         * Team members will include the members of child teams.
-         *
-         * You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this
-         * endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this
-         * endpoint.
-         */
-        checkCollaborator: {
-            (params?: RestEndpointMethodTypes["repos"]["checkCollaborator"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["checkCollaborator"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Shows whether dependency alerts are enabled or disabled for a repository. The authenticated user must have admin read access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)".
-         */
-        checkVulnerabilityAlerts: {
-            (params?: RestEndpointMethodTypes["repos"]["checkVulnerabilityAlerts"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["checkVulnerabilityAlerts"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List any syntax errors that are detected in the CODEOWNERS
-         * file.
-         *
-         * For more information about the correct CODEOWNERS syntax,
-         * see "[About code owners](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)."
-         */
-        codeownersErrors: {
-            (params?: RestEndpointMethodTypes["repos"]["codeownersErrors"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["codeownersErrors"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Deprecated**: Use `repos.compareCommitsWithBasehead()` (`GET /repos/{owner}/{repo}/compare/{basehead}`) instead. Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `<USERNAME>:branch`.
-         *
-         * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
-         *
-         * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file.
-         *
-         * **Working with large comparisons**
-         *
-         * To process a response with a large number of commits, you can use (`per_page` or `page`) to paginate the results. When using paging, the list of changed files is only returned with page 1, but includes all changed files for the entire comparison. For more information on working with pagination, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)."
-         *
-         * When calling this API without any paging parameters (`per_page` or `page`), the returned list is limited to 250 commits and the last commit in the list is the most recent of the entire comparison. When a paging parameter is specified, the first commit in the returned list of each page is the earliest.
-         *
-         * **Signature verification object**
-         *
-         * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-         *
-         * | Name | Type | Description |
-         * | ---- | ---- | ----------- |
-         * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-         * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-         * | `signature` | `string` | The signature that was extracted from the commit. |
-         * | `payload` | `string` | The value that was signed. |
-         *
-         * These are the possible values for `reason` in the `verification` object:
-         *
-         * | Value | Description |
-         * | ----- | ----------- |
-         * | `expired_key` | The key that made the signature is expired. |
-         * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-         * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-         * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-         * | `unsigned` | The object does not include a signature. |
-         * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-         * | `no_user` | No user was associated with the `committer` email address in the commit. |
-         * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
-         * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-         * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-         * | `malformed_signature` | There was an error parsing the signature. |
-         * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-         * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-         */
-        compareCommits: {
-            (params?: RestEndpointMethodTypes["repos"]["compareCommits"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["compareCommits"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Compares two commits against one another. You can compare branches in the same repository, or you can compare branches that exist in different repositories within the same repository network, including fork branches. For more information about how to view a repository's network, see "[Understanding connections between repositories](https://docs.github.com/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories)."
-         *
-         * This endpoint is equivalent to running the `git log BASE..HEAD` command, but it returns commits in a different order. The `git log BASE..HEAD` command returns commits in reverse chronological order, whereas the API returns commits in chronological order. You can pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
-         *
-         * The API response includes details about the files that were changed between the two commits. This includes the status of the change (if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file.
-         *
-         * When calling this endpoint without any paging parameter (`per_page` or `page`), the returned list is limited to 250 commits, and the last commit in the list is the most recent of the entire comparison.
-         *
-         * **Working with large comparisons**
-         *
-         * To process a response with a large number of commits, use a query parameter (`per_page` or `page`) to paginate the results. When using pagination:
-         *
-         * - The list of changed files is only shown on the first page of results, but it includes all changed files for the entire comparison.
-         * - The results are returned in chronological order, but the last commit in the returned list may not be the most recent one in the entire set if there are more pages of results.
-         *
-         * For more information on working with pagination, see "[Using pagination in the REST API](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api)."
-         *
-         * **Signature verification object**
-         *
-         * The response will include a `verification` object that describes the result of verifying the commit's signature. The `verification` object includes the following fields:
-         *
-         * | Name | Type | Description |
-         * | ---- | ---- | ----------- |
-         * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-         * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-         * | `signature` | `string` | The signature that was extracted from the commit. |
-         * | `payload` | `string` | The value that was signed. |
-         *
-         * These are the possible values for `reason` in the `verification` object:
-         *
-         * | Value | Description |
-         * | ----- | ----------- |
-         * | `expired_key` | The key that made the signature is expired. |
-         * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-         * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-         * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-         * | `unsigned` | The object does not include a signature. |
-         * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-         * | `no_user` | No user was associated with the `committer` email address in the commit. |
-         * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-         * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-         * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-         * | `malformed_signature` | There was an error parsing the signature. |
-         * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-         * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-         */
-        compareCommitsWithBasehead: {
-            (params?: RestEndpointMethodTypes["repos"]["compareCommitsWithBasehead"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["compareCommitsWithBasehead"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with admin access to the repository can create an autolink.
-         */
-        createAutolink: {
-            (params?: RestEndpointMethodTypes["repos"]["createAutolink"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createAutolink"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create a comment for a commit using its `:commit_sha`.
-         *
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-         */
-        createCommitComment: {
-            (params?: RestEndpointMethodTypes["repos"]["createCommitComment"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createCommitComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits.
-         */
-        createCommitSignatureProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["createCommitSignatureProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createCommitSignatureProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with push access in a repository can create commit statuses for a given SHA.
-         *
-         * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error.
-         */
-        createCommitStatus: {
-            (params?: RestEndpointMethodTypes["repos"]["createCommitStatus"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createCommitStatus"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You can create a read-only deploy key.
-         */
-        createDeployKey: {
-            (params?: RestEndpointMethodTypes["repos"]["createDeployKey"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createDeployKey"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deployments offer a few configurable parameters with certain defaults.
-         *
-         * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them
-         * before we merge a pull request.
-         *
-         * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have
-         * multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter
-         * makes it easier to track which environments have requested deployments. The default environment is `production`.
-         *
-         * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If
-         * the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds,
-         * the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will
-         * return a failure response.
-         *
-         * By default, [commit statuses](https://docs.github.com/rest/commits/statuses) for every submitted context must be in a `success`
-         * state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to
-         * specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do
-         * not require any contexts or create any commit statuses, the deployment will always succeed.
-         *
-         * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text
-         * field that will be passed on when a deployment event is dispatched.
-         *
-         * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might
-         * be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an
-         * application with debugging enabled.
-         *
-         * Users with `repo` or `repo_deployment` scopes can create a deployment for a given ref.
-         *
-         * Merged branch response:
-         *
-         * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating
-         * a deployment. This auto-merge happens when:
-         * *   Auto-merge option is enabled in the repository
-         * *   Topic branch does not include the latest changes on the base branch, which is `master` in the response example
-         * *   There are no merge conflicts
-         *
-         * If there are no new commits in the base branch, a new request to create a deployment should give a successful
-         * response.
-         *
-         * Merge conflict response:
-         *
-         * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't
-         * be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts.
-         *
-         * Failed commit status checks:
-         *
-         * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success`
-         * status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`.
-         */
-        createDeployment: {
-            (params?: RestEndpointMethodTypes["repos"]["createDeployment"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createDeployment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a deployment branch or tag policy for an environment.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration:write` permission for the repository to use this endpoint.
-         */
-        createDeploymentBranchPolicy: {
-            (params?: RestEndpointMethodTypes["repos"]["createDeploymentBranchPolicy"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createDeploymentBranchPolicy"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Enable a custom deployment protection rule for an environment.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. Enabling a custom protection rule requires admin or owner permissions to the repository. GitHub Apps must have the `actions:write` permission to use this endpoint.
-         *
-         * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app).
-         */
-        createDeploymentProtectionRule: {
-            (params?: RestEndpointMethodTypes["repos"]["createDeploymentProtectionRule"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createDeploymentProtectionRule"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with `push` access can create deployment statuses for a given deployment.
-         *
-         * GitHub Apps require `read & write` access to "Deployments" and `read-only` access to "Repo contents" (for private repos). OAuth apps require the `repo_deployment` scope.
-         */
-        createDeploymentStatus: {
-            (params?: RestEndpointMethodTypes["repos"]["createDeploymentStatus"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createDeploymentStatus"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://docs.github.com/webhooks/event-payloads/#repository_dispatch)."
-         *
-         * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow.
-         *
-         * This endpoint requires write access to the repository by providing either:
-         *
-         *   - Personal access tokens with `repo` scope. For more information, see "[Creating a personal access token for the command line](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line)" in the GitHub Help documentation.
-         *   - GitHub Apps with both `metadata:read` and `contents:read&write` permissions.
-         *
-         * This input example shows how you can use the `client_payload` as a test to debug your workflow.
-         */
-        createDispatchEvent: {
-            (params?: RestEndpointMethodTypes["repos"]["createDispatchEvent"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createDispatchEvent"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a new repository for the authenticated user.
-         *
-         * **OAuth scope requirements**
-         *
-         * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
-         *
-         * *   `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.
-         * *   `repo` scope to create a private repository.
-         */
-        createForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["repos"]["createForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create a fork for the authenticated user.
-         *
-         * **Note**: Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api).
-         *
-         * **Note**: Although this endpoint works with GitHub Apps, the GitHub App must be installed on the destination account with access to all repositories and on the source account with access to the source repository.
-         */
-        createFork: {
-            (params?: RestEndpointMethodTypes["repos"]["createFork"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createFork"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a new repository in the specified organization. The authenticated user must be a member of the organization.
-         *
-         * **OAuth scope requirements**
-         *
-         * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
-         *
-         * *   `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.
-         * *   `repo` scope to create a private repository
-         */
-        createInOrg: {
-            (params?: RestEndpointMethodTypes["repos"]["createInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create or update an environment with protection rules, such as required reviewers. For more information about environment protection rules, see "[Environments](/actions/reference/environments#environment-protection-rules)."
-         *
-         * **Note:** To create or update name patterns that branches must match in order to deploy to this environment, see "[Deployment branch policies](/rest/deployments/branch-policies)."
-         *
-         * **Note:** To create or update secrets for an environment, see "[GitHub Actions secrets](/rest/actions/secrets)."
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration:write` permission for the repository to use this endpoint.
-         */
-        createOrUpdateEnvironment: {
-            (params?: RestEndpointMethodTypes["repos"]["createOrUpdateEnvironment"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createOrUpdateEnvironment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a new file or replaces an existing file in a repository. You must authenticate using an access token with the `repo` scope to use this endpoint. If you want to modify files in the `.github/workflows` directory, you must authenticate using an access token with the `workflow` scope.
-         *
-         * **Note:** If you use this endpoint and the "[Delete a file](https://docs.github.com/rest/repos/contents/#delete-a-file)" endpoint in parallel, the concurrent requests will conflict and you will receive errors. You must use these endpoints serially instead.
-         */
-        createOrUpdateFileContents: {
-            (params?: RestEndpointMethodTypes["repos"]["createOrUpdateFileContents"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createOrUpdateFileContents"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create a repository ruleset for an organization.
-         */
-        createOrgRuleset: {
-            (params?: RestEndpointMethodTypes["repos"]["createOrgRuleset"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createOrgRuleset"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create a GitHub Pages deployment for a repository.
-         *
-         * Users must have write permissions. GitHub Apps must have the `pages:write` permission to use this endpoint.
-         */
-        createPagesDeployment: {
-            (params?: RestEndpointMethodTypes["repos"]["createPagesDeployment"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createPagesDeployment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Configures a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages)."
-         *
-         * To use this endpoint, you must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. A token with the `repo` scope or Pages write permission is required. GitHub Apps must have the `administration:write` and `pages:write` permissions.
-         */
-        createPagesSite: {
-            (params?: RestEndpointMethodTypes["repos"]["createPagesSite"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createPagesSite"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with push access to the repository can create a release.
-         *
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-         */
-        createRelease: {
-            (params?: RestEndpointMethodTypes["repos"]["createRelease"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createRelease"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Create a ruleset for a repository.
-         */
-        createRepoRuleset: {
-            (params?: RestEndpointMethodTypes["repos"]["createRepoRuleset"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createRepoRuleset"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This creates a tag protection state for a repository.
-         * This endpoint is only available to repository administrators.
-         */
-        createTagProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["createTagProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createTagProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. If the repository is not public, the authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/repos/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.
-         *
-         * **OAuth scope requirements**
-         *
-         * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
-         *
-         * *   `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.
-         * *   `repo` scope to create a private repository
-         */
-        createUsingTemplate: {
-            (params?: RestEndpointMethodTypes["repos"]["createUsingTemplate"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createUsingTemplate"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can
-         * share the same `config` as long as those webhooks do not have any `events` that overlap.
-         */
-        createWebhook: {
-            (params?: RestEndpointMethodTypes["repos"]["createWebhook"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["createWebhook"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * @deprecated octokit.rest.repos.declineInvitation() has been renamed to octokit.rest.repos.declineInvitationForAuthenticatedUser() (2021-10-05)
-         */
-        declineInvitation: {
-            (params?: RestEndpointMethodTypes["repos"]["declineInvitation"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["declineInvitation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        declineInvitationForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["repos"]["declineInvitationForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["declineInvitationForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deleting a repository requires admin access. If OAuth is used, the `delete_repo` scope is required.
-         *
-         * If an organization owner has configured the organization to prevent members from deleting organization-owned
-         * repositories, you will get a `403 Forbidden` response.
-         */
-        delete: {
-            (params?: RestEndpointMethodTypes["repos"]["delete"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["delete"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Disables the ability to restrict who can push to this branch.
-         */
-        deleteAccessRestrictions: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteAccessRestrictions"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteAccessRestrictions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
-         */
-        deleteAdminBranchProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteAdminBranchProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteAdminBranchProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You must authenticate using an access token with the repo scope to use this endpoint.
-         */
-        deleteAnEnvironment: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteAnEnvironment"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteAnEnvironment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This deletes a single autolink reference by ID that was configured for the given repository.
-         *
-         * Information about autolinks are only available to repository administrators.
-         */
-        deleteAutolink: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteAutolink"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteAutolink"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         */
-        deleteBranchProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteBranchProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteBranchProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        deleteCommitComment: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteCommitComment"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteCommitComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits.
-         */
-        deleteCommitSignatureProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteCommitSignatureProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteCommitSignatureProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead.
-         */
-        deleteDeployKey: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteDeployKey"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteDeployKey"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * If the repository only has one deployment, you can delete the deployment regardless of its status. If the repository has more than one deployment, you can only delete inactive deployments. This ensures that repositories with multiple deployments will always have an active deployment. Anyone with `repo` or `repo_deployment` scopes can delete a deployment.
-         *
-         * To set a deployment as inactive, you must:
-         *
-         * *   Create a new deployment that is active so that the system has a record of the current state, then delete the previously active deployment.
-         * *   Mark the active deployment as inactive by adding any non-successful deployment status.
-         *
-         * For more information, see "[Create a deployment](https://docs.github.com/rest/deployments/deployments/#create-a-deployment)" and "[Create a deployment status](https://docs.github.com/rest/deployments/statuses#create-a-deployment-status)."
-         */
-        deleteDeployment: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteDeployment"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteDeployment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a deployment branch or tag policy for an environment.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration:write` permission for the repository to use this endpoint.
-         */
-        deleteDeploymentBranchPolicy: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteDeploymentBranchPolicy"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteDeploymentBranchPolicy"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a file in a repository.
-         *
-         * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author.
-         *
-         * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used.
-         *
-         * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code.
-         *
-         * **Note:** If you use this endpoint and the "[Create or update file contents](https://docs.github.com/rest/repos/contents/#create-or-update-file-contents)" endpoint in parallel, the concurrent requests will conflict and you will receive errors. You must use these endpoints serially instead.
-         */
-        deleteFile: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteFile"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteFile"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        deleteInvitation: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteInvitation"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteInvitation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Delete a ruleset for an organization.
-         */
-        deleteOrgRuleset: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteOrgRuleset"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteOrgRuleset"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages).
-         *
-         * To use this endpoint, you must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. A token with the `repo` scope or Pages write permission is required. GitHub Apps must have the `administration:write` and `pages:write` permissions.
-         */
-        deletePagesSite: {
-            (params?: RestEndpointMethodTypes["repos"]["deletePagesSite"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deletePagesSite"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         */
-        deletePullRequestReviewProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["deletePullRequestReviewProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deletePullRequestReviewProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with push access to the repository can delete a release.
-         */
-        deleteRelease: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteRelease"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteRelease"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        deleteReleaseAsset: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteReleaseAsset"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteReleaseAsset"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Delete a ruleset for a repository.
-         */
-        deleteRepoRuleset: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteRepoRuleset"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteRepoRuleset"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This deletes a tag protection state for a repository.
-         * This endpoint is only available to repository administrators.
-         */
-        deleteTagProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteTagProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteTagProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        deleteWebhook: {
-            (params?: RestEndpointMethodTypes["repos"]["deleteWebhook"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["deleteWebhook"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Disables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/articles/configuring-automated-security-fixes)".
-         */
-        disableAutomatedSecurityFixes: {
-            (params?: RestEndpointMethodTypes["repos"]["disableAutomatedSecurityFixes"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["disableAutomatedSecurityFixes"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Disables a custom deployment protection rule for an environment.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. Removing a custom protection rule requires admin or owner permissions to the repository. GitHub Apps must have the `actions:write` permission to use this endpoint. For more information, see "[Get an app](https://docs.github.com/rest/apps/apps#get-an-app)".
-         */
-        disableDeploymentProtectionRule: {
-            (params?: RestEndpointMethodTypes["repos"]["disableDeploymentProtectionRule"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["disableDeploymentProtectionRule"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Disables private vulnerability reporting for a repository. The authenticated user must have admin access to the repository. For more information, see "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)".
-         */
-        disablePrivateVulnerabilityReporting: {
-            (params?: RestEndpointMethodTypes["repos"]["disablePrivateVulnerabilityReporting"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["disablePrivateVulnerabilityReporting"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Disables dependency alerts and the dependency graph for a repository.
-         * The authenticated user must have admin access to the repository. For more information,
-         * see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)".
-         */
-        disableVulnerabilityAlerts: {
-            (params?: RestEndpointMethodTypes["repos"]["disableVulnerabilityAlerts"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["disableVulnerabilityAlerts"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually
-         * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use
-         * the `Location` header to make a second `GET` request.
-         *
-         * **Note**: For private repositories, these links are temporary and expire after five minutes. If the repository is empty, you will receive a 404 when you follow the redirect.
-         * @deprecated octokit.rest.repos.downloadArchive() has been renamed to octokit.rest.repos.downloadZipballArchive() (2020-09-17)
-         */
-        downloadArchive: {
-            (params?: RestEndpointMethodTypes["repos"]["downloadArchive"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["downloadArchive"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a redirect URL to download a tar archive for a repository. If you omit `:ref`, the repository’s default branch (usually
-         * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use
-         * the `Location` header to make a second `GET` request.
-         * **Note**: For private repositories, these links are temporary and expire after five minutes.
-         */
-        downloadTarballArchive: {
-            (params?: RestEndpointMethodTypes["repos"]["downloadTarballArchive"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["downloadTarballArchive"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually
-         * `main`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use
-         * the `Location` header to make a second `GET` request.
-         *
-         * **Note**: For private repositories, these links are temporary and expire after five minutes. If the repository is empty, you will receive a 404 when you follow the redirect.
-         */
-        downloadZipballArchive: {
-            (params?: RestEndpointMethodTypes["repos"]["downloadZipballArchive"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["downloadZipballArchive"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Enables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/articles/configuring-automated-security-fixes)".
-         */
-        enableAutomatedSecurityFixes: {
-            (params?: RestEndpointMethodTypes["repos"]["enableAutomatedSecurityFixes"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["enableAutomatedSecurityFixes"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Enables private vulnerability reporting for a repository. The authenticated user must have admin access to the repository. For more information, see "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)."
-         */
-        enablePrivateVulnerabilityReporting: {
-            (params?: RestEndpointMethodTypes["repos"]["enablePrivateVulnerabilityReporting"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["enablePrivateVulnerabilityReporting"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Enables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/articles/about-security-alerts-for-vulnerable-dependencies)".
-         */
-        enableVulnerabilityAlerts: {
-            (params?: RestEndpointMethodTypes["repos"]["enableVulnerabilityAlerts"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["enableVulnerabilityAlerts"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Generate a name and body describing a [release](https://docs.github.com/rest/releases/releases#get-a-release). The body content will be markdown formatted and contain information like the changes since last release and users who contributed. The generated release notes are not saved anywhere. They are intended to be generated and used when creating a new release.
-         */
-        generateReleaseNotes: {
-            (params?: RestEndpointMethodTypes["repos"]["generateReleaseNotes"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["generateReleaseNotes"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network.
-         *
-         * **Note:** In 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-         */
-        get: {
-            (params?: RestEndpointMethodTypes["repos"]["get"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["get"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Lists who has access to this protected branch.
-         *
-         * **Note**: Users, apps, and teams `restrictions` are only available for organization-owned repositories.
-         */
-        getAccessRestrictions: {
-            (params?: RestEndpointMethodTypes["repos"]["getAccessRestrictions"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getAccessRestrictions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         */
-        getAdminBranchProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["getAdminBranchProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getAdminBranchProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets all custom deployment protection rules that are enabled for an environment. Anyone with read access to the repository can use this endpoint. If the repository is private and you want to use a personal access token (classic), you must use an access token with the `repo` scope. GitHub Apps and fine-grained personal access tokens must have the `actions:read` permission to use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
-         *
-         * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app).
-         */
-        getAllDeploymentProtectionRules: {
-            (params?: RestEndpointMethodTypes["repos"]["getAllDeploymentProtectionRules"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getAllDeploymentProtectionRules"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the environments for a repository.
-         *
-         * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getAllEnvironments: {
-            (params?: RestEndpointMethodTypes["repos"]["getAllEnvironments"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getAllEnvironments"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         */
-        getAllStatusCheckContexts: {
-            (params?: RestEndpointMethodTypes["repos"]["getAllStatusCheckContexts"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getAllStatusCheckContexts"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        getAllTopics: {
-            (params?: RestEndpointMethodTypes["repos"]["getAllTopics"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getAllTopics"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Lists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
-         */
-        getAppsWithAccessToProtectedBranch: {
-            (params?: RestEndpointMethodTypes["repos"]["getAppsWithAccessToProtectedBranch"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getAppsWithAccessToProtectedBranch"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This returns a single autolink reference by ID that was configured for the given repository.
-         *
-         * Information about autolinks are only available to repository administrators.
-         */
-        getAutolink: {
-            (params?: RestEndpointMethodTypes["repos"]["getAutolink"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getAutolink"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        getBranch: {
-            (params?: RestEndpointMethodTypes["repos"]["getBranch"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getBranch"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         */
-        getBranchProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["getBranchProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getBranchProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns all active rules that apply to the specified branch. The branch does not need to exist; rules that would apply
-         * to a branch with that name will be returned. All active rules that apply will be returned, regardless of the level
-         * at which they are configured (e.g. repository or organization). Rules in rulesets with "evaluate" or "disabled"
-         * enforcement statuses are not returned.
-         */
-        getBranchRules: {
-            (params?: RestEndpointMethodTypes["repos"]["getBranchRules"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getBranchRules"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.
-         */
-        getClones: {
-            (params?: RestEndpointMethodTypes["repos"]["getClones"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getClones"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a weekly aggregate of the number of additions and deletions pushed to a repository.
-         */
-        getCodeFrequencyStats: {
-            (params?: RestEndpointMethodTypes["repos"]["getCodeFrequencyStats"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getCodeFrequencyStats"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Checks the repository permission of a collaborator. The possible repository
-         * permissions are `admin`, `write`, `read`, and `none`.
-         *
-         * *Note*: The `permission` attribute provides the legacy base roles of `admin`, `write`, `read`, and `none`, where the
-         * `maintain` role is mapped to `write` and the `triage` role is mapped to `read`. To determine the role assigned to the
-         * collaborator, see the `role_name` attribute, which will provide the full role name, including custom roles. The
-         * `permissions` hash can also be used to determine which base level of access the collaborator has to the repository.
-         */
-        getCollaboratorPermissionLevel: {
-            (params?: RestEndpointMethodTypes["repos"]["getCollaboratorPermissionLevel"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getCollaboratorPermissionLevel"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name.
-         *
-         *
-         * Additionally, a combined `state` is returned. The `state` is one of:
-         *
-         * *   **failure** if any of the contexts report as `error` or `failure`
-         * *   **pending** if there are no statuses or a context is `pending`
-         * *   **success** if the latest status for all contexts is `success`
-         */
-        getCombinedStatusForRef: {
-            (params?: RestEndpointMethodTypes["repos"]["getCombinedStatusForRef"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getCombinedStatusForRef"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint.
-         *
-         * **Note:** If there are more than 300 files in the commit diff, the response will include pagination link headers for the remaining files, up to a limit of 3000 files. Each page contains the static commit information, and the only changes are to the file listing.
-         *
-         * You can pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to  fetch `diff` and `patch` formats. Diffs with binary data will have no `patch` property.
-         *
-         * To return only the SHA-1 hash of the commit reference, you can provide the `sha` custom [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) in the `Accept` header. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag.
-         *
-         * **Signature verification object**
-         *
-         * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-         *
-         * | Name | Type | Description |
-         * | ---- | ---- | ----------- |
-         * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-         * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-         * | `signature` | `string` | The signature that was extracted from the commit. |
-         * | `payload` | `string` | The value that was signed. |
-         *
-         * These are the possible values for `reason` in the `verification` object:
-         *
-         * | Value | Description |
-         * | ----- | ----------- |
-         * | `expired_key` | The key that made the signature is expired. |
-         * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-         * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-         * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-         * | `unsigned` | The object does not include a signature. |
-         * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-         * | `no_user` | No user was associated with the `committer` email address in the commit. |
-         * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-         * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-         * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-         * | `malformed_signature` | There was an error parsing the signature. |
-         * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-         * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-         */
-        getCommit: {
-            (params?: RestEndpointMethodTypes["repos"]["getCommit"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getCommit"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`.
-         */
-        getCommitActivityStats: {
-            (params?: RestEndpointMethodTypes["repos"]["getCommitActivityStats"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getCommitActivityStats"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        getCommitComment: {
-            (params?: RestEndpointMethodTypes["repos"]["getCommitComment"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getCommitComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://docs.github.com/articles/signing-commits-with-gpg) in GitHub Help.
-         *
-         * **Note**: You must enable branch protection to require signed commits.
-         */
-        getCommitSignatureProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["getCommitSignatureProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getCommitSignatureProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns all community profile metrics for a repository. The repository cannot be a fork.
-         *
-         * The returned metrics include an overall health score, the repository description, the presence of documentation, the
-         * detected code of conduct, the detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE,
-         * README, and CONTRIBUTING files.
-         *
-         * The `health_percentage` score is defined as a percentage of how many of
-         * the recommended community health files are present. For more information, see
-         * "[About community profiles for public repositories](https://docs.github.com/communities/setting-up-your-project-for-healthy-contributions/about-community-profiles-for-public-repositories)."
-         *
-         * `content_reports_enabled` is only returned for organization-owned repositories.
-         */
-        getCommunityProfileMetrics: {
-            (params?: RestEndpointMethodTypes["repos"]["getCommunityProfileMetrics"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getCommunityProfileMetrics"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the contents of a file or directory in a repository. Specify the file path or directory in `:path`. If you omit
-         * `:path`, you will receive the contents of the repository's root directory. See the description below regarding what the API response includes for directories.
-         *
-         * Files and symlinks support [a custom media type](https://docs.github.com/rest/overview/media-types) for
-         * retrieving the raw content or rendered HTML (when supported). All content types support [a custom media
-         * type](https://docs.github.com/rest/overview/media-types) to ensure the content is returned in a consistent
-         * object format.
-         *
-         * **Notes**:
-         * *   To get a repository's contents recursively, you can [recursively get the tree](https://docs.github.com/rest/git/trees#get-a-tree).
-         * *   This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees
-         * API](https://docs.github.com/rest/git/trees#get-a-tree).
-         *  *  Download URLs expire and are meant to be used just once. To ensure the download URL does not expire, please use the contents API to obtain a fresh download URL for each download.
-         *  Size limits:
-         * If the requested file's size is:
-         * * 1 MB or smaller: All features of this endpoint are supported.
-         * * Between 1-100 MB: Only the `raw` or `object` [custom media types](https://docs.github.com/rest/repos/contents#custom-media-types-for-repository-contents) are supported. Both will work as normal, except that when using the `object` media type, the `content` field will be an empty string and the `encoding` field will be `"none"`. To get the contents of these larger files, use the `raw` media type.
-         *  * Greater than 100 MB: This endpoint is not supported.
-         *
-         *  If the content is a directory:
-         * The response will be an array of objects, one object for each item in the directory.
-         * When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value
-         * _should_ be "submodule". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW).
-         * In the next major version of the API, the type will be returned as "submodule".
-         *
-         *  If the content is a symlink:
-         * If the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the
-         * API responds with the content of the file (in the format shown in the example. Otherwise, the API responds with an object
-         * describing the symlink itself.
-         *
-         *  If the content is a submodule:
-         * The `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific
-         * commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out
-         * the submodule at that specific commit.
-         *
-         * If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the
-         * github.com URLs (`html_url` and `_links["html"]`) will have null values.
-         */
-        getContent: {
-            (params?: RestEndpointMethodTypes["repos"]["getContent"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getContent"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information:
-         *
-         * *   `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time).
-         * *   `a` - Number of additions
-         * *   `d` - Number of deletions
-         * *   `c` - Number of commits
-         */
-        getContributorsStats: {
-            (params?: RestEndpointMethodTypes["repos"]["getContributorsStats"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getContributorsStats"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets an enabled custom deployment protection rule for an environment. Anyone with read access to the repository can use this endpoint. If the repository is private and you want to use a personal access token (classic), you must use an access token with the `repo` scope. GitHub Apps and fine-grained personal access tokens must have the `actions:read` permission to use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
-         *
-         * For more information about the app that is providing this custom deployment rule, see [`GET /apps/{app_slug}`](https://docs.github.com/rest/apps/apps#get-an-app).
-         */
-        getCustomDeploymentProtectionRule: {
-            (params?: RestEndpointMethodTypes["repos"]["getCustomDeploymentProtectionRule"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getCustomDeploymentProtectionRule"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets all custom property values that are set for a repository.
-         * Users with read access to the repository can use this endpoint.
-         */
-        getCustomPropertiesValues: {
-            (params?: RestEndpointMethodTypes["repos"]["getCustomPropertiesValues"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getCustomPropertiesValues"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        getDeployKey: {
-            (params?: RestEndpointMethodTypes["repos"]["getDeployKey"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getDeployKey"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        getDeployment: {
-            (params?: RestEndpointMethodTypes["repos"]["getDeployment"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getDeployment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a deployment branch or tag policy for an environment.
-         *
-         * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getDeploymentBranchPolicy: {
-            (params?: RestEndpointMethodTypes["repos"]["getDeploymentBranchPolicy"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getDeploymentBranchPolicy"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with pull access can view a deployment status for a deployment:
-         */
-        getDeploymentStatus: {
-            (params?: RestEndpointMethodTypes["repos"]["getDeploymentStatus"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getDeploymentStatus"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** To get information about name patterns that branches must match in order to deploy to this environment, see "[Get a deployment branch policy](/rest/deployments/branch-policies#get-a-deployment-branch-policy)."
-         *
-         * Anyone with read access to the repository can use this endpoint. If the
-         * repository is private, you must use an access token with the `repo` scope. GitHub
-         * Apps must have the `actions:read` permission to use this endpoint.
-         */
-        getEnvironment: {
-            (params?: RestEndpointMethodTypes["repos"]["getEnvironment"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getEnvironment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets information about the single most recent build of a GitHub Pages site.
-         *
-         * A token with the `repo` scope is required. GitHub Apps must have the `pages:read` permission.
-         */
-        getLatestPagesBuild: {
-            (params?: RestEndpointMethodTypes["repos"]["getLatestPagesBuild"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getLatestPagesBuild"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * View the latest published full release for the repository.
-         *
-         * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published.
-         */
-        getLatestRelease: {
-            (params?: RestEndpointMethodTypes["repos"]["getLatestRelease"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getLatestRelease"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets information about a suite of rule evaluations from within an organization.
-         * For more information, see "[Managing rulesets for repositories in your organization](https://docs.github.com/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#viewing-insights-for-rulesets)."
-         */
-        getOrgRuleSuite: {
-            (params?: RestEndpointMethodTypes["repos"]["getOrgRuleSuite"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getOrgRuleSuite"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists suites of rule evaluations at the organization level.
-         * For more information, see "[Managing rulesets for repositories in your organization](https://docs.github.com/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#viewing-insights-for-rulesets)."
-         */
-        getOrgRuleSuites: {
-            (params?: RestEndpointMethodTypes["repos"]["getOrgRuleSuites"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getOrgRuleSuites"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get a repository ruleset for an organization.
-         */
-        getOrgRuleset: {
-            (params?: RestEndpointMethodTypes["repos"]["getOrgRuleset"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getOrgRuleset"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get all the repository rulesets for an organization.
-         */
-        getOrgRulesets: {
-            (params?: RestEndpointMethodTypes["repos"]["getOrgRulesets"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getOrgRulesets"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets information about a GitHub Pages site.
-         *
-         * A token with the `repo` scope is required. GitHub Apps must have the `pages:read` permission.
-         */
-        getPages: {
-            (params?: RestEndpointMethodTypes["repos"]["getPages"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getPages"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets information about a GitHub Pages build.
-         *
-         * A token with the `repo` scope is required. GitHub Apps must have the `pages:read` permission.
-         */
-        getPagesBuild: {
-            (params?: RestEndpointMethodTypes["repos"]["getPagesBuild"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getPagesBuild"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a health check of the DNS settings for the `CNAME` record configured for a repository's GitHub Pages.
-         *
-         * The first request to this endpoint returns a `202 Accepted` status and starts an asynchronous background task to get the results for the domain. After the background task completes, subsequent requests to this endpoint return a `200 OK` status with the health check results in the response.
-         *
-         * To use this endpoint, you must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. A token with the `repo` scope or Pages write permission is required. GitHub Apps must have the `administrative:write` and `pages:write` permissions.
-         */
-        getPagesHealthCheck: {
-            (params?: RestEndpointMethodTypes["repos"]["getPagesHealthCheck"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getPagesHealthCheck"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`.
-         *
-         * The array order is oldest week (index 0) to most recent week.
-         *
-         * The most recent week is seven days ago at UTC midnight to today at UTC midnight.
-         */
-        getParticipationStats: {
-            (params?: RestEndpointMethodTypes["repos"]["getParticipationStats"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getParticipationStats"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         */
-        getPullRequestReviewProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["getPullRequestReviewProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getPullRequestReviewProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Each array contains the day number, hour number, and number of commits:
-         *
-         * *   `0-6`: Sunday - Saturday
-         * *   `0-23`: Hour of day
-         * *   Number of commits
-         *
-         * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits.
-         */
-        getPunchCardStats: {
-            (params?: RestEndpointMethodTypes["repos"]["getPunchCardStats"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getPunchCardStats"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the preferred README for a repository.
-         *
-         * READMEs support [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw content or rendered HTML.
-         */
-        getReadme: {
-            (params?: RestEndpointMethodTypes["repos"]["getReadme"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getReadme"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets the README from a repository directory.
-         *
-         * READMEs support [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw content or rendered HTML.
-         */
-        getReadmeInDirectory: {
-            (params?: RestEndpointMethodTypes["repos"]["getReadmeInDirectory"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getReadmeInDirectory"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia).
-         */
-        getRelease: {
-            (params?: RestEndpointMethodTypes["repos"]["getRelease"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getRelease"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://docs.github.com/rest/overview/media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response.
-         */
-        getReleaseAsset: {
-            (params?: RestEndpointMethodTypes["repos"]["getReleaseAsset"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getReleaseAsset"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get a published release with the specified tag.
-         */
-        getReleaseByTag: {
-            (params?: RestEndpointMethodTypes["repos"]["getReleaseByTag"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getReleaseByTag"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets information about a suite of rule evaluations from within a repository.
-         * For more information, see "[Managing rulesets for a repository](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#viewing-insights-for-rulesets)."
-         */
-        getRepoRuleSuite: {
-            (params?: RestEndpointMethodTypes["repos"]["getRepoRuleSuite"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getRepoRuleSuite"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists suites of rule evaluations at the repository level.
-         * For more information, see "[Managing rulesets for a repository](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#viewing-insights-for-rulesets)."
-         */
-        getRepoRuleSuites: {
-            (params?: RestEndpointMethodTypes["repos"]["getRepoRuleSuites"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getRepoRuleSuites"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get a ruleset for a repository.
-         */
-        getRepoRuleset: {
-            (params?: RestEndpointMethodTypes["repos"]["getRepoRuleset"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getRepoRuleset"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get all the rulesets for a repository.
-         */
-        getRepoRulesets: {
-            (params?: RestEndpointMethodTypes["repos"]["getRepoRulesets"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getRepoRulesets"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         */
-        getStatusChecksProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["getStatusChecksProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getStatusChecksProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Lists the teams who have push access to this branch. The list includes child teams.
-         */
-        getTeamsWithAccessToProtectedBranch: {
-            (params?: RestEndpointMethodTypes["repos"]["getTeamsWithAccessToProtectedBranch"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getTeamsWithAccessToProtectedBranch"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get the top 10 popular contents over the last 14 days.
-         */
-        getTopPaths: {
-            (params?: RestEndpointMethodTypes["repos"]["getTopPaths"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getTopPaths"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get the top 10 referrers over the last 14 days.
-         */
-        getTopReferrers: {
-            (params?: RestEndpointMethodTypes["repos"]["getTopReferrers"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getTopReferrers"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Lists the people who have push access to this branch.
-         */
-        getUsersWithAccessToProtectedBranch: {
-            (params?: RestEndpointMethodTypes["repos"]["getUsersWithAccessToProtectedBranch"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getUsersWithAccessToProtectedBranch"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.
-         */
-        getViews: {
-            (params?: RestEndpointMethodTypes["repos"]["getViews"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getViews"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a webhook configured in a repository. To get only the webhook `config` properties, see "[Get a webhook configuration for a repository](/rest/webhooks/repo-config#get-a-webhook-configuration-for-a-repository)."
-         */
-        getWebhook: {
-            (params?: RestEndpointMethodTypes["repos"]["getWebhook"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getWebhook"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns the webhook configuration for a repository. To get more information about the webhook, including the `active` state and `events`, use "[Get a repository webhook](/rest/webhooks/repos#get-a-repository-webhook)."
-         *
-         * Access tokens must have the `read:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:read` permission.
-         */
-        getWebhookConfigForRepo: {
-            (params?: RestEndpointMethodTypes["repos"]["getWebhookConfigForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getWebhookConfigForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a delivery for a webhook configured in a repository.
-         */
-        getWebhookDelivery: {
-            (params?: RestEndpointMethodTypes["repos"]["getWebhookDelivery"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["getWebhookDelivery"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists a detailed history of changes to a repository, such as pushes, merges, force pushes, and branch changes, and associates these changes with commits and users.
-         *
-         * For more information about viewing repository activity,
-         * see "[Viewing activity and data for your repository](https://docs.github.com/repositories/viewing-activity-and-data-for-your-repository)."
-         */
-        listActivities: {
-            (params?: RestEndpointMethodTypes["repos"]["listActivities"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listActivities"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This returns a list of autolinks configured for the given repository.
-         *
-         * Information about autolinks are only available to repository administrators.
-         */
-        listAutolinks: {
-            (params?: RestEndpointMethodTypes["repos"]["listAutolinks"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listAutolinks"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listBranches: {
-            (params?: RestEndpointMethodTypes["repos"]["listBranches"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listBranches"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch.
-         */
-        listBranchesForHeadCommit: {
-            (params?: RestEndpointMethodTypes["repos"]["listBranchesForHeadCommit"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listBranchesForHeadCommit"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.
-         * Organization members with write, maintain, or admin privileges on the organization-owned repository can use this endpoint.
-         *
-         * Team members will include the members of child teams.
-         *
-         * You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this
-         * endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this
-         * endpoint.
-         */
-        listCollaborators: {
-            (params?: RestEndpointMethodTypes["repos"]["listCollaborators"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listCollaborators"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Use the `:commit_sha` to specify the commit that will have its comments listed.
-         */
-        listCommentsForCommit: {
-            (params?: RestEndpointMethodTypes["repos"]["listCommentsForCommit"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listCommentsForCommit"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Commit Comments use [these custom media types](https://docs.github.com/rest/overview/media-types). You can read more about the use of media types in the API [here](https://docs.github.com/rest/overview/media-types/).
-         *
-         * Comments are ordered by ascending ID.
-         */
-        listCommitCommentsForRepo: {
-            (params?: RestEndpointMethodTypes["repos"]["listCommitCommentsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listCommitCommentsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one.
-         *
-         * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`.
-         */
-        listCommitStatusesForRef: {
-            (params?: RestEndpointMethodTypes["repos"]["listCommitStatusesForRef"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listCommitStatusesForRef"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Signature verification object**
-         *
-         * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
-         *
-         * | Name | Type | Description |
-         * | ---- | ---- | ----------- |
-         * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. |
-         * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. |
-         * | `signature` | `string` | The signature that was extracted from the commit. |
-         * | `payload` | `string` | The value that was signed. |
-         *
-         * These are the possible values for `reason` in the `verification` object:
-         *
-         * | Value | Description |
-         * | ----- | ----------- |
-         * | `expired_key` | The key that made the signature is expired. |
-         * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
-         * | `gpgverify_error` | There was an error communicating with the signature verification service. |
-         * | `gpgverify_unavailable` | The signature verification service is currently unavailable. |
-         * | `unsigned` | The object does not include a signature. |
-         * | `unknown_signature_type` | A non-PGP signature was found in the commit. |
-         * | `no_user` | No user was associated with the `committer` email address in the commit. |
-         * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on their account. |
-         * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. |
-         * | `unknown_key` | The key that made the signature has not been registered with any user's account. |
-         * | `malformed_signature` | There was an error parsing the signature. |
-         * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
-         * | `valid` | None of the above errors applied, so the signature is considered to be verified. |
-         */
-        listCommits: {
-            (params?: RestEndpointMethodTypes["repos"]["listCommits"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listCommits"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API caches contributor data to improve performance.
-         *
-         * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information.
-         */
-        listContributors: {
-            (params?: RestEndpointMethodTypes["repos"]["listContributors"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listContributors"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets all custom deployment protection rule integrations that are available for an environment. Anyone with read access to the repository can use this endpoint. If the repository is private and you want to use a personal access token (classic), you must use an access token with the `repo` scope. GitHub Apps and fine-grained personal access tokens must have the `actions:read` permission to use this endpoint.
-         *
-         * For more information about environments, see "[Using environments for deployment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
-         *
-         * For more information about the app that is providing this custom deployment rule, see "[GET an app](https://docs.github.com/rest/apps/apps#get-an-app)".
-         */
-        listCustomDeploymentRuleIntegrations: {
-            (params?: RestEndpointMethodTypes["repos"]["listCustomDeploymentRuleIntegrations"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listCustomDeploymentRuleIntegrations"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listDeployKeys: {
-            (params?: RestEndpointMethodTypes["repos"]["listDeployKeys"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listDeployKeys"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the deployment branch policies for an environment.
-         *
-         * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint.
-         */
-        listDeploymentBranchPolicies: {
-            (params?: RestEndpointMethodTypes["repos"]["listDeploymentBranchPolicies"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listDeploymentBranchPolicies"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with pull access can view deployment statuses for a deployment:
-         */
-        listDeploymentStatuses: {
-            (params?: RestEndpointMethodTypes["repos"]["listDeploymentStatuses"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listDeploymentStatuses"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Simple filtering of deployments is available via query parameters:
-         */
-        listDeployments: {
-            (params?: RestEndpointMethodTypes["repos"]["listDeployments"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listDeployments"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access.
-         *
-         * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
-         */
-        listForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["repos"]["listForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists repositories for the specified organization.
-         *
-         * **Note:** In 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](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)."
-         */
-        listForOrg: {
-            (params?: RestEndpointMethodTypes["repos"]["listForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.
-         */
-        listForUser: {
-            (params?: RestEndpointMethodTypes["repos"]["listForUser"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listForks: {
-            (params?: RestEndpointMethodTypes["repos"]["listForks"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listForks"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations.
-         */
-        listInvitations: {
-            (params?: RestEndpointMethodTypes["repos"]["listInvitations"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listInvitations"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * When authenticating as a user, this endpoint will list all currently open repository invitations for that user.
-         */
-        listInvitationsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["repos"]["listInvitationsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listInvitationsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language.
-         */
-        listLanguages: {
-            (params?: RestEndpointMethodTypes["repos"]["listLanguages"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listLanguages"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists builts of a GitHub Pages site.
-         *
-         * A token with the `repo` scope is required. GitHub Apps must have the `pages:read` permission.
-         */
-        listPagesBuilds: {
-            (params?: RestEndpointMethodTypes["repos"]["listPagesBuilds"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listPagesBuilds"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all public repositories in the order that they were created.
-         *
-         * Note:
-         * - For GitHub Enterprise Server, this endpoint will only list repositories available to all users on the enterprise.
-         * - Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of repositories.
-         */
-        listPublic: {
-            (params?: RestEndpointMethodTypes["repos"]["listPublic"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listPublic"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the merged pull request that introduced the commit to the repository. If the commit is not present in the default branch, will only return open pull requests associated with the commit.
-         *
-         * To list the open or merged pull requests associated with a branch, you can set the `commit_sha` parameter to the branch name.
-         */
-        listPullRequestsAssociatedWithCommit: {
-            (params?: RestEndpointMethodTypes["repos"]["listPullRequestsAssociatedWithCommit"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listPullRequestsAssociatedWithCommit"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listReleaseAssets: {
-            (params?: RestEndpointMethodTypes["repos"]["listReleaseAssets"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listReleaseAssets"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://docs.github.com/rest/repos/repos#list-repository-tags).
-         *
-         * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases.
-         */
-        listReleases: {
-            (params?: RestEndpointMethodTypes["repos"]["listReleases"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listReleases"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This returns the tag protection states of a repository.
-         *
-         * This information is only available to repository administrators.
-         */
-        listTagProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["listTagProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listTagProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        listTags: {
-            (params?: RestEndpointMethodTypes["repos"]["listTags"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listTags"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the teams that have access to the specified repository and that are also visible to the authenticated user.
-         *
-         * For a public repository, a team is listed only if that team added the public repository explicitly.
-         *
-         * Personal access tokens require the following scopes:
-         * * `public_repo` to call this endpoint on a public repository
-         * * `repo` to call this endpoint on a private repository (this scope also includes public repositories)
-         *
-         * This endpoint is not compatible with fine-grained personal access tokens.
-         */
-        listTeams: {
-            (params?: RestEndpointMethodTypes["repos"]["listTeams"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listTeams"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a list of webhook deliveries for a webhook configured in a repository.
-         */
-        listWebhookDeliveries: {
-            (params?: RestEndpointMethodTypes["repos"]["listWebhookDeliveries"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listWebhookDeliveries"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists webhooks for a repository. `last response` may return null if there have not been any deliveries within 30 days.
-         */
-        listWebhooks: {
-            (params?: RestEndpointMethodTypes["repos"]["listWebhooks"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["listWebhooks"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        merge: {
-            (params?: RestEndpointMethodTypes["repos"]["merge"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["merge"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Sync a branch of a forked repository to keep it up-to-date with the upstream repository.
-         */
-        mergeUpstream: {
-            (params?: RestEndpointMethodTypes["repos"]["mergeUpstream"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["mergeUpstream"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook.
-         */
-        pingWebhook: {
-            (params?: RestEndpointMethodTypes["repos"]["pingWebhook"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["pingWebhook"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Redeliver a webhook delivery for a webhook configured in a repository.
-         */
-        redeliverWebhookDelivery: {
-            (params?: RestEndpointMethodTypes["repos"]["redeliverWebhookDelivery"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["redeliverWebhookDelivery"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Removes the ability of an app to push to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
-         */
-        removeAppAccessRestrictions: {
-            (params?: RestEndpointMethodTypes["repos"]["removeAppAccessRestrictions"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["removeAppAccessRestrictions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a collaborator from a repository.
-         *
-         * To use this endpoint, the authenticated user must either be an administrator of the repository or target themselves for removal.
-         *
-         * This endpoint also:
-         * - Cancels any outstanding invitations
-         * - Unasigns the user from any issues
-         * - Removes access to organization projects if the user is not an organization member and is not a collaborator on any other organization repositories.
-         * - Unstars the repository
-         * - Updates access permissions to packages
-         *
-         * Removing a user as a collaborator has the following effects on forks:
-         *  - If the user had access to a fork through their membership to this repository, the user will also be removed from the fork.
-         *  - If the user had their own fork of the repository, the fork will be deleted.
-         *  - If the user still has read access to the repository, open pull requests by this user from a fork will be denied.
-         *
-         * **Note**: A user can still have access to the repository through organization permissions like base repository permissions.
-         *
-         * Although the API responds immediately, the additional permission updates might take some extra time to complete in the background.
-         *
-         * For more information on fork permissions, see "[About permissions and visibility of forks](https://docs.github.com/pull-requests/collaborating-with-pull-requests/working-with-forks/about-permissions-and-visibility-of-forks)".
-         */
-        removeCollaborator: {
-            (params?: RestEndpointMethodTypes["repos"]["removeCollaborator"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["removeCollaborator"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         */
-        removeStatusCheckContexts: {
-            (params?: RestEndpointMethodTypes["repos"]["removeStatusCheckContexts"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["removeStatusCheckContexts"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         */
-        removeStatusCheckProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["removeStatusCheckProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["removeStatusCheckProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Removes the ability of a team to push to this branch. You can also remove push access for child teams.
-         */
-        removeTeamAccessRestrictions: {
-            (params?: RestEndpointMethodTypes["repos"]["removeTeamAccessRestrictions"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["removeTeamAccessRestrictions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Removes the ability of a user to push to this branch.
-         *
-         * | Type    | Description                                                                                                                                   |
-         * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
-         * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
-         */
-        removeUserAccessRestrictions: {
-            (params?: RestEndpointMethodTypes["repos"]["removeUserAccessRestrictions"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["removeUserAccessRestrictions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Renames a branch in a repository.
-         *
-         * **Note:** Although the API responds immediately, the branch rename process might take some extra time to complete in the background. You won't be able to push to the old branch name while the rename process is in progress. For more information, see "[Renaming a branch](https://docs.github.com/github/administering-a-repository/renaming-a-branch)".
-         *
-         * The permissions required to use this endpoint depends on whether you are renaming the default branch.
-         *
-         * To rename a non-default branch:
-         *
-         * * Users must have push access.
-         * * GitHub Apps must have the `contents:write` repository permission.
-         *
-         * To rename the default branch:
-         *
-         * * Users must have admin or owner permissions.
-         * * GitHub Apps must have the `administration:write` repository permission.
-         */
-        renameBranch: {
-            (params?: RestEndpointMethodTypes["repos"]["renameBranch"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["renameBranch"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        replaceAllTopics: {
-            (params?: RestEndpointMethodTypes["repos"]["replaceAllTopics"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["replaceAllTopics"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures.
-         *
-         * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes.
-         */
-        requestPagesBuild: {
-            (params?: RestEndpointMethodTypes["repos"]["requestPagesBuild"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["requestPagesBuild"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
-         */
-        setAdminBranchProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["setAdminBranchProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["setAdminBranchProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
-         */
-        setAppAccessRestrictions: {
-            (params?: RestEndpointMethodTypes["repos"]["setAppAccessRestrictions"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["setAppAccessRestrictions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         */
-        setStatusCheckContexts: {
-            (params?: RestEndpointMethodTypes["repos"]["setStatusCheckContexts"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["setStatusCheckContexts"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. Team restrictions include child teams.
-         */
-        setTeamAccessRestrictions: {
-            (params?: RestEndpointMethodTypes["repos"]["setTeamAccessRestrictions"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["setTeamAccessRestrictions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people.
-         *
-         * | Type    | Description                                                                                                                   |
-         * | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
-         * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
-         */
-        setUserAccessRestrictions: {
-            (params?: RestEndpointMethodTypes["repos"]["setUserAccessRestrictions"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["setUserAccessRestrictions"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated.
-         *
-         * **Note**: Previously `/repos/:owner/:repo/hooks/:hook_id/test`
-         */
-        testPushWebhook: {
-            (params?: RestEndpointMethodTypes["repos"]["testPushWebhook"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["testPushWebhook"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://docs.github.com/articles/about-repository-transfers/).
-         * You must use a personal access token (classic) or an OAuth token for this endpoint. An installation access token or a fine-grained personal access token cannot be used because they are only granted access to a single account.
-         */
-        transfer: {
-            (params?: RestEndpointMethodTypes["repos"]["transfer"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["transfer"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note**: To edit a repository's topics, use the [Replace all repository topics](https://docs.github.com/rest/repos/repos#replace-all-repository-topics) endpoint.
-         */
-        update: {
-            (params?: RestEndpointMethodTypes["repos"]["update"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["update"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Protecting a branch requires admin or owner permissions to the repository.
-         *
-         * **Note**: Passing new arrays of `users` and `teams` replaces their previous values.
-         *
-         * **Note**: The list of users, apps, and teams in total is limited to 100 items.
-         */
-        updateBranchProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["updateBranchProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateBranchProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        updateCommitComment: {
-            (params?: RestEndpointMethodTypes["repos"]["updateCommitComment"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateCommitComment"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates a deployment branch or tag policy for an environment.
-         *
-         * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration:write` permission for the repository to use this endpoint.
-         */
-        updateDeploymentBranchPolicy: {
-            (params?: RestEndpointMethodTypes["repos"]["updateDeploymentBranchPolicy"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateDeploymentBranchPolicy"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates information for a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages).
-         *
-         * To use this endpoint, you must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission. A token with the `repo` scope or Pages write permission is required. GitHub Apps must have the `administration:write` and `pages:write` permissions.
-         */
-        updateInformationAboutPagesSite: {
-            (params?: RestEndpointMethodTypes["repos"]["updateInformationAboutPagesSite"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateInformationAboutPagesSite"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        updateInvitation: {
-            (params?: RestEndpointMethodTypes["repos"]["updateInvitation"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateInvitation"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Update a ruleset for an organization.
-         */
-        updateOrgRuleset: {
-            (params?: RestEndpointMethodTypes["repos"]["updateOrgRuleset"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateOrgRuleset"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
-         *
-         * **Note**: Passing new arrays of `users` and `teams` replaces their previous values.
-         */
-        updatePullRequestReviewProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["updatePullRequestReviewProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updatePullRequestReviewProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with push access to the repository can edit a release.
-         */
-        updateRelease: {
-            (params?: RestEndpointMethodTypes["repos"]["updateRelease"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateRelease"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Users with push access to the repository can edit a release asset.
-         */
-        updateReleaseAsset: {
-            (params?: RestEndpointMethodTypes["repos"]["updateReleaseAsset"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateReleaseAsset"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Update a ruleset for a repository.
-         */
-        updateRepoRuleset: {
-            (params?: RestEndpointMethodTypes["repos"]["updateRepoRuleset"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateRepoRuleset"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled.
-         * @deprecated octokit.rest.repos.updateStatusCheckPotection() has been renamed to octokit.rest.repos.updateStatusCheckProtection() (2020-09-17)
-         */
-        updateStatusCheckPotection: {
-            (params?: RestEndpointMethodTypes["repos"]["updateStatusCheckPotection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateStatusCheckPotection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled.
-         */
-        updateStatusCheckProtection: {
-            (params?: RestEndpointMethodTypes["repos"]["updateStatusCheckProtection"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateStatusCheckProtection"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates a webhook configured in a repository. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for a repository](/rest/webhooks/repo-config#update-a-webhook-configuration-for-a-repository)."
-         */
-        updateWebhook: {
-            (params?: RestEndpointMethodTypes["repos"]["updateWebhook"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateWebhook"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * 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](/rest/webhooks/repos#update-a-repository-webhook)."
-         *
-         * Access tokens must have the `write:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:write` permission.
-         */
-        updateWebhookConfigForRepo: {
-            (params?: RestEndpointMethodTypes["repos"]["updateWebhookConfigForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["updateWebhookConfigForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This endpoint makes use of [a Hypermedia relation](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in
-         * the response of the [Create a release endpoint](https://docs.github.com/rest/releases/releases#create-a-release) to upload a release asset.
-         *
-         * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint.
-         *
-         * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example:
-         *
-         * `application/zip`
-         *
-         * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example,
-         * you'll still need to pass your authentication to be able to upload an asset.
-         *
-         * When an upstream failure occurs, you will receive a `502 Bad Gateway` status. This may leave an empty asset with a state of `starter`. It can be safely deleted.
-         *
-         * **Notes:**
-         * *   GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The "[List release assets](https://docs.github.com/rest/releases/assets#list-release-assets)"
-         * endpoint lists the renamed filenames. For more information and help, contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api).
-         * *   To find the `release_id` query the [`GET /repos/{owner}/{repo}/releases/latest` endpoint](https://docs.github.com/rest/releases/releases#get-the-latest-release).
-         * *   If you upload an asset with the same filename as another uploaded asset, you'll receive an error and must delete the old file before you can re-upload the new asset.
-         */
-        uploadReleaseAsset: {
-            (params?: RestEndpointMethodTypes["repos"]["uploadReleaseAsset"]["parameters"]): Promise<RestEndpointMethodTypes["repos"]["uploadReleaseAsset"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    search: {
-        /**
-         * Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-         *
-         * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-         *
-         * For example, if you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery) repository, your query would look something like this:
-         *
-         * `q=addClass+in:file+language:js+repo:jquery/jquery`
-         *
-         * This query searches for the keyword `addClass` within a file's contents. The query limits the search to files where the language is JavaScript in the `jquery/jquery` repository.
-         *
-         * Considerations for code search:
-         *
-         * Due to the complexity of searching code, there are a few restrictions on how searches are performed:
-         *
-         * *   Only the _default branch_ is considered. In most cases, this will be the `master` branch.
-         * *   Only files smaller than 384 KB are searchable.
-         * *   You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing
-         * language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is.
-         *
-         * This endpoint requires you to authenticate and limits you to 10 requests per minute.
-         */
-        code: {
-            (params?: RestEndpointMethodTypes["search"]["code"]["parameters"]): Promise<RestEndpointMethodTypes["search"]["code"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Find commits via various criteria on the default branch (usually `main`). This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-         *
-         * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match
-         * metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-         *
-         * For example, if you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this:
-         *
-         * `q=repo:octocat/Spoon-Knife+css`
-         */
-        commits: {
-            (params?: RestEndpointMethodTypes["search"]["commits"]["parameters"]): Promise<RestEndpointMethodTypes["search"]["commits"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-         *
-         * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted
-         * search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-         *
-         * For example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this.
-         *
-         * `q=windows+label:bug+language:python+state:open&sort=created&order=asc`
-         *
-         * This query searches for the keyword `windows`, within any open issue that is labeled as `bug`. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results.
-         *
-         * **Note:** For requests made by GitHub Apps with a user access token, you can't retrieve a combination of issues and pull requests in a single query. Requests that don't include the `is:issue` or `is:pull-request` qualifier will receive an HTTP `422 Unprocessable Entity` response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the `is` qualifier, see "[Searching only issues or pull requests](https://docs.github.com/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)."
-         */
-        issuesAndPullRequests: {
-            (params?: RestEndpointMethodTypes["search"]["issuesAndPullRequests"]["parameters"]): Promise<RestEndpointMethodTypes["search"]["issuesAndPullRequests"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-         *
-         * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-         *
-         * For example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this:
-         *
-         * `q=bug+defect+enhancement&repository_id=64778136`
-         *
-         * The labels that best match the query appear first in the search results.
-         */
-        labels: {
-            (params?: RestEndpointMethodTypes["search"]["labels"]["parameters"]): Promise<RestEndpointMethodTypes["search"]["labels"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Find repositories via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-         *
-         * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-         *
-         * For example, if you want to search for popular Tetris repositories written in assembly code, your query might look like this:
-         *
-         * `q=tetris+language:assembly&sort=stars&order=desc`
-         *
-         * This query searches for repositories with the word `tetris` in the name, the description, or the README. The results are limited to repositories where the primary language is assembly. The results are sorted by stars in descending order, so that the most popular repositories appear first in the search results.
-         */
-        repos: {
-            (params?: RestEndpointMethodTypes["search"]["repos"]["parameters"]): Promise<RestEndpointMethodTypes["search"]["repos"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). See "[Searching topics](https://docs.github.com/articles/searching-topics/)" for a detailed list of qualifiers.
-         *
-         * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-         *
-         * For example, if you want to search for topics related to Ruby that are featured on https://github.com/topics. Your query might look like this:
-         *
-         * `q=ruby+is:featured`
-         *
-         * This query searches for topics with the keyword `ruby` and limits the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results.
-         */
-        topics: {
-            (params?: RestEndpointMethodTypes["search"]["topics"]["parameters"]): Promise<RestEndpointMethodTypes["search"]["topics"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Find users via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination).
-         *
-         * When searching for users, you can get text match metadata for the issue **login**, public **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/search/search#text-match-metadata).
-         *
-         * For example, if you're looking for a list of popular users, you might try this query:
-         *
-         * `q=tom+repos:%3E42+followers:%3E1000`
-         *
-         * This query searches for users with the name `tom`. The results are restricted to users with more than 42 repositories and over 1,000 followers.
-         *
-         * This endpoint does not accept authentication and will only include publicly visible users. As an alternative, you can use the GraphQL API. The GraphQL API requires authentication and will return private users, including Enterprise Managed Users (EMUs), that you are authorized to view. For more information, see "[GraphQL Queries](https://docs.github.com/graphql/reference/queries#search)."
-         */
-        users: {
-            (params?: RestEndpointMethodTypes["search"]["users"]["parameters"]): Promise<RestEndpointMethodTypes["search"]["users"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    secretScanning: {
-        /**
-         * Gets a single secret scanning alert detected in an eligible repository.
-         * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope.
-         * For public repositories, you may instead use the `public_repo` scope.
-         *
-         * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.
-         */
-        getAlert: {
-            (params?: RestEndpointMethodTypes["secretScanning"]["getAlert"]["parameters"]): Promise<RestEndpointMethodTypes["secretScanning"]["getAlert"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists secret scanning alerts for eligible repositories in an enterprise, from newest to oldest.
-         * To use this endpoint, you must be a member of the enterprise, and you must use an access token with the `repo` scope or `security_events` scope. Alerts are only returned for organizations in the enterprise for which you are an organization owner or a [security manager](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization).
-         */
-        listAlertsForEnterprise: {
-            (params?: RestEndpointMethodTypes["secretScanning"]["listAlertsForEnterprise"]["parameters"]): Promise<RestEndpointMethodTypes["secretScanning"]["listAlertsForEnterprise"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists secret scanning alerts for eligible repositories in an organization, from newest to oldest.
-         * To use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.
-         * For public repositories, you may instead use the `public_repo` scope.
-         *
-         * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.
-         */
-        listAlertsForOrg: {
-            (params?: RestEndpointMethodTypes["secretScanning"]["listAlertsForOrg"]["parameters"]): Promise<RestEndpointMethodTypes["secretScanning"]["listAlertsForOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists secret scanning alerts for an eligible repository, from newest to oldest.
-         * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope.
-         * For public repositories, you may instead use the `public_repo` scope.
-         *
-         * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.
-         */
-        listAlertsForRepo: {
-            (params?: RestEndpointMethodTypes["secretScanning"]["listAlertsForRepo"]["parameters"]): Promise<RestEndpointMethodTypes["secretScanning"]["listAlertsForRepo"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all locations for a given secret scanning alert for an eligible repository.
-         * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope.
-         * For public repositories, you may instead use the `public_repo` scope.
-         *
-         * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint.
-         */
-        listLocationsForAlert: {
-            (params?: RestEndpointMethodTypes["secretScanning"]["listLocationsForAlert"]["parameters"]): Promise<RestEndpointMethodTypes["secretScanning"]["listLocationsForAlert"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Updates the status of a secret scanning alert in an eligible repository.
-         * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope.
-         * For public repositories, you may instead use the `public_repo` scope.
-         *
-         * GitHub Apps must have the `secret_scanning_alerts` write permission to use this endpoint.
-         */
-        updateAlert: {
-            (params?: RestEndpointMethodTypes["secretScanning"]["updateAlert"]["parameters"]): Promise<RestEndpointMethodTypes["secretScanning"]["updateAlert"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    securityAdvisories: {
-        /**
-         * Report a security vulnerability to the maintainers of the repository.
-         * See "[Privately reporting a security vulnerability](https://docs.github.com/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)" for more information about private vulnerability reporting.
-         */
-        createPrivateVulnerabilityReport: {
-            (params?: RestEndpointMethodTypes["securityAdvisories"]["createPrivateVulnerabilityReport"]["parameters"]): Promise<RestEndpointMethodTypes["securityAdvisories"]["createPrivateVulnerabilityReport"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a new repository security advisory.
-         * You must authenticate using an access token with the `repo` scope or `repository_advisories:write` permission to use this endpoint.
-         *
-         * In order to create a draft repository security advisory, you must be a security manager or administrator of that repository.
-         */
-        createRepositoryAdvisory: {
-            (params?: RestEndpointMethodTypes["securityAdvisories"]["createRepositoryAdvisory"]["parameters"]): Promise<RestEndpointMethodTypes["securityAdvisories"]["createRepositoryAdvisory"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * If you want a CVE identification number for the security vulnerability in your project, and don't already have one, you can request a CVE identification number from GitHub. For more information see "[Requesting a CVE identification number](https://docs.github.com/code-security/security-advisories/repository-security-advisories/publishing-a-repository-security-advisory#requesting-a-cve-identification-number-optional)."
-         *
-         * You may request a CVE for public repositories, but cannot do so for private repositories.
-         *
-         * You must authenticate using an access token with the `repo` scope or `repository_advisories:write` permission to use this endpoint.
-         *
-         * In order to request a CVE for a repository security advisory, you must be a security manager or administrator of that repository.
-         */
-        createRepositoryAdvisoryCveRequest: {
-            (params?: RestEndpointMethodTypes["securityAdvisories"]["createRepositoryAdvisoryCveRequest"]["parameters"]): Promise<RestEndpointMethodTypes["securityAdvisories"]["createRepositoryAdvisoryCveRequest"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a global security advisory using its GitHub Security Advisory (GHSA) identifier.
-         */
-        getGlobalAdvisory: {
-            (params?: RestEndpointMethodTypes["securityAdvisories"]["getGlobalAdvisory"]["parameters"]): Promise<RestEndpointMethodTypes["securityAdvisories"]["getGlobalAdvisory"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get a repository security advisory using its GitHub Security Advisory (GHSA) identifier.
-         * You can access any published security advisory on a public repository.
-         * You must authenticate using an access token with the `repo` scope or `repository_advisories:read` permission
-         * in order to get a published security advisory in a private repository, or any unpublished security advisory that you have access to.
-         *
-         * You can access an unpublished security advisory from a repository if you are a security manager or administrator of that repository, or if you are a
-         * collaborator on the security advisory.
-         */
-        getRepositoryAdvisory: {
-            (params?: RestEndpointMethodTypes["securityAdvisories"]["getRepositoryAdvisory"]["parameters"]): Promise<RestEndpointMethodTypes["securityAdvisories"]["getRepositoryAdvisory"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all global security advisories that match the specified parameters. If no other parameters are defined, the request will return only GitHub-reviewed advisories that are not malware.
-         *
-         * By default, all responses will exclude advisories for malware, because malware are not standard vulnerabilities. To list advisories for malware, you must include the `type` parameter in your request, with the value `malware`. For more information about the different types of security advisories, see "[About the GitHub Advisory database](https://docs.github.com/code-security/security-advisories/global-security-advisories/about-the-github-advisory-database#about-types-of-security-advisories)."
-         */
-        listGlobalAdvisories: {
-            (params?: RestEndpointMethodTypes["securityAdvisories"]["listGlobalAdvisories"]["parameters"]): Promise<RestEndpointMethodTypes["securityAdvisories"]["listGlobalAdvisories"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists repository security advisories for an organization.
-         *
-         * To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `repository_advisories:write` permission.
-         */
-        listOrgRepositoryAdvisories: {
-            (params?: RestEndpointMethodTypes["securityAdvisories"]["listOrgRepositoryAdvisories"]["parameters"]): Promise<RestEndpointMethodTypes["securityAdvisories"]["listOrgRepositoryAdvisories"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists security advisories in a repository.
-         * You must authenticate using an access token with the `repo` scope or `repository_advisories:read` permission
-         * in order to get published security advisories in a private repository, or any unpublished security advisories that you have access to.
-         *
-         * You can access unpublished security advisories from a repository if you are a security manager or administrator of that repository, or if you are a collaborator on any security advisory.
-         */
-        listRepositoryAdvisories: {
-            (params?: RestEndpointMethodTypes["securityAdvisories"]["listRepositoryAdvisories"]["parameters"]): Promise<RestEndpointMethodTypes["securityAdvisories"]["listRepositoryAdvisories"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Update a repository security advisory using its GitHub Security Advisory (GHSA) identifier.
-         * You must authenticate using an access token with the `repo` scope or `repository_advisories:write` permission to use this endpoint.
-         *
-         * In order to update any security advisory, you must be a security manager or administrator of that repository,
-         * or a collaborator on the repository security advisory.
-         */
-        updateRepositoryAdvisory: {
-            (params?: RestEndpointMethodTypes["securityAdvisories"]["updateRepositoryAdvisory"]["parameters"]): Promise<RestEndpointMethodTypes["securityAdvisories"]["updateRepositoryAdvisory"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    teams: {
-        /**
-         * Adds an organization member to a team. An authenticated organization owner or team maintainer can add organization members to a team.
-         *
-         * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-         *
-         * An organization owner can add someone who is not part of the team's organization to a team. When an organization owner adds someone to a team who is not an organization member, this endpoint will send an invitation to the person via email. This newly-created membership will be in the "pending" state until the person accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team.
-         *
-         * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/memberships/{username}`.
-         */
-        addOrUpdateMembershipForUserInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["addOrUpdateMembershipForUserInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["addOrUpdateMembershipForUserInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/projects/{project_id}`.
-         */
-        addOrUpdateProjectPermissionsInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["addOrUpdateProjectPermissionsInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["addOrUpdateProjectPermissionsInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * 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 verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.
-         *
-         * For more information about the permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)".
-         */
-        addOrUpdateRepoPermissionsInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["addOrUpdateRepoPermissionsInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["addOrUpdateRepoPermissionsInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects/{project_id}`.
-         */
-        checkPermissionsForProjectInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["checkPermissionsForProjectInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["checkPermissionsForProjectInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * 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.
-         *
-         * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `application/vnd.github.v3.repository+json` accept header.
-         *
-         * If a team doesn't have permission for the repository, you will receive a `404 Not Found` response status.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.
-         */
-        checkPermissionsForRepoInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["checkPermissionsForRepoInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["checkPermissionsForRepoInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://docs.github.com/articles/setting-team-creation-permissions-in-your-organization)."
-         *
-         * When you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see "[About teams](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/about-teams)".
-         */
-        create: {
-            (params?: RestEndpointMethodTypes["teams"]["create"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["create"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         *
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-         *
-         * **Note:** You 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`.
-         */
-        createDiscussionCommentInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["createDiscussionCommentInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["createDiscussionCommentInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         *
-         * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions`.
-         */
-        createDiscussionInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["createDiscussionInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["createDiscussionInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         *
-         * **Note:** You 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}`.
-         */
-        deleteDiscussionCommentInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["deleteDiscussionCommentInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["deleteDiscussionCommentInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`.
-         */
-        deleteDiscussionInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["deleteDiscussionInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["deleteDiscussionInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * To delete a team, the authenticated user must be an organization owner or team maintainer.
-         *
-         * If you are an organization owner, deleting a parent team will delete all of its child teams as well.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`.
-         */
-        deleteInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["deleteInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["deleteInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets a team using the team's `slug`. To create the `slug`, GitHub replaces special characters in the `name` string, changes all words to lowercase, and replaces spaces with a `-` separator. For example, `"My TEam Näme"` would become `my-team-name`.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`.
-         */
-        getByName: {
-            (params?: RestEndpointMethodTypes["teams"]["getByName"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["getByName"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         *
-         * **Note:** You 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}`.
-         */
-        getDiscussionCommentInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["getDiscussionCommentInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["getDiscussionCommentInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`.
-         */
-        getDiscussionInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["getDiscussionInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["getDiscussionInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Team members will include the members of child teams.
-         *
-         * To get a user's membership with a team, the team must be visible to the authenticated user.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/memberships/{username}`.
-         *
-         * **Note:**
-         * The response contains the `state` of the membership and the member's `role`.
-         *
-         * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/teams/teams#create-a-team).
-         */
-        getMembershipForUserInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["getMembershipForUserInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["getMembershipForUserInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all teams in an organization that are visible to the authenticated user.
-         */
-        list: {
-            (params?: RestEndpointMethodTypes["teams"]["list"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["list"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the child teams of the team specified by `{team_slug}`.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`.
-         */
-        listChildInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["listChildInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["listChildInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         *
-         * **Note:** You 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`.
-         */
-        listDiscussionCommentsInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["listDiscussionCommentsInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["listDiscussionCommentsInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions`.
-         */
-        listDiscussionsInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["listDiscussionsInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["listDiscussionsInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List all of the teams across all of the organizations to which the authenticated user belongs. This method requires `user`, `repo`, or `read:org` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/) when authenticating via [OAuth](https://docs.github.com/apps/building-oauth-apps/). When using a fine-grained personal access token, the resource owner of the token [must be a single organization](https://docs.github.com/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#fine-grained-personal-access-tokens), and have at least read-only member organization permissions. The response payload only contains the teams from a single organization when using a fine-grained personal access token.
-         */
-        listForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["teams"]["listForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["listForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Team members will include the members of child teams.
-         *
-         * To list members in a team, the team must be visible to the authenticated user.
-         */
-        listMembersInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["listMembersInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["listMembersInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/invitations`.
-         */
-        listPendingInvitationsInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["listPendingInvitationsInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["listPendingInvitationsInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the organization projects for a team.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects`.
-         */
-        listProjectsInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["listProjectsInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["listProjectsInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists a team's repositories visible to the authenticated user.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`.
-         */
-        listReposInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["listReposInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["listReposInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team.
-         *
-         * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
-         *
-         * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/memberships/{username}`.
-         */
-        removeMembershipForUserInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["removeMembershipForUserInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["removeMembershipForUserInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. This endpoint removes the project from the team, but does not delete the project.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/projects/{project_id}`.
-         */
-        removeProjectInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["removeProjectInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["removeProjectInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.
-         */
-        removeRepoInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["removeRepoInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["removeRepoInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`.
-         */
-        updateDiscussionCommentInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["updateDiscussionCommentInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["updateDiscussionCommentInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`.
-         */
-        updateDiscussionInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["updateDiscussionInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["updateDiscussionInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * To edit a team, the authenticated user must either be an organization owner or a team maintainer.
-         *
-         * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`.
-         */
-        updateInOrg: {
-            (params?: RestEndpointMethodTypes["teams"]["updateInOrg"]["parameters"]): Promise<RestEndpointMethodTypes["teams"]["updateInOrg"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-    users: {
-        /**
-         * This endpoint is accessible with the `user` scope.
-         * @deprecated octokit.rest.users.addEmailForAuthenticated() has been renamed to octokit.rest.users.addEmailForAuthenticatedUser() (2021-10-05)
-         */
-        addEmailForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["addEmailForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["addEmailForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This endpoint is accessible with the `user` scope.
-         */
-        addEmailForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["addEmailForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["addEmailForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Add one or more social accounts to the authenticated user's profile. This endpoint is accessible with the `user` scope.
-         */
-        addSocialAccountForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["addSocialAccountForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["addSocialAccountForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Blocks the given user and returns a 204. If the authenticated user cannot block the given user a 422 is returned.
-         */
-        block: {
-            (params?: RestEndpointMethodTypes["users"]["block"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["block"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Returns a 204 if the given user is blocked by the authenticated user. Returns a 404 if the given user is not blocked by the authenticated user, or if the given user account has been identified as spam by GitHub.
-         */
-        checkBlocked: {
-            (params?: RestEndpointMethodTypes["users"]["checkBlocked"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["checkBlocked"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        checkFollowingForUser: {
-            (params?: RestEndpointMethodTypes["users"]["checkFollowingForUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["checkFollowingForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        checkPersonIsFollowedByAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["checkPersonIsFollowedByAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["checkPersonIsFollowedByAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         * @deprecated octokit.rest.users.createGpgKeyForAuthenticated() has been renamed to octokit.rest.users.createGpgKeyForAuthenticatedUser() (2021-10-05)
-         */
-        createGpgKeyForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["createGpgKeyForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["createGpgKeyForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         */
-        createGpgKeyForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["createGpgKeyForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["createGpgKeyForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         * @deprecated octokit.rest.users.createPublicSshKeyForAuthenticated() has been renamed to octokit.rest.users.createPublicSshKeyForAuthenticatedUser() (2021-10-05)
-         */
-        createPublicSshKeyForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["createPublicSshKeyForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["createPublicSshKeyForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         */
-        createPublicSshKeyForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["createPublicSshKeyForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["createPublicSshKeyForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Creates an SSH signing key for the authenticated user's GitHub account. You must authenticate with Basic Authentication, or you must authenticate with OAuth with at least `write:ssh_signing_key` scope. For more information, see "[Understanding scopes for OAuth apps](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)."
-         */
-        createSshSigningKeyForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["createSshSigningKeyForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["createSshSigningKeyForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This endpoint is accessible with the `user` scope.
-         * @deprecated octokit.rest.users.deleteEmailForAuthenticated() has been renamed to octokit.rest.users.deleteEmailForAuthenticatedUser() (2021-10-05)
-         */
-        deleteEmailForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["deleteEmailForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["deleteEmailForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * This endpoint is accessible with the `user` scope.
-         */
-        deleteEmailForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["deleteEmailForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["deleteEmailForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         * @deprecated octokit.rest.users.deleteGpgKeyForAuthenticated() has been renamed to octokit.rest.users.deleteGpgKeyForAuthenticatedUser() (2021-10-05)
-         */
-        deleteGpgKeyForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["deleteGpgKeyForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["deleteGpgKeyForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         */
-        deleteGpgKeyForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["deleteGpgKeyForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["deleteGpgKeyForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         * @deprecated octokit.rest.users.deletePublicSshKeyForAuthenticated() has been renamed to octokit.rest.users.deletePublicSshKeyForAuthenticatedUser() (2021-10-05)
-         */
-        deletePublicSshKeyForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["deletePublicSshKeyForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["deletePublicSshKeyForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         */
-        deletePublicSshKeyForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["deletePublicSshKeyForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["deletePublicSshKeyForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes one or more social accounts from the authenticated user's profile. This endpoint is accessible with the `user` scope.
-         */
-        deleteSocialAccountForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["deleteSocialAccountForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["deleteSocialAccountForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Deletes an SSH signing key from the authenticated user's GitHub account. You must authenticate with Basic Authentication, or you must authenticate with OAuth with at least `admin:ssh_signing_key` scope. For more information, see "[Understanding scopes for OAuth apps](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)."
-         */
-        deleteSshSigningKeyForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["deleteSshSigningKeyForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["deleteSshSigningKeyForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)."
-         *
-         * Following a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope.
-         */
-        follow: {
-            (params?: RestEndpointMethodTypes["users"]["follow"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["follow"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * If the authenticated user is authenticated with an OAuth token with the `user` scope, then the response lists public and private profile information.
-         *
-         * If the authenticated user is authenticated through OAuth without the `user` scope, then the response lists only public profile information.
-         */
-        getAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["getAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["getAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Provides publicly available information about someone with a GitHub account.
-         *
-         * GitHub Apps with the `Plan` user permission can use this endpoint to retrieve information about a user's GitHub plan. The GitHub App must be authenticated as a user. See "[Identifying and authorizing users for GitHub Apps](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)" for details about authentication. For an example response, see 'Response with GitHub plan information' below"
-         *
-         * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be “public” which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/overview/resources-in-the-rest-api#authentication).
-         *
-         * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see "[Emails API](https://docs.github.com/rest/users/emails)".
-         */
-        getByUsername: {
-            (params?: RestEndpointMethodTypes["users"]["getByUsername"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["getByUsername"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Provides hovercard information when authenticated through basic auth or OAuth with the `repo` scope. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations.
-         *
-         * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository via cURL, it would look like this:
-         *
-         * ```shell
-         *  curl -u username:token
-         *   https://api.github.com/users/octocat/hovercard?subject_type=repository&subject_id=1300192
-         * ```
-         */
-        getContextForUser: {
-            (params?: RestEndpointMethodTypes["users"]["getContextForUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["getContextForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         * @deprecated octokit.rest.users.getGpgKeyForAuthenticated() has been renamed to octokit.rest.users.getGpgKeyForAuthenticatedUser() (2021-10-05)
-         */
-        getGpgKeyForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["getGpgKeyForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["getGpgKeyForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         */
-        getGpgKeyForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["getGpgKeyForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["getGpgKeyForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         * @deprecated octokit.rest.users.getPublicSshKeyForAuthenticated() has been renamed to octokit.rest.users.getPublicSshKeyForAuthenticatedUser() (2021-10-05)
-         */
-        getPublicSshKeyForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["getPublicSshKeyForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["getPublicSshKeyForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         */
-        getPublicSshKeyForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["getPublicSshKeyForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["getPublicSshKeyForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Gets extended details for an SSH signing key. You must authenticate with Basic Authentication, or you must authenticate with OAuth with at least `read:ssh_signing_key` scope. For more information, see "[Understanding scopes for OAuth apps](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)."
-         */
-        getSshSigningKeyForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["getSshSigningKeyForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["getSshSigningKeyForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts.
-         *
-         * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers) to get the URL for the next page of users.
-         */
-        list: {
-            (params?: RestEndpointMethodTypes["users"]["list"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["list"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the users you've blocked on your personal account.
-         * @deprecated octokit.rest.users.listBlockedByAuthenticated() has been renamed to octokit.rest.users.listBlockedByAuthenticatedUser() (2021-10-05)
-         */
-        listBlockedByAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["listBlockedByAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listBlockedByAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * List the users you've blocked on your personal account.
-         */
-        listBlockedByAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["listBlockedByAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listBlockedByAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope.
-         * @deprecated octokit.rest.users.listEmailsForAuthenticated() has been renamed to octokit.rest.users.listEmailsForAuthenticatedUser() (2021-10-05)
-         */
-        listEmailsForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["listEmailsForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listEmailsForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope.
-         */
-        listEmailsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["listEmailsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listEmailsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the people who the authenticated user follows.
-         * @deprecated octokit.rest.users.listFollowedByAuthenticated() has been renamed to octokit.rest.users.listFollowedByAuthenticatedUser() (2021-10-05)
-         */
-        listFollowedByAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["listFollowedByAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listFollowedByAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the people who the authenticated user follows.
-         */
-        listFollowedByAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["listFollowedByAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listFollowedByAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the people following the authenticated user.
-         */
-        listFollowersForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["listFollowersForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listFollowersForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the people following the specified user.
-         */
-        listFollowersForUser: {
-            (params?: RestEndpointMethodTypes["users"]["listFollowersForUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listFollowersForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the people who the specified user follows.
-         */
-        listFollowingForUser: {
-            (params?: RestEndpointMethodTypes["users"]["listFollowingForUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listFollowingForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         * @deprecated octokit.rest.users.listGpgKeysForAuthenticated() has been renamed to octokit.rest.users.listGpgKeysForAuthenticatedUser() (2021-10-05)
-         */
-        listGpgKeysForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["listGpgKeysForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listGpgKeysForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         */
-        listGpgKeysForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["listGpgKeysForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listGpgKeysForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the GPG keys for a user. This information is accessible by anyone.
-         */
-        listGpgKeysForUser: {
-            (params?: RestEndpointMethodTypes["users"]["listGpgKeysForUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listGpgKeysForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists your publicly visible email address, which you can set with the [Set primary email visibility for the authenticated user](https://docs.github.com/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user) endpoint. This endpoint is accessible with the `user:email` scope.
-         * @deprecated octokit.rest.users.listPublicEmailsForAuthenticated() has been renamed to octokit.rest.users.listPublicEmailsForAuthenticatedUser() (2021-10-05)
-         */
-        listPublicEmailsForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["listPublicEmailsForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listPublicEmailsForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists your publicly visible email address, which you can set with the [Set primary email visibility for the authenticated user](https://docs.github.com/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user) endpoint. This endpoint is accessible with the `user:email` scope.
-         */
-        listPublicEmailsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["listPublicEmailsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listPublicEmailsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the _verified_ public SSH keys for a user. This is accessible by anyone.
-         */
-        listPublicKeysForUser: {
-            (params?: RestEndpointMethodTypes["users"]["listPublicKeysForUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listPublicKeysForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         * @deprecated octokit.rest.users.listPublicSshKeysForAuthenticated() has been renamed to octokit.rest.users.listPublicSshKeysForAuthenticatedUser() (2021-10-05)
-         */
-        listPublicSshKeysForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["listPublicSshKeysForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listPublicSshKeysForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
-         */
-        listPublicSshKeysForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["listPublicSshKeysForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listPublicSshKeysForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists all of your social accounts.
-         */
-        listSocialAccountsForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["listSocialAccountsForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listSocialAccountsForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists social media accounts for a user. This endpoint is accessible by anyone.
-         */
-        listSocialAccountsForUser: {
-            (params?: RestEndpointMethodTypes["users"]["listSocialAccountsForUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listSocialAccountsForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the SSH signing keys for the authenticated user's GitHub account. You must authenticate with Basic Authentication, or you must authenticate with OAuth with at least `read:ssh_signing_key` scope. For more information, see "[Understanding scopes for OAuth apps](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)."
-         */
-        listSshSigningKeysForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["listSshSigningKeysForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listSshSigningKeysForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Lists the SSH signing keys for a user. This operation is accessible by anyone.
-         */
-        listSshSigningKeysForUser: {
-            (params?: RestEndpointMethodTypes["users"]["listSshSigningKeysForUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["listSshSigningKeysForUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Sets the visibility for your primary email addresses.
-         * @deprecated octokit.rest.users.setPrimaryEmailVisibilityForAuthenticated() has been renamed to octokit.rest.users.setPrimaryEmailVisibilityForAuthenticatedUser() (2021-10-05)
-         */
-        setPrimaryEmailVisibilityForAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["setPrimaryEmailVisibilityForAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["setPrimaryEmailVisibilityForAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Sets the visibility for your primary email addresses.
-         */
-        setPrimaryEmailVisibilityForAuthenticatedUser: {
-            (params?: RestEndpointMethodTypes["users"]["setPrimaryEmailVisibilityForAuthenticatedUser"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["setPrimaryEmailVisibilityForAuthenticatedUser"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Unblocks the given user and returns a 204.
-         */
-        unblock: {
-            (params?: RestEndpointMethodTypes["users"]["unblock"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["unblock"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * Unfollowing a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope.
-         */
-        unfollow: {
-            (params?: RestEndpointMethodTypes["users"]["unfollow"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["unfollow"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-        /**
-         * **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API.
-         */
-        updateAuthenticated: {
-            (params?: RestEndpointMethodTypes["users"]["updateAuthenticated"]["parameters"]): Promise<RestEndpointMethodTypes["users"]["updateAuthenticated"]["response"]>;
-            defaults: RequestInterface["defaults"];
-            endpoint: EndpointInterface<{
-                url: string;
-            }>;
-        };
-    };
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts
deleted file mode 100644
index a3605e1..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts
+++ /dev/null
@@ -1,3645 +0,0 @@
-import type { Endpoints, RequestParameters } from "@octokit/types";
-export type RestEndpointMethodTypes = {
-    actions: {
-        addCustomLabelsToSelfHostedRunnerForOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/actions/runners/{runner_id}/labels"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/actions/runners/{runner_id}/labels"]["response"];
-        };
-        addCustomLabelsToSelfHostedRunnerForRepo: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["response"];
-        };
-        addSelectedRepoToOrgSecret: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"]["response"];
-        };
-        addSelectedRepoToOrgVariable: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"]["response"];
-        };
-        approveWorkflowRun: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"]["response"];
-        };
-        cancelWorkflowRun: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"]["response"];
-        };
-        createEnvironmentVariable: {
-            parameters: RequestParameters & Endpoints["POST /repositories/{repository_id}/environments/{environment_name}/variables"]["parameters"];
-            response: Endpoints["POST /repositories/{repository_id}/environments/{environment_name}/variables"]["response"];
-        };
-        createOrUpdateEnvironmentSecret: {
-            parameters: RequestParameters & Endpoints["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"]["response"];
-        };
-        createOrUpdateOrgSecret: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}"]["response"];
-        };
-        createOrUpdateRepoSecret: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["response"];
-        };
-        createOrgVariable: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/actions/variables"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/actions/variables"]["response"];
-        };
-        createRegistrationTokenForOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/actions/runners/registration-token"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/actions/runners/registration-token"]["response"];
-        };
-        createRegistrationTokenForRepo: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runners/registration-token"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/registration-token"]["response"];
-        };
-        createRemoveTokenForOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/actions/runners/remove-token"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/actions/runners/remove-token"]["response"];
-        };
-        createRemoveTokenForRepo: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runners/remove-token"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/remove-token"]["response"];
-        };
-        createRepoVariable: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/variables"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/variables"]["response"];
-        };
-        createWorkflowDispatch: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"]["response"];
-        };
-        deleteActionsCacheById: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"]["response"];
-        };
-        deleteActionsCacheByKey: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"]["response"];
-        };
-        deleteArtifact: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"]["response"];
-        };
-        deleteEnvironmentSecret: {
-            parameters: RequestParameters & Endpoints["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"]["response"];
-        };
-        deleteEnvironmentVariable: {
-            parameters: RequestParameters & Endpoints["DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}"]["parameters"];
-            response: Endpoints["DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}"]["response"];
-        };
-        deleteOrgSecret: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/actions/secrets/{secret_name}"]["response"];
-        };
-        deleteOrgVariable: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/variables/{name}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/actions/variables/{name}"]["response"];
-        };
-        deleteRepoSecret: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["response"];
-        };
-        deleteRepoVariable: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/variables/{name}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/actions/variables/{name}"]["response"];
-        };
-        deleteSelfHostedRunnerFromOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}"]["response"];
-        };
-        deleteSelfHostedRunnerFromRepo: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"]["response"];
-        };
-        deleteWorkflowRun: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"]["response"];
-        };
-        deleteWorkflowRunLogs: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"]["response"];
-        };
-        disableSelectedRepositoryGithubActionsOrganization: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"]["response"];
-        };
-        disableWorkflow: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"]["response"];
-        };
-        downloadArtifact: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"]["response"];
-        };
-        downloadJobLogsForWorkflowRun: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"]["response"];
-        };
-        downloadWorkflowRunAttemptLogs: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"]["response"];
-        };
-        downloadWorkflowRunLogs: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"]["response"];
-        };
-        enableSelectedRepositoryGithubActionsOrganization: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"]["response"];
-        };
-        enableWorkflow: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"]["response"];
-        };
-        forceCancelWorkflowRun: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"]["response"];
-        };
-        generateRunnerJitconfigForOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/actions/runners/generate-jitconfig"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/actions/runners/generate-jitconfig"]["response"];
-        };
-        generateRunnerJitconfigForRepo: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"]["response"];
-        };
-        getActionsCacheList: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["response"];
-        };
-        getActionsCacheUsage: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/cache/usage"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/cache/usage"]["response"];
-        };
-        getActionsCacheUsageByRepoForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["response"];
-        };
-        getActionsCacheUsageForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/cache/usage"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/cache/usage"]["response"];
-        };
-        getAllowedActionsOrganization: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/permissions/selected-actions"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/permissions/selected-actions"]["response"];
-        };
-        getAllowedActionsRepository: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"]["response"];
-        };
-        getArtifact: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"]["response"];
-        };
-        getEnvironmentPublicKey: {
-            parameters: RequestParameters & Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"]["parameters"];
-            response: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"]["response"];
-        };
-        getEnvironmentSecret: {
-            parameters: RequestParameters & Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"]["response"];
-        };
-        getEnvironmentVariable: {
-            parameters: RequestParameters & Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}"]["parameters"];
-            response: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}"]["response"];
-        };
-        getGithubActionsDefaultWorkflowPermissionsOrganization: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/permissions/workflow"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/permissions/workflow"]["response"];
-        };
-        getGithubActionsDefaultWorkflowPermissionsRepository: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/permissions/workflow"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions/workflow"]["response"];
-        };
-        getGithubActionsPermissionsOrganization: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/permissions"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/permissions"]["response"];
-        };
-        getGithubActionsPermissionsRepository: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/permissions"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions"]["response"];
-        };
-        getJobForWorkflowRun: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"]["response"];
-        };
-        getOrgPublicKey: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/secrets/public-key"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/secrets/public-key"]["response"];
-        };
-        getOrgSecret: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}"]["response"];
-        };
-        getOrgVariable: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/variables/{name}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/variables/{name}"]["response"];
-        };
-        getPendingDeploymentsForRun: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"]["response"];
-        };
-        getRepoPermissions: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/permissions"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions"]["response"];
-        };
-        getRepoPublicKey: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/secrets/public-key"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets/public-key"]["response"];
-        };
-        getRepoSecret: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["response"];
-        };
-        getRepoVariable: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/variables/{name}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/variables/{name}"]["response"];
-        };
-        getReviewsForRun: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"]["response"];
-        };
-        getSelfHostedRunnerForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/runners/{runner_id}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/runners/{runner_id}"]["response"];
-        };
-        getSelfHostedRunnerForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"]["response"];
-        };
-        getWorkflow: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"]["response"];
-        };
-        getWorkflowAccessToRepository: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/permissions/access"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions/access"]["response"];
-        };
-        getWorkflowRun: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}"]["response"];
-        };
-        getWorkflowRunAttempt: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"]["response"];
-        };
-        getWorkflowRunUsage: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"]["response"];
-        };
-        getWorkflowUsage: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"]["response"];
-        };
-        listArtifactsForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"];
-        };
-        listEnvironmentSecrets: {
-            parameters: RequestParameters & Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets"]["parameters"];
-            response: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets"]["response"];
-        };
-        listEnvironmentVariables: {
-            parameters: RequestParameters & Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/variables"]["parameters"];
-            response: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/variables"]["response"];
-        };
-        listJobsForWorkflowRun: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"];
-        };
-        listJobsForWorkflowRunAttempt: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["response"];
-        };
-        listLabelsForSelfHostedRunnerForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/runners/{runner_id}/labels"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/runners/{runner_id}/labels"]["response"];
-        };
-        listLabelsForSelfHostedRunnerForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["response"];
-        };
-        listOrgSecrets: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/secrets"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/secrets"]["response"];
-        };
-        listOrgVariables: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/variables"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/variables"]["response"];
-        };
-        listRepoOrganizationSecrets: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["response"];
-        };
-        listRepoOrganizationVariables: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["response"];
-        };
-        listRepoSecrets: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"];
-        };
-        listRepoVariables: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["response"];
-        };
-        listRepoWorkflows: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"];
-        };
-        listRunnerApplicationsForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/runners/downloads"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/runners/downloads"]["response"];
-        };
-        listRunnerApplicationsForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runners/downloads"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runners/downloads"]["response"];
-        };
-        listSelectedReposForOrgSecret: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"];
-        };
-        listSelectedReposForOrgVariable: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["response"];
-        };
-        listSelectedRepositoriesEnabledGithubActionsOrganization: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"];
-        };
-        listSelfHostedRunnersForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/actions/runners"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/actions/runners"]["response"];
-        };
-        listSelfHostedRunnersForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"];
-        };
-        listWorkflowRunArtifacts: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"];
-        };
-        listWorkflowRuns: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"];
-        };
-        listWorkflowRunsForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"];
-        };
-        reRunJobForWorkflowRun: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"]["response"];
-        };
-        reRunWorkflow: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"]["response"];
-        };
-        reRunWorkflowFailedJobs: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"]["response"];
-        };
-        removeAllCustomLabelsFromSelfHostedRunnerForOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"]["response"];
-        };
-        removeAllCustomLabelsFromSelfHostedRunnerForRepo: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["response"];
-        };
-        removeCustomLabelFromSelfHostedRunnerForOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"]["response"];
-        };
-        removeCustomLabelFromSelfHostedRunnerForRepo: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"]["response"];
-        };
-        removeSelectedRepoFromOrgSecret: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"]["response"];
-        };
-        removeSelectedRepoFromOrgVariable: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"]["response"];
-        };
-        reviewCustomGatesForRun: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"]["response"];
-        };
-        reviewPendingDeploymentsForRun: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"]["response"];
-        };
-        setAllowedActionsOrganization: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/permissions/selected-actions"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/actions/permissions/selected-actions"]["response"];
-        };
-        setAllowedActionsRepository: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"]["response"];
-        };
-        setCustomLabelsForSelfHostedRunnerForOrg: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/runners/{runner_id}/labels"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/actions/runners/{runner_id}/labels"]["response"];
-        };
-        setCustomLabelsForSelfHostedRunnerForRepo: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["response"];
-        };
-        setGithubActionsDefaultWorkflowPermissionsOrganization: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/permissions/workflow"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/actions/permissions/workflow"]["response"];
-        };
-        setGithubActionsDefaultWorkflowPermissionsRepository: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/workflow"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/workflow"]["response"];
-        };
-        setGithubActionsPermissionsOrganization: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/permissions"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/actions/permissions"]["response"];
-        };
-        setGithubActionsPermissionsRepository: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/permissions"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions"]["response"];
-        };
-        setSelectedReposForOrgSecret: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"];
-        };
-        setSelectedReposForOrgVariable: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/variables/{name}/repositories"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/actions/variables/{name}/repositories"]["response"];
-        };
-        setSelectedRepositoriesEnabledGithubActionsOrganization: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/actions/permissions/repositories"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/actions/permissions/repositories"]["response"];
-        };
-        setWorkflowAccessToRepository: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/access"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/access"]["response"];
-        };
-        updateEnvironmentVariable: {
-            parameters: RequestParameters & Endpoints["PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}"]["parameters"];
-            response: Endpoints["PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}"]["response"];
-        };
-        updateOrgVariable: {
-            parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/actions/variables/{name}"]["parameters"];
-            response: Endpoints["PATCH /orgs/{org}/actions/variables/{name}"]["response"];
-        };
-        updateRepoVariable: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/actions/variables/{name}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/actions/variables/{name}"]["response"];
-        };
-    };
-    activity: {
-        checkRepoIsStarredByAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/starred/{owner}/{repo}"]["parameters"];
-            response: Endpoints["GET /user/starred/{owner}/{repo}"]["response"];
-        };
-        deleteRepoSubscription: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/subscription"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/subscription"]["response"];
-        };
-        deleteThreadSubscription: {
-            parameters: RequestParameters & Endpoints["DELETE /notifications/threads/{thread_id}/subscription"]["parameters"];
-            response: Endpoints["DELETE /notifications/threads/{thread_id}/subscription"]["response"];
-        };
-        getFeeds: {
-            parameters: RequestParameters & Endpoints["GET /feeds"]["parameters"];
-            response: Endpoints["GET /feeds"]["response"];
-        };
-        getRepoSubscription: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/subscription"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/subscription"]["response"];
-        };
-        getThread: {
-            parameters: RequestParameters & Endpoints["GET /notifications/threads/{thread_id}"]["parameters"];
-            response: Endpoints["GET /notifications/threads/{thread_id}"]["response"];
-        };
-        getThreadSubscriptionForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /notifications/threads/{thread_id}/subscription"]["parameters"];
-            response: Endpoints["GET /notifications/threads/{thread_id}/subscription"]["response"];
-        };
-        listEventsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/events"]["parameters"];
-            response: Endpoints["GET /users/{username}/events"]["response"];
-        };
-        listNotificationsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /notifications"]["parameters"];
-            response: Endpoints["GET /notifications"]["response"];
-        };
-        listOrgEventsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/events/orgs/{org}"]["parameters"];
-            response: Endpoints["GET /users/{username}/events/orgs/{org}"]["response"];
-        };
-        listPublicEvents: {
-            parameters: RequestParameters & Endpoints["GET /events"]["parameters"];
-            response: Endpoints["GET /events"]["response"];
-        };
-        listPublicEventsForRepoNetwork: {
-            parameters: RequestParameters & Endpoints["GET /networks/{owner}/{repo}/events"]["parameters"];
-            response: Endpoints["GET /networks/{owner}/{repo}/events"]["response"];
-        };
-        listPublicEventsForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/events/public"]["parameters"];
-            response: Endpoints["GET /users/{username}/events/public"]["response"];
-        };
-        listPublicOrgEvents: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/events"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/events"]["response"];
-        };
-        listReceivedEventsForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/received_events"]["parameters"];
-            response: Endpoints["GET /users/{username}/received_events"]["response"];
-        };
-        listReceivedPublicEventsForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/received_events/public"]["parameters"];
-            response: Endpoints["GET /users/{username}/received_events/public"]["response"];
-        };
-        listRepoEvents: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/events"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/events"]["response"];
-        };
-        listRepoNotificationsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/notifications"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/notifications"]["response"];
-        };
-        listReposStarredByAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/starred"]["parameters"];
-            response: Endpoints["GET /user/starred"]["response"];
-        };
-        listReposStarredByUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/starred"]["parameters"];
-            response: Endpoints["GET /users/{username}/starred"]["response"];
-        };
-        listReposWatchedByUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/subscriptions"]["parameters"];
-            response: Endpoints["GET /users/{username}/subscriptions"]["response"];
-        };
-        listStargazersForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/stargazers"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["response"];
-        };
-        listWatchedReposForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/subscriptions"]["parameters"];
-            response: Endpoints["GET /user/subscriptions"]["response"];
-        };
-        listWatchersForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/subscribers"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["response"];
-        };
-        markNotificationsAsRead: {
-            parameters: RequestParameters & Endpoints["PUT /notifications"]["parameters"];
-            response: Endpoints["PUT /notifications"]["response"];
-        };
-        markRepoNotificationsAsRead: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/notifications"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/notifications"]["response"];
-        };
-        markThreadAsRead: {
-            parameters: RequestParameters & Endpoints["PATCH /notifications/threads/{thread_id}"]["parameters"];
-            response: Endpoints["PATCH /notifications/threads/{thread_id}"]["response"];
-        };
-        setRepoSubscription: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/subscription"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/subscription"]["response"];
-        };
-        setThreadSubscription: {
-            parameters: RequestParameters & Endpoints["PUT /notifications/threads/{thread_id}/subscription"]["parameters"];
-            response: Endpoints["PUT /notifications/threads/{thread_id}/subscription"]["response"];
-        };
-        starRepoForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["PUT /user/starred/{owner}/{repo}"]["parameters"];
-            response: Endpoints["PUT /user/starred/{owner}/{repo}"]["response"];
-        };
-        unstarRepoForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/starred/{owner}/{repo}"]["parameters"];
-            response: Endpoints["DELETE /user/starred/{owner}/{repo}"]["response"];
-        };
-    };
-    apps: {
-        addRepoToInstallation: {
-            parameters: RequestParameters & Endpoints["PUT /user/installations/{installation_id}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["PUT /user/installations/{installation_id}/repositories/{repository_id}"]["response"];
-        };
-        addRepoToInstallationForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["PUT /user/installations/{installation_id}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["PUT /user/installations/{installation_id}/repositories/{repository_id}"]["response"];
-        };
-        checkToken: {
-            parameters: RequestParameters & Endpoints["POST /applications/{client_id}/token"]["parameters"];
-            response: Endpoints["POST /applications/{client_id}/token"]["response"];
-        };
-        createFromManifest: {
-            parameters: RequestParameters & Endpoints["POST /app-manifests/{code}/conversions"]["parameters"];
-            response: Endpoints["POST /app-manifests/{code}/conversions"]["response"];
-        };
-        createInstallationAccessToken: {
-            parameters: RequestParameters & Endpoints["POST /app/installations/{installation_id}/access_tokens"]["parameters"];
-            response: Endpoints["POST /app/installations/{installation_id}/access_tokens"]["response"];
-        };
-        deleteAuthorization: {
-            parameters: RequestParameters & Endpoints["DELETE /applications/{client_id}/grant"]["parameters"];
-            response: Endpoints["DELETE /applications/{client_id}/grant"]["response"];
-        };
-        deleteInstallation: {
-            parameters: RequestParameters & Endpoints["DELETE /app/installations/{installation_id}"]["parameters"];
-            response: Endpoints["DELETE /app/installations/{installation_id}"]["response"];
-        };
-        deleteToken: {
-            parameters: RequestParameters & Endpoints["DELETE /applications/{client_id}/token"]["parameters"];
-            response: Endpoints["DELETE /applications/{client_id}/token"]["response"];
-        };
-        getAuthenticated: {
-            parameters: RequestParameters & Endpoints["GET /app"]["parameters"];
-            response: Endpoints["GET /app"]["response"];
-        };
-        getBySlug: {
-            parameters: RequestParameters & Endpoints["GET /apps/{app_slug}"]["parameters"];
-            response: Endpoints["GET /apps/{app_slug}"]["response"];
-        };
-        getInstallation: {
-            parameters: RequestParameters & Endpoints["GET /app/installations/{installation_id}"]["parameters"];
-            response: Endpoints["GET /app/installations/{installation_id}"]["response"];
-        };
-        getOrgInstallation: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/installation"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/installation"]["response"];
-        };
-        getRepoInstallation: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/installation"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/installation"]["response"];
-        };
-        getSubscriptionPlanForAccount: {
-            parameters: RequestParameters & Endpoints["GET /marketplace_listing/accounts/{account_id}"]["parameters"];
-            response: Endpoints["GET /marketplace_listing/accounts/{account_id}"]["response"];
-        };
-        getSubscriptionPlanForAccountStubbed: {
-            parameters: RequestParameters & Endpoints["GET /marketplace_listing/stubbed/accounts/{account_id}"]["parameters"];
-            response: Endpoints["GET /marketplace_listing/stubbed/accounts/{account_id}"]["response"];
-        };
-        getUserInstallation: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/installation"]["parameters"];
-            response: Endpoints["GET /users/{username}/installation"]["response"];
-        };
-        getWebhookConfigForApp: {
-            parameters: RequestParameters & Endpoints["GET /app/hook/config"]["parameters"];
-            response: Endpoints["GET /app/hook/config"]["response"];
-        };
-        getWebhookDelivery: {
-            parameters: RequestParameters & Endpoints["GET /app/hook/deliveries/{delivery_id}"]["parameters"];
-            response: Endpoints["GET /app/hook/deliveries/{delivery_id}"]["response"];
-        };
-        listAccountsForPlan: {
-            parameters: RequestParameters & Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["parameters"];
-            response: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["response"];
-        };
-        listAccountsForPlanStubbed: {
-            parameters: RequestParameters & Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["parameters"];
-            response: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["response"];
-        };
-        listInstallationReposForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/installations/{installation_id}/repositories"]["parameters"];
-            response: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"];
-        };
-        listInstallationRequestsForAuthenticatedApp: {
-            parameters: RequestParameters & Endpoints["GET /app/installation-requests"]["parameters"];
-            response: Endpoints["GET /app/installation-requests"]["response"];
-        };
-        listInstallations: {
-            parameters: RequestParameters & Endpoints["GET /app/installations"]["parameters"];
-            response: Endpoints["GET /app/installations"]["response"];
-        };
-        listInstallationsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/installations"]["parameters"];
-            response: Endpoints["GET /user/installations"]["response"];
-        };
-        listPlans: {
-            parameters: RequestParameters & Endpoints["GET /marketplace_listing/plans"]["parameters"];
-            response: Endpoints["GET /marketplace_listing/plans"]["response"];
-        };
-        listPlansStubbed: {
-            parameters: RequestParameters & Endpoints["GET /marketplace_listing/stubbed/plans"]["parameters"];
-            response: Endpoints["GET /marketplace_listing/stubbed/plans"]["response"];
-        };
-        listReposAccessibleToInstallation: {
-            parameters: RequestParameters & Endpoints["GET /installation/repositories"]["parameters"];
-            response: Endpoints["GET /installation/repositories"]["response"];
-        };
-        listSubscriptionsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/marketplace_purchases"]["parameters"];
-            response: Endpoints["GET /user/marketplace_purchases"]["response"];
-        };
-        listSubscriptionsForAuthenticatedUserStubbed: {
-            parameters: RequestParameters & Endpoints["GET /user/marketplace_purchases/stubbed"]["parameters"];
-            response: Endpoints["GET /user/marketplace_purchases/stubbed"]["response"];
-        };
-        listWebhookDeliveries: {
-            parameters: RequestParameters & Endpoints["GET /app/hook/deliveries"]["parameters"];
-            response: Endpoints["GET /app/hook/deliveries"]["response"];
-        };
-        redeliverWebhookDelivery: {
-            parameters: RequestParameters & Endpoints["POST /app/hook/deliveries/{delivery_id}/attempts"]["parameters"];
-            response: Endpoints["POST /app/hook/deliveries/{delivery_id}/attempts"]["response"];
-        };
-        removeRepoFromInstallation: {
-            parameters: RequestParameters & Endpoints["DELETE /user/installations/{installation_id}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["DELETE /user/installations/{installation_id}/repositories/{repository_id}"]["response"];
-        };
-        removeRepoFromInstallationForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/installations/{installation_id}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["DELETE /user/installations/{installation_id}/repositories/{repository_id}"]["response"];
-        };
-        resetToken: {
-            parameters: RequestParameters & Endpoints["PATCH /applications/{client_id}/token"]["parameters"];
-            response: Endpoints["PATCH /applications/{client_id}/token"]["response"];
-        };
-        revokeInstallationAccessToken: {
-            parameters: RequestParameters & Endpoints["DELETE /installation/token"]["parameters"];
-            response: Endpoints["DELETE /installation/token"]["response"];
-        };
-        scopeToken: {
-            parameters: RequestParameters & Endpoints["POST /applications/{client_id}/token/scoped"]["parameters"];
-            response: Endpoints["POST /applications/{client_id}/token/scoped"]["response"];
-        };
-        suspendInstallation: {
-            parameters: RequestParameters & Endpoints["PUT /app/installations/{installation_id}/suspended"]["parameters"];
-            response: Endpoints["PUT /app/installations/{installation_id}/suspended"]["response"];
-        };
-        unsuspendInstallation: {
-            parameters: RequestParameters & Endpoints["DELETE /app/installations/{installation_id}/suspended"]["parameters"];
-            response: Endpoints["DELETE /app/installations/{installation_id}/suspended"]["response"];
-        };
-        updateWebhookConfigForApp: {
-            parameters: RequestParameters & Endpoints["PATCH /app/hook/config"]["parameters"];
-            response: Endpoints["PATCH /app/hook/config"]["response"];
-        };
-    };
-    billing: {
-        getGithubActionsBillingOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/settings/billing/actions"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/settings/billing/actions"]["response"];
-        };
-        getGithubActionsBillingUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/settings/billing/actions"]["parameters"];
-            response: Endpoints["GET /users/{username}/settings/billing/actions"]["response"];
-        };
-        getGithubPackagesBillingOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/settings/billing/packages"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/settings/billing/packages"]["response"];
-        };
-        getGithubPackagesBillingUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/settings/billing/packages"]["parameters"];
-            response: Endpoints["GET /users/{username}/settings/billing/packages"]["response"];
-        };
-        getSharedStorageBillingOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/settings/billing/shared-storage"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/settings/billing/shared-storage"]["response"];
-        };
-        getSharedStorageBillingUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/settings/billing/shared-storage"]["parameters"];
-            response: Endpoints["GET /users/{username}/settings/billing/shared-storage"]["response"];
-        };
-    };
-    checks: {
-        create: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/check-runs"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/check-runs"]["response"];
-        };
-        createSuite: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/check-suites"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/check-suites"]["response"];
-        };
-        get: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"]["response"];
-        };
-        getSuite: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"]["response"];
-        };
-        listAnnotations: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["response"];
-        };
-        listForRef: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"];
-        };
-        listForSuite: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"];
-        };
-        listSuitesForRef: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"];
-        };
-        rerequestRun: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"]["response"];
-        };
-        rerequestSuite: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"]["response"];
-        };
-        setSuitesPreferences: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/check-suites/preferences"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/check-suites/preferences"]["response"];
-        };
-        update: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]["response"];
-        };
-    };
-    codeScanning: {
-        deleteAnalysis: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"]["response"];
-        };
-        getAlert: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"]["response"];
-        };
-        getAnalysis: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"]["response"];
-        };
-        getCodeqlDatabase: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"]["response"];
-        };
-        getDefaultSetup: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/default-setup"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/default-setup"]["response"];
-        };
-        getSarif: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"]["response"];
-        };
-        listAlertInstances: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["response"];
-        };
-        listAlertsForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/code-scanning/alerts"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/code-scanning/alerts"]["response"];
-        };
-        listAlertsForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["response"];
-        };
-        listAlertsInstances: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["response"];
-        };
-        listCodeqlDatabases: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"]["response"];
-        };
-        listRecentAnalyses: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["response"];
-        };
-        updateAlert: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"]["response"];
-        };
-        updateDefaultSetup: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"]["response"];
-        };
-        uploadSarif: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/code-scanning/sarifs"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/code-scanning/sarifs"]["response"];
-        };
-    };
-    codesOfConduct: {
-        getAllCodesOfConduct: {
-            parameters: RequestParameters & Endpoints["GET /codes_of_conduct"]["parameters"];
-            response: Endpoints["GET /codes_of_conduct"]["response"];
-        };
-        getConductCode: {
-            parameters: RequestParameters & Endpoints["GET /codes_of_conduct/{key}"]["parameters"];
-            response: Endpoints["GET /codes_of_conduct/{key}"]["response"];
-        };
-    };
-    codespaces: {
-        addRepositoryForSecretForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["response"];
-        };
-        addSelectedRepoToOrgSecret: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["response"];
-        };
-        checkPermissionsForDevcontainer: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/permissions_check"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/codespaces/permissions_check"]["response"];
-        };
-        codespaceMachinesForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/codespaces/{codespace_name}/machines"]["parameters"];
-            response: Endpoints["GET /user/codespaces/{codespace_name}/machines"]["response"];
-        };
-        createForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/codespaces"]["parameters"];
-            response: Endpoints["POST /user/codespaces"]["response"];
-        };
-        createOrUpdateOrgSecret: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/codespaces/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/codespaces/secrets/{secret_name}"]["response"];
-        };
-        createOrUpdateRepoSecret: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["response"];
-        };
-        createOrUpdateSecretForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["PUT /user/codespaces/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["PUT /user/codespaces/secrets/{secret_name}"]["response"];
-        };
-        createWithPrForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"]["response"];
-        };
-        createWithRepoForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/codespaces"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/codespaces"]["response"];
-        };
-        deleteForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/codespaces/{codespace_name}"]["parameters"];
-            response: Endpoints["DELETE /user/codespaces/{codespace_name}"]["response"];
-        };
-        deleteFromOrganization: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"]["response"];
-        };
-        deleteOrgSecret: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"]["response"];
-        };
-        deleteRepoSecret: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["response"];
-        };
-        deleteSecretForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/codespaces/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["DELETE /user/codespaces/secrets/{secret_name}"]["response"];
-        };
-        exportForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/codespaces/{codespace_name}/exports"]["parameters"];
-            response: Endpoints["POST /user/codespaces/{codespace_name}/exports"]["response"];
-        };
-        getCodespacesForUserInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["response"];
-        };
-        getExportDetailsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/codespaces/{codespace_name}/exports/{export_id}"]["parameters"];
-            response: Endpoints["GET /user/codespaces/{codespace_name}/exports/{export_id}"]["response"];
-        };
-        getForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/codespaces/{codespace_name}"]["parameters"];
-            response: Endpoints["GET /user/codespaces/{codespace_name}"]["response"];
-        };
-        getOrgPublicKey: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/codespaces/secrets/public-key"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/codespaces/secrets/public-key"]["response"];
-        };
-        getOrgSecret: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}"]["response"];
-        };
-        getPublicKeyForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/codespaces/secrets/public-key"]["parameters"];
-            response: Endpoints["GET /user/codespaces/secrets/public-key"]["response"];
-        };
-        getRepoPublicKey: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"]["response"];
-        };
-        getRepoSecret: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["response"];
-        };
-        getSecretForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/codespaces/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["GET /user/codespaces/secrets/{secret_name}"]["response"];
-        };
-        listDevcontainersInRepositoryForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["response"];
-        };
-        listForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/codespaces"]["parameters"];
-            response: Endpoints["GET /user/codespaces"]["response"];
-        };
-        listInOrganization: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/codespaces"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/codespaces"]["response"];
-        };
-        listInRepositoryForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["response"];
-        };
-        listOrgSecrets: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/codespaces/secrets"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/codespaces/secrets"]["response"];
-        };
-        listRepoSecrets: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["response"];
-        };
-        listRepositoriesForSecretForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/codespaces/secrets/{secret_name}/repositories"]["parameters"];
-            response: Endpoints["GET /user/codespaces/secrets/{secret_name}/repositories"]["response"];
-        };
-        listSecretsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/codespaces/secrets"]["parameters"];
-            response: Endpoints["GET /user/codespaces/secrets"]["response"];
-        };
-        listSelectedReposForOrgSecret: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["response"];
-        };
-        preFlightWithRepoForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/new"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/codespaces/new"]["response"];
-        };
-        publishForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/codespaces/{codespace_name}/publish"]["parameters"];
-            response: Endpoints["POST /user/codespaces/{codespace_name}/publish"]["response"];
-        };
-        removeRepositoryForSecretForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["response"];
-        };
-        removeSelectedRepoFromOrgSecret: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["response"];
-        };
-        repoMachinesForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codespaces/machines"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/codespaces/machines"]["response"];
-        };
-        setRepositoriesForSecretForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["PUT /user/codespaces/secrets/{secret_name}/repositories"]["parameters"];
-            response: Endpoints["PUT /user/codespaces/secrets/{secret_name}/repositories"]["response"];
-        };
-        setSelectedReposForOrgSecret: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["response"];
-        };
-        startForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/codespaces/{codespace_name}/start"]["parameters"];
-            response: Endpoints["POST /user/codespaces/{codespace_name}/start"]["response"];
-        };
-        stopForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/codespaces/{codespace_name}/stop"]["parameters"];
-            response: Endpoints["POST /user/codespaces/{codespace_name}/stop"]["response"];
-        };
-        stopInOrganization: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"]["response"];
-        };
-        updateForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["PATCH /user/codespaces/{codespace_name}"]["parameters"];
-            response: Endpoints["PATCH /user/codespaces/{codespace_name}"]["response"];
-        };
-    };
-    copilot: {
-        addCopilotForBusinessSeatsForTeams: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/copilot/billing/selected_teams"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/copilot/billing/selected_teams"]["response"];
-        };
-        addCopilotForBusinessSeatsForUsers: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/copilot/billing/selected_users"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/copilot/billing/selected_users"]["response"];
-        };
-        cancelCopilotSeatAssignmentForTeams: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/copilot/billing/selected_teams"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/copilot/billing/selected_teams"]["response"];
-        };
-        cancelCopilotSeatAssignmentForUsers: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/copilot/billing/selected_users"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/copilot/billing/selected_users"]["response"];
-        };
-        getCopilotOrganizationDetails: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/copilot/billing"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/copilot/billing"]["response"];
-        };
-        getCopilotSeatDetailsForUser: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/members/{username}/copilot"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/members/{username}/copilot"]["response"];
-        };
-        listCopilotSeats: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/copilot/billing/seats"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/copilot/billing/seats"]["response"];
-        };
-    };
-    dependabot: {
-        addSelectedRepoToOrgSecret: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"]["response"];
-        };
-        createOrUpdateOrgSecret: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}"]["response"];
-        };
-        createOrUpdateRepoSecret: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["response"];
-        };
-        deleteOrgSecret: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"]["response"];
-        };
-        deleteRepoSecret: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["response"];
-        };
-        getAlert: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"]["response"];
-        };
-        getOrgPublicKey: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/dependabot/secrets/public-key"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/dependabot/secrets/public-key"]["response"];
-        };
-        getOrgSecret: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}"]["response"];
-        };
-        getRepoPublicKey: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"]["response"];
-        };
-        getRepoSecret: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["response"];
-        };
-        listAlertsForEnterprise: {
-            parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/dependabot/alerts"]["parameters"];
-            response: Endpoints["GET /enterprises/{enterprise}/dependabot/alerts"]["response"];
-        };
-        listAlertsForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/dependabot/alerts"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/dependabot/alerts"]["response"];
-        };
-        listAlertsForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts"]["response"];
-        };
-        listOrgSecrets: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/dependabot/secrets"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/dependabot/secrets"]["response"];
-        };
-        listRepoSecrets: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["response"];
-        };
-        listSelectedReposForOrgSecret: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"];
-        };
-        removeSelectedRepoFromOrgSecret: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"]["response"];
-        };
-        setSelectedReposForOrgSecret: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"];
-        };
-        updateAlert: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"]["response"];
-        };
-    };
-    dependencyGraph: {
-        createRepositorySnapshot: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/dependency-graph/snapshots"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/dependency-graph/snapshots"]["response"];
-        };
-        diffRange: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"]["response"];
-        };
-        exportSbom: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/dependency-graph/sbom"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/dependency-graph/sbom"]["response"];
-        };
-    };
-    emojis: {
-        get: {
-            parameters: RequestParameters & Endpoints["GET /emojis"]["parameters"];
-            response: Endpoints["GET /emojis"]["response"];
-        };
-    };
-    gists: {
-        checkIsStarred: {
-            parameters: RequestParameters & Endpoints["GET /gists/{gist_id}/star"]["parameters"];
-            response: Endpoints["GET /gists/{gist_id}/star"]["response"];
-        };
-        create: {
-            parameters: RequestParameters & Endpoints["POST /gists"]["parameters"];
-            response: Endpoints["POST /gists"]["response"];
-        };
-        createComment: {
-            parameters: RequestParameters & Endpoints["POST /gists/{gist_id}/comments"]["parameters"];
-            response: Endpoints["POST /gists/{gist_id}/comments"]["response"];
-        };
-        delete: {
-            parameters: RequestParameters & Endpoints["DELETE /gists/{gist_id}"]["parameters"];
-            response: Endpoints["DELETE /gists/{gist_id}"]["response"];
-        };
-        deleteComment: {
-            parameters: RequestParameters & Endpoints["DELETE /gists/{gist_id}/comments/{comment_id}"]["parameters"];
-            response: Endpoints["DELETE /gists/{gist_id}/comments/{comment_id}"]["response"];
-        };
-        fork: {
-            parameters: RequestParameters & Endpoints["POST /gists/{gist_id}/forks"]["parameters"];
-            response: Endpoints["POST /gists/{gist_id}/forks"]["response"];
-        };
-        get: {
-            parameters: RequestParameters & Endpoints["GET /gists/{gist_id}"]["parameters"];
-            response: Endpoints["GET /gists/{gist_id}"]["response"];
-        };
-        getComment: {
-            parameters: RequestParameters & Endpoints["GET /gists/{gist_id}/comments/{comment_id}"]["parameters"];
-            response: Endpoints["GET /gists/{gist_id}/comments/{comment_id}"]["response"];
-        };
-        getRevision: {
-            parameters: RequestParameters & Endpoints["GET /gists/{gist_id}/{sha}"]["parameters"];
-            response: Endpoints["GET /gists/{gist_id}/{sha}"]["response"];
-        };
-        list: {
-            parameters: RequestParameters & Endpoints["GET /gists"]["parameters"];
-            response: Endpoints["GET /gists"]["response"];
-        };
-        listComments: {
-            parameters: RequestParameters & Endpoints["GET /gists/{gist_id}/comments"]["parameters"];
-            response: Endpoints["GET /gists/{gist_id}/comments"]["response"];
-        };
-        listCommits: {
-            parameters: RequestParameters & Endpoints["GET /gists/{gist_id}/commits"]["parameters"];
-            response: Endpoints["GET /gists/{gist_id}/commits"]["response"];
-        };
-        listForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/gists"]["parameters"];
-            response: Endpoints["GET /users/{username}/gists"]["response"];
-        };
-        listForks: {
-            parameters: RequestParameters & Endpoints["GET /gists/{gist_id}/forks"]["parameters"];
-            response: Endpoints["GET /gists/{gist_id}/forks"]["response"];
-        };
-        listPublic: {
-            parameters: RequestParameters & Endpoints["GET /gists/public"]["parameters"];
-            response: Endpoints["GET /gists/public"]["response"];
-        };
-        listStarred: {
-            parameters: RequestParameters & Endpoints["GET /gists/starred"]["parameters"];
-            response: Endpoints["GET /gists/starred"]["response"];
-        };
-        star: {
-            parameters: RequestParameters & Endpoints["PUT /gists/{gist_id}/star"]["parameters"];
-            response: Endpoints["PUT /gists/{gist_id}/star"]["response"];
-        };
-        unstar: {
-            parameters: RequestParameters & Endpoints["DELETE /gists/{gist_id}/star"]["parameters"];
-            response: Endpoints["DELETE /gists/{gist_id}/star"]["response"];
-        };
-        update: {
-            parameters: RequestParameters & Endpoints["PATCH /gists/{gist_id}"]["parameters"];
-            response: Endpoints["PATCH /gists/{gist_id}"]["response"];
-        };
-        updateComment: {
-            parameters: RequestParameters & Endpoints["PATCH /gists/{gist_id}/comments/{comment_id}"]["parameters"];
-            response: Endpoints["PATCH /gists/{gist_id}/comments/{comment_id}"]["response"];
-        };
-    };
-    git: {
-        createBlob: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/git/blobs"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/git/blobs"]["response"];
-        };
-        createCommit: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/git/commits"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/git/commits"]["response"];
-        };
-        createRef: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/git/refs"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/git/refs"]["response"];
-        };
-        createTag: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/git/tags"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/git/tags"]["response"];
-        };
-        createTree: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/git/trees"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/git/trees"]["response"];
-        };
-        deleteRef: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/git/refs/{ref}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/git/refs/{ref}"]["response"];
-        };
-        getBlob: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"]["response"];
-        };
-        getCommit: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"]["response"];
-        };
-        getRef: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/git/ref/{ref}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/git/ref/{ref}"]["response"];
-        };
-        getTag: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"]["response"];
-        };
-        getTree: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"]["response"];
-        };
-        listMatchingRefs: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"]["response"];
-        };
-        updateRef: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]["response"];
-        };
-    };
-    gitignore: {
-        getAllTemplates: {
-            parameters: RequestParameters & Endpoints["GET /gitignore/templates"]["parameters"];
-            response: Endpoints["GET /gitignore/templates"]["response"];
-        };
-        getTemplate: {
-            parameters: RequestParameters & Endpoints["GET /gitignore/templates/{name}"]["parameters"];
-            response: Endpoints["GET /gitignore/templates/{name}"]["response"];
-        };
-    };
-    interactions: {
-        getRestrictionsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/interaction-limits"]["parameters"];
-            response: Endpoints["GET /user/interaction-limits"]["response"];
-        };
-        getRestrictionsForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/interaction-limits"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/interaction-limits"]["response"];
-        };
-        getRestrictionsForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/interaction-limits"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/interaction-limits"]["response"];
-        };
-        getRestrictionsForYourPublicRepos: {
-            parameters: RequestParameters & Endpoints["GET /user/interaction-limits"]["parameters"];
-            response: Endpoints["GET /user/interaction-limits"]["response"];
-        };
-        removeRestrictionsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/interaction-limits"]["parameters"];
-            response: Endpoints["DELETE /user/interaction-limits"]["response"];
-        };
-        removeRestrictionsForOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/interaction-limits"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/interaction-limits"]["response"];
-        };
-        removeRestrictionsForRepo: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/interaction-limits"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/interaction-limits"]["response"];
-        };
-        removeRestrictionsForYourPublicRepos: {
-            parameters: RequestParameters & Endpoints["DELETE /user/interaction-limits"]["parameters"];
-            response: Endpoints["DELETE /user/interaction-limits"]["response"];
-        };
-        setRestrictionsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["PUT /user/interaction-limits"]["parameters"];
-            response: Endpoints["PUT /user/interaction-limits"]["response"];
-        };
-        setRestrictionsForOrg: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/interaction-limits"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/interaction-limits"]["response"];
-        };
-        setRestrictionsForRepo: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/interaction-limits"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/interaction-limits"]["response"];
-        };
-        setRestrictionsForYourPublicRepos: {
-            parameters: RequestParameters & Endpoints["PUT /user/interaction-limits"]["parameters"];
-            response: Endpoints["PUT /user/interaction-limits"]["response"];
-        };
-    };
-    issues: {
-        addAssignees: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"]["response"];
-        };
-        addLabels: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"];
-        };
-        checkUserCanBeAssigned: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/assignees/{assignee}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/assignees/{assignee}"]["response"];
-        };
-        checkUserCanBeAssignedToIssue: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"]["response"];
-        };
-        create: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/issues"]["response"];
-        };
-        createComment: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"];
-        };
-        createLabel: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/labels"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/labels"]["response"];
-        };
-        createMilestone: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/milestones"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/milestones"]["response"];
-        };
-        deleteComment: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"]["response"];
-        };
-        deleteLabel: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/labels/{name}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/labels/{name}"]["response"];
-        };
-        deleteMilestone: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"]["response"];
-        };
-        get: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}"]["response"];
-        };
-        getComment: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"]["response"];
-        };
-        getEvent: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/events/{event_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues/events/{event_id}"]["response"];
-        };
-        getLabel: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/labels/{name}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/labels/{name}"]["response"];
-        };
-        getMilestone: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}"]["response"];
-        };
-        list: {
-            parameters: RequestParameters & Endpoints["GET /issues"]["parameters"];
-            response: Endpoints["GET /issues"]["response"];
-        };
-        listAssignees: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/assignees"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/assignees"]["response"];
-        };
-        listComments: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"];
-        };
-        listCommentsForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["response"];
-        };
-        listEvents: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["response"];
-        };
-        listEventsForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/events"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["response"];
-        };
-        listEventsForTimeline: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["response"];
-        };
-        listForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/issues"]["parameters"];
-            response: Endpoints["GET /user/issues"]["response"];
-        };
-        listForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/issues"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/issues"]["response"];
-        };
-        listForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues"]["response"];
-        };
-        listLabelsForMilestone: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["response"];
-        };
-        listLabelsForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/labels"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/labels"]["response"];
-        };
-        listLabelsOnIssue: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"];
-        };
-        listMilestones: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/milestones"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/milestones"]["response"];
-        };
-        lock: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"]["response"];
-        };
-        removeAllLabels: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"];
-        };
-        removeAssignees: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"]["response"];
-        };
-        removeLabel: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"]["response"];
-        };
-        setLabels: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"];
-        };
-        unlock: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"]["response"];
-        };
-        update: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/issues/{issue_number}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/issues/{issue_number}"]["response"];
-        };
-        updateComment: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"]["response"];
-        };
-        updateLabel: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/labels/{name}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/labels/{name}"]["response"];
-        };
-        updateMilestone: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]["response"];
-        };
-    };
-    licenses: {
-        get: {
-            parameters: RequestParameters & Endpoints["GET /licenses/{license}"]["parameters"];
-            response: Endpoints["GET /licenses/{license}"]["response"];
-        };
-        getAllCommonlyUsed: {
-            parameters: RequestParameters & Endpoints["GET /licenses"]["parameters"];
-            response: Endpoints["GET /licenses"]["response"];
-        };
-        getForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/license"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/license"]["response"];
-        };
-    };
-    markdown: {
-        render: {
-            parameters: RequestParameters & Endpoints["POST /markdown"]["parameters"];
-            response: Endpoints["POST /markdown"]["response"];
-        };
-        renderRaw: {
-            parameters: RequestParameters & Endpoints["POST /markdown/raw"]["parameters"];
-            response: Endpoints["POST /markdown/raw"]["response"];
-        };
-    };
-    meta: {
-        get: {
-            parameters: RequestParameters & Endpoints["GET /meta"]["parameters"];
-            response: Endpoints["GET /meta"]["response"];
-        };
-        getAllVersions: {
-            parameters: RequestParameters & Endpoints["GET /versions"]["parameters"];
-            response: Endpoints["GET /versions"]["response"];
-        };
-        getOctocat: {
-            parameters: RequestParameters & Endpoints["GET /octocat"]["parameters"];
-            response: Endpoints["GET /octocat"]["response"];
-        };
-        getZen: {
-            parameters: RequestParameters & Endpoints["GET /zen"]["parameters"];
-            response: Endpoints["GET /zen"]["response"];
-        };
-        root: {
-            parameters: RequestParameters & Endpoints["GET /"]["parameters"];
-            response: Endpoints["GET /"]["response"];
-        };
-    };
-    migrations: {
-        cancelImport: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/import"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/import"]["response"];
-        };
-        deleteArchiveForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/migrations/{migration_id}/archive"]["parameters"];
-            response: Endpoints["DELETE /user/migrations/{migration_id}/archive"]["response"];
-        };
-        deleteArchiveForOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/migrations/{migration_id}/archive"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/migrations/{migration_id}/archive"]["response"];
-        };
-        downloadArchiveForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/migrations/{migration_id}/archive"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/archive"]["response"];
-        };
-        getArchiveForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/migrations/{migration_id}/archive"]["parameters"];
-            response: Endpoints["GET /user/migrations/{migration_id}/archive"]["response"];
-        };
-        getCommitAuthors: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/import/authors"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/import/authors"]["response"];
-        };
-        getImportStatus: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/import"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/import"]["response"];
-        };
-        getLargeFiles: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/import/large_files"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/import/large_files"]["response"];
-        };
-        getStatusForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/migrations/{migration_id}"]["parameters"];
-            response: Endpoints["GET /user/migrations/{migration_id}"]["response"];
-        };
-        getStatusForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/migrations/{migration_id}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/migrations/{migration_id}"]["response"];
-        };
-        listForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/migrations"]["parameters"];
-            response: Endpoints["GET /user/migrations"]["response"];
-        };
-        listForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/migrations"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/migrations"]["response"];
-        };
-        listReposForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/migrations/{migration_id}/repositories"]["parameters"];
-            response: Endpoints["GET /user/migrations/{migration_id}/repositories"]["response"];
-        };
-        listReposForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["response"];
-        };
-        listReposForUser: {
-            parameters: RequestParameters & Endpoints["GET /user/migrations/{migration_id}/repositories"]["parameters"];
-            response: Endpoints["GET /user/migrations/{migration_id}/repositories"]["response"];
-        };
-        mapCommitAuthor: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"]["response"];
-        };
-        setLfsPreference: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/import/lfs"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/import/lfs"]["response"];
-        };
-        startForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/migrations"]["parameters"];
-            response: Endpoints["POST /user/migrations"]["response"];
-        };
-        startForOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/migrations"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/migrations"]["response"];
-        };
-        startImport: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/import"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/import"]["response"];
-        };
-        unlockRepoForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"]["parameters"];
-            response: Endpoints["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"]["response"];
-        };
-        unlockRepoForOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]["response"];
-        };
-        updateImport: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/import"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/import"]["response"];
-        };
-    };
-    orgs: {
-        addSecurityManagerTeam: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/security-managers/teams/{team_slug}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/security-managers/teams/{team_slug}"]["response"];
-        };
-        blockUser: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/blocks/{username}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/blocks/{username}"]["response"];
-        };
-        cancelInvitation: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/invitations/{invitation_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/invitations/{invitation_id}"]["response"];
-        };
-        checkBlockedUser: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/blocks/{username}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/blocks/{username}"]["response"];
-        };
-        checkMembershipForUser: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/members/{username}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/members/{username}"]["response"];
-        };
-        checkPublicMembershipForUser: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/public_members/{username}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/public_members/{username}"]["response"];
-        };
-        convertMemberToOutsideCollaborator: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/outside_collaborators/{username}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/outside_collaborators/{username}"]["response"];
-        };
-        createInvitation: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/invitations"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/invitations"]["response"];
-        };
-        createOrUpdateCustomProperties: {
-            parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/properties/schema"]["parameters"];
-            response: Endpoints["PATCH /orgs/{org}/properties/schema"]["response"];
-        };
-        createOrUpdateCustomPropertiesValuesForRepos: {
-            parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/properties/values"]["parameters"];
-            response: Endpoints["PATCH /orgs/{org}/properties/values"]["response"];
-        };
-        createOrUpdateCustomProperty: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/properties/schema/{custom_property_name}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/properties/schema/{custom_property_name}"]["response"];
-        };
-        createWebhook: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/hooks"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/hooks"]["response"];
-        };
-        delete: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}"]["response"];
-        };
-        deleteWebhook: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/hooks/{hook_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/hooks/{hook_id}"]["response"];
-        };
-        enableOrDisableSecurityProductOnAllOrgRepos: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/{security_product}/{enablement}"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/{security_product}/{enablement}"]["response"];
-        };
-        get: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}"]["response"];
-        };
-        getAllCustomProperties: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/properties/schema"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/properties/schema"]["response"];
-        };
-        getCustomProperty: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/properties/schema/{custom_property_name}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/properties/schema/{custom_property_name}"]["response"];
-        };
-        getMembershipForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/memberships/orgs/{org}"]["parameters"];
-            response: Endpoints["GET /user/memberships/orgs/{org}"]["response"];
-        };
-        getMembershipForUser: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/memberships/{username}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/memberships/{username}"]["response"];
-        };
-        getWebhook: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/hooks/{hook_id}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/hooks/{hook_id}"]["response"];
-        };
-        getWebhookConfigForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/hooks/{hook_id}/config"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/config"]["response"];
-        };
-        getWebhookDelivery: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"]["response"];
-        };
-        list: {
-            parameters: RequestParameters & Endpoints["GET /organizations"]["parameters"];
-            response: Endpoints["GET /organizations"]["response"];
-        };
-        listAppInstallations: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/installations"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/installations"]["response"];
-        };
-        listBlockedUsers: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/blocks"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/blocks"]["response"];
-        };
-        listCustomPropertiesValuesForRepos: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/properties/values"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/properties/values"]["response"];
-        };
-        listFailedInvitations: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/failed_invitations"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/failed_invitations"]["response"];
-        };
-        listForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/orgs"]["parameters"];
-            response: Endpoints["GET /user/orgs"]["response"];
-        };
-        listForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/orgs"]["parameters"];
-            response: Endpoints["GET /users/{username}/orgs"]["response"];
-        };
-        listInvitationTeams: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["response"];
-        };
-        listMembers: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/members"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/members"]["response"];
-        };
-        listMembershipsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/memberships/orgs"]["parameters"];
-            response: Endpoints["GET /user/memberships/orgs"]["response"];
-        };
-        listOutsideCollaborators: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/outside_collaborators"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/outside_collaborators"]["response"];
-        };
-        listPatGrantRepositories: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"]["response"];
-        };
-        listPatGrantRequestRepositories: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"]["response"];
-        };
-        listPatGrantRequests: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/personal-access-token-requests"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/personal-access-token-requests"]["response"];
-        };
-        listPatGrants: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/personal-access-tokens"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/personal-access-tokens"]["response"];
-        };
-        listPendingInvitations: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/invitations"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/invitations"]["response"];
-        };
-        listPublicMembers: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/public_members"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/public_members"]["response"];
-        };
-        listSecurityManagerTeams: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/security-managers"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/security-managers"]["response"];
-        };
-        listWebhookDeliveries: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["response"];
-        };
-        listWebhooks: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/hooks"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/hooks"]["response"];
-        };
-        pingWebhook: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/hooks/{hook_id}/pings"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/hooks/{hook_id}/pings"]["response"];
-        };
-        redeliverWebhookDelivery: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"]["response"];
-        };
-        removeCustomProperty: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/properties/schema/{custom_property_name}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/properties/schema/{custom_property_name}"]["response"];
-        };
-        removeMember: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/members/{username}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/members/{username}"]["response"];
-        };
-        removeMembershipForUser: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/memberships/{username}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/memberships/{username}"]["response"];
-        };
-        removeOutsideCollaborator: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/outside_collaborators/{username}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/outside_collaborators/{username}"]["response"];
-        };
-        removePublicMembershipForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/public_members/{username}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/public_members/{username}"]["response"];
-        };
-        removeSecurityManagerTeam: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/security-managers/teams/{team_slug}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/security-managers/teams/{team_slug}"]["response"];
-        };
-        reviewPatGrantRequest: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"]["response"];
-        };
-        reviewPatGrantRequestsInBulk: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/personal-access-token-requests"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/personal-access-token-requests"]["response"];
-        };
-        setMembershipForUser: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/memberships/{username}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/memberships/{username}"]["response"];
-        };
-        setPublicMembershipForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/public_members/{username}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/public_members/{username}"]["response"];
-        };
-        unblockUser: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/blocks/{username}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/blocks/{username}"]["response"];
-        };
-        update: {
-            parameters: RequestParameters & Endpoints["PATCH /orgs/{org}"]["parameters"];
-            response: Endpoints["PATCH /orgs/{org}"]["response"];
-        };
-        updateMembershipForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["PATCH /user/memberships/orgs/{org}"]["parameters"];
-            response: Endpoints["PATCH /user/memberships/orgs/{org}"]["response"];
-        };
-        updatePatAccess: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/personal-access-tokens/{pat_id}"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/personal-access-tokens/{pat_id}"]["response"];
-        };
-        updatePatAccesses: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/personal-access-tokens"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/personal-access-tokens"]["response"];
-        };
-        updateWebhook: {
-            parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/hooks/{hook_id}"]["parameters"];
-            response: Endpoints["PATCH /orgs/{org}/hooks/{hook_id}"]["response"];
-        };
-        updateWebhookConfigForOrg: {
-            parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/hooks/{hook_id}/config"]["parameters"];
-            response: Endpoints["PATCH /orgs/{org}/hooks/{hook_id}/config"]["response"];
-        };
-    };
-    packages: {
-        deletePackageForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/packages/{package_type}/{package_name}"]["parameters"];
-            response: Endpoints["DELETE /user/packages/{package_type}/{package_name}"]["response"];
-        };
-        deletePackageForOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/packages/{package_type}/{package_name}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/packages/{package_type}/{package_name}"]["response"];
-        };
-        deletePackageForUser: {
-            parameters: RequestParameters & Endpoints["DELETE /users/{username}/packages/{package_type}/{package_name}"]["parameters"];
-            response: Endpoints["DELETE /users/{username}/packages/{package_type}/{package_name}"]["response"];
-        };
-        deletePackageVersionForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"]["parameters"];
-            response: Endpoints["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"];
-        };
-        deletePackageVersionForOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"];
-        };
-        deletePackageVersionForUser: {
-            parameters: RequestParameters & Endpoints["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["parameters"];
-            response: Endpoints["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"];
-        };
-        getAllPackageVersionsForAPackageOwnedByAnOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["response"];
-        };
-        getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["parameters"];
-            response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["response"];
-        };
-        getAllPackageVersionsForPackageOwnedByAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["parameters"];
-            response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["response"];
-        };
-        getAllPackageVersionsForPackageOwnedByOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["response"];
-        };
-        getAllPackageVersionsForPackageOwnedByUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/packages/{package_type}/{package_name}/versions"]["parameters"];
-            response: Endpoints["GET /users/{username}/packages/{package_type}/{package_name}/versions"]["response"];
-        };
-        getPackageForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/packages/{package_type}/{package_name}"]["parameters"];
-            response: Endpoints["GET /user/packages/{package_type}/{package_name}"]["response"];
-        };
-        getPackageForOrganization: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}"]["response"];
-        };
-        getPackageForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/packages/{package_type}/{package_name}"]["parameters"];
-            response: Endpoints["GET /users/{username}/packages/{package_type}/{package_name}"]["response"];
-        };
-        getPackageVersionForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"]["parameters"];
-            response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"];
-        };
-        getPackageVersionForOrganization: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"];
-        };
-        getPackageVersionForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["parameters"];
-            response: Endpoints["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"];
-        };
-        listDockerMigrationConflictingPackagesForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/docker/conflicts"]["parameters"];
-            response: Endpoints["GET /user/docker/conflicts"]["response"];
-        };
-        listDockerMigrationConflictingPackagesForOrganization: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/docker/conflicts"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/docker/conflicts"]["response"];
-        };
-        listDockerMigrationConflictingPackagesForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/docker/conflicts"]["parameters"];
-            response: Endpoints["GET /users/{username}/docker/conflicts"]["response"];
-        };
-        listPackagesForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/packages"]["parameters"];
-            response: Endpoints["GET /user/packages"]["response"];
-        };
-        listPackagesForOrganization: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/packages"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/packages"]["response"];
-        };
-        listPackagesForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/packages"]["parameters"];
-            response: Endpoints["GET /users/{username}/packages"]["response"];
-        };
-        restorePackageForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/packages/{package_type}/{package_name}/restore{?token}"]["parameters"];
-            response: Endpoints["POST /user/packages/{package_type}/{package_name}/restore{?token}"]["response"];
-        };
-        restorePackageForOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"]["response"];
-        };
-        restorePackageForUser: {
-            parameters: RequestParameters & Endpoints["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"]["parameters"];
-            response: Endpoints["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"]["response"];
-        };
-        restorePackageVersionForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["parameters"];
-            response: Endpoints["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["response"];
-        };
-        restorePackageVersionForOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["response"];
-        };
-        restorePackageVersionForUser: {
-            parameters: RequestParameters & Endpoints["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["parameters"];
-            response: Endpoints["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["response"];
-        };
-    };
-    projects: {
-        addCollaborator: {
-            parameters: RequestParameters & Endpoints["PUT /projects/{project_id}/collaborators/{username}"]["parameters"];
-            response: Endpoints["PUT /projects/{project_id}/collaborators/{username}"]["response"];
-        };
-        createCard: {
-            parameters: RequestParameters & Endpoints["POST /projects/columns/{column_id}/cards"]["parameters"];
-            response: Endpoints["POST /projects/columns/{column_id}/cards"]["response"];
-        };
-        createColumn: {
-            parameters: RequestParameters & Endpoints["POST /projects/{project_id}/columns"]["parameters"];
-            response: Endpoints["POST /projects/{project_id}/columns"]["response"];
-        };
-        createForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/projects"]["parameters"];
-            response: Endpoints["POST /user/projects"]["response"];
-        };
-        createForOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/projects"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/projects"]["response"];
-        };
-        createForRepo: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/projects"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/projects"]["response"];
-        };
-        delete: {
-            parameters: RequestParameters & Endpoints["DELETE /projects/{project_id}"]["parameters"];
-            response: Endpoints["DELETE /projects/{project_id}"]["response"];
-        };
-        deleteCard: {
-            parameters: RequestParameters & Endpoints["DELETE /projects/columns/cards/{card_id}"]["parameters"];
-            response: Endpoints["DELETE /projects/columns/cards/{card_id}"]["response"];
-        };
-        deleteColumn: {
-            parameters: RequestParameters & Endpoints["DELETE /projects/columns/{column_id}"]["parameters"];
-            response: Endpoints["DELETE /projects/columns/{column_id}"]["response"];
-        };
-        get: {
-            parameters: RequestParameters & Endpoints["GET /projects/{project_id}"]["parameters"];
-            response: Endpoints["GET /projects/{project_id}"]["response"];
-        };
-        getCard: {
-            parameters: RequestParameters & Endpoints["GET /projects/columns/cards/{card_id}"]["parameters"];
-            response: Endpoints["GET /projects/columns/cards/{card_id}"]["response"];
-        };
-        getColumn: {
-            parameters: RequestParameters & Endpoints["GET /projects/columns/{column_id}"]["parameters"];
-            response: Endpoints["GET /projects/columns/{column_id}"]["response"];
-        };
-        getPermissionForUser: {
-            parameters: RequestParameters & Endpoints["GET /projects/{project_id}/collaborators/{username}/permission"]["parameters"];
-            response: Endpoints["GET /projects/{project_id}/collaborators/{username}/permission"]["response"];
-        };
-        listCards: {
-            parameters: RequestParameters & Endpoints["GET /projects/columns/{column_id}/cards"]["parameters"];
-            response: Endpoints["GET /projects/columns/{column_id}/cards"]["response"];
-        };
-        listCollaborators: {
-            parameters: RequestParameters & Endpoints["GET /projects/{project_id}/collaborators"]["parameters"];
-            response: Endpoints["GET /projects/{project_id}/collaborators"]["response"];
-        };
-        listColumns: {
-            parameters: RequestParameters & Endpoints["GET /projects/{project_id}/columns"]["parameters"];
-            response: Endpoints["GET /projects/{project_id}/columns"]["response"];
-        };
-        listForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/projects"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/projects"]["response"];
-        };
-        listForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/projects"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/projects"]["response"];
-        };
-        listForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/projects"]["parameters"];
-            response: Endpoints["GET /users/{username}/projects"]["response"];
-        };
-        moveCard: {
-            parameters: RequestParameters & Endpoints["POST /projects/columns/cards/{card_id}/moves"]["parameters"];
-            response: Endpoints["POST /projects/columns/cards/{card_id}/moves"]["response"];
-        };
-        moveColumn: {
-            parameters: RequestParameters & Endpoints["POST /projects/columns/{column_id}/moves"]["parameters"];
-            response: Endpoints["POST /projects/columns/{column_id}/moves"]["response"];
-        };
-        removeCollaborator: {
-            parameters: RequestParameters & Endpoints["DELETE /projects/{project_id}/collaborators/{username}"]["parameters"];
-            response: Endpoints["DELETE /projects/{project_id}/collaborators/{username}"]["response"];
-        };
-        update: {
-            parameters: RequestParameters & Endpoints["PATCH /projects/{project_id}"]["parameters"];
-            response: Endpoints["PATCH /projects/{project_id}"]["response"];
-        };
-        updateCard: {
-            parameters: RequestParameters & Endpoints["PATCH /projects/columns/cards/{card_id}"]["parameters"];
-            response: Endpoints["PATCH /projects/columns/cards/{card_id}"]["response"];
-        };
-        updateColumn: {
-            parameters: RequestParameters & Endpoints["PATCH /projects/columns/{column_id}"]["parameters"];
-            response: Endpoints["PATCH /projects/columns/{column_id}"]["response"];
-        };
-    };
-    pulls: {
-        checkIfMerged: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"]["response"];
-        };
-        create: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/pulls"]["response"];
-        };
-        createReplyForReviewComment: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"]["response"];
-        };
-        createReview: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"];
-        };
-        createReviewComment: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"];
-        };
-        deletePendingReview: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["response"];
-        };
-        deleteReviewComment: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["response"];
-        };
-        dismissReview: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"]["response"];
-        };
-        get: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}"]["response"];
-        };
-        getReview: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["response"];
-        };
-        getReviewComment: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["response"];
-        };
-        list: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls"]["response"];
-        };
-        listCommentsForReview: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["response"];
-        };
-        listCommits: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["response"];
-        };
-        listFiles: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["response"];
-        };
-        listRequestedReviewers: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"];
-        };
-        listReviewComments: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"];
-        };
-        listReviewCommentsForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["response"];
-        };
-        listReviews: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"];
-        };
-        merge: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"]["response"];
-        };
-        removeRequestedReviewers: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"];
-        };
-        requestReviewers: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"];
-        };
-        submitReview: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"]["response"];
-        };
-        update: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"]["response"];
-        };
-        updateBranch: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"]["response"];
-        };
-        updateReview: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["response"];
-        };
-        updateReviewComment: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["response"];
-        };
-    };
-    rateLimit: {
-        get: {
-            parameters: RequestParameters & Endpoints["GET /rate_limit"]["parameters"];
-            response: Endpoints["GET /rate_limit"]["response"];
-        };
-    };
-    reactions: {
-        createForCommitComment: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"];
-        };
-        createForIssue: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"];
-        };
-        createForIssueComment: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"];
-        };
-        createForPullRequestReviewComment: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"];
-        };
-        createForRelease: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"]["response"];
-        };
-        createForTeamDiscussionCommentInOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"];
-        };
-        createForTeamDiscussionInOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"];
-        };
-        deleteForCommitComment: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"]["response"];
-        };
-        deleteForIssue: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"]["response"];
-        };
-        deleteForIssueComment: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"]["response"];
-        };
-        deleteForPullRequestComment: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"]["response"];
-        };
-        deleteForRelease: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"]["response"];
-        };
-        deleteForTeamDiscussion: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"]["response"];
-        };
-        deleteForTeamDiscussionComment: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"]["response"];
-        };
-        listForCommitComment: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"];
-        };
-        listForIssue: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"];
-        };
-        listForIssueComment: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"];
-        };
-        listForPullRequestReviewComment: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"];
-        };
-        listForRelease: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["response"];
-        };
-        listForTeamDiscussionCommentInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"];
-        };
-        listForTeamDiscussionInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"];
-        };
-    };
-    repos: {
-        acceptInvitation: {
-            parameters: RequestParameters & Endpoints["PATCH /user/repository_invitations/{invitation_id}"]["parameters"];
-            response: Endpoints["PATCH /user/repository_invitations/{invitation_id}"]["response"];
-        };
-        acceptInvitationForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["PATCH /user/repository_invitations/{invitation_id}"]["parameters"];
-            response: Endpoints["PATCH /user/repository_invitations/{invitation_id}"]["response"];
-        };
-        addAppAccessRestrictions: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"];
-        };
-        addCollaborator: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/collaborators/{username}"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/collaborators/{username}"]["response"];
-        };
-        addStatusCheckContexts: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"];
-        };
-        addTeamAccessRestrictions: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"];
-        };
-        addUserAccessRestrictions: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"];
-        };
-        checkAutomatedSecurityFixes: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/automated-security-fixes"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/automated-security-fixes"]["response"];
-        };
-        checkCollaborator: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/collaborators/{username}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/collaborators/{username}"]["response"];
-        };
-        checkVulnerabilityAlerts: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/vulnerability-alerts"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/vulnerability-alerts"]["response"];
-        };
-        codeownersErrors: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/codeowners/errors"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/codeowners/errors"]["response"];
-        };
-        compareCommits: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/compare/{base}...{head}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/compare/{base}...{head}"]["response"];
-        };
-        compareCommitsWithBasehead: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/compare/{basehead}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/compare/{basehead}"]["response"];
-        };
-        createAutolink: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/autolinks"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/autolinks"]["response"];
-        };
-        createCommitComment: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"];
-        };
-        createCommitSignatureProtection: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["response"];
-        };
-        createCommitStatus: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/statuses/{sha}"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/statuses/{sha}"]["response"];
-        };
-        createDeployKey: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/keys"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/keys"]["response"];
-        };
-        createDeployment: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/deployments"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/deployments"]["response"];
-        };
-        createDeploymentBranchPolicy: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["response"];
-        };
-        createDeploymentProtectionRule: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"]["response"];
-        };
-        createDeploymentStatus: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"];
-        };
-        createDispatchEvent: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/dispatches"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/dispatches"]["response"];
-        };
-        createForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/repos"]["parameters"];
-            response: Endpoints["POST /user/repos"]["response"];
-        };
-        createFork: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/forks"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/forks"]["response"];
-        };
-        createInOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/repos"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/repos"]["response"];
-        };
-        createOrUpdateEnvironment: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/environments/{environment_name}"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/environments/{environment_name}"]["response"];
-        };
-        createOrUpdateFileContents: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/contents/{path}"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/contents/{path}"]["response"];
-        };
-        createOrgRuleset: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/rulesets"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/rulesets"]["response"];
-        };
-        createPagesDeployment: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pages/deployment"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/pages/deployment"]["response"];
-        };
-        createPagesSite: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pages"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/pages"]["response"];
-        };
-        createRelease: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/releases"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/releases"]["response"];
-        };
-        createRepoRuleset: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/rulesets"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/rulesets"]["response"];
-        };
-        createTagProtection: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/tags/protection"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/tags/protection"]["response"];
-        };
-        createUsingTemplate: {
-            parameters: RequestParameters & Endpoints["POST /repos/{template_owner}/{template_repo}/generate"]["parameters"];
-            response: Endpoints["POST /repos/{template_owner}/{template_repo}/generate"]["response"];
-        };
-        createWebhook: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/hooks"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/hooks"]["response"];
-        };
-        declineInvitation: {
-            parameters: RequestParameters & Endpoints["DELETE /user/repository_invitations/{invitation_id}"]["parameters"];
-            response: Endpoints["DELETE /user/repository_invitations/{invitation_id}"]["response"];
-        };
-        declineInvitationForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/repository_invitations/{invitation_id}"]["parameters"];
-            response: Endpoints["DELETE /user/repository_invitations/{invitation_id}"]["response"];
-        };
-        delete: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}"]["response"];
-        };
-        deleteAccessRestrictions: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"]["response"];
-        };
-        deleteAdminBranchProtection: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["response"];
-        };
-        deleteAnEnvironment: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}"]["response"];
-        };
-        deleteAutolink: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"]["response"];
-        };
-        deleteBranchProtection: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"]["response"];
-        };
-        deleteCommitComment: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/comments/{comment_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/comments/{comment_id}"]["response"];
-        };
-        deleteCommitSignatureProtection: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["response"];
-        };
-        deleteDeployKey: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/keys/{key_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/keys/{key_id}"]["response"];
-        };
-        deleteDeployment: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"]["response"];
-        };
-        deleteDeploymentBranchPolicy: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"]["response"];
-        };
-        deleteFile: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/contents/{path}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/contents/{path}"]["response"];
-        };
-        deleteInvitation: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"]["response"];
-        };
-        deleteOrgRuleset: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/rulesets/{ruleset_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/rulesets/{ruleset_id}"]["response"];
-        };
-        deletePagesSite: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/pages"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/pages"]["response"];
-        };
-        deletePullRequestReviewProtection: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["response"];
-        };
-        deleteRelease: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/releases/{release_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/releases/{release_id}"]["response"];
-        };
-        deleteReleaseAsset: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"]["response"];
-        };
-        deleteRepoRuleset: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"]["response"];
-        };
-        deleteTagProtection: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"]["response"];
-        };
-        deleteWebhook: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"]["response"];
-        };
-        disableAutomatedSecurityFixes: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/automated-security-fixes"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/automated-security-fixes"]["response"];
-        };
-        disableDeploymentProtectionRule: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"]["response"];
-        };
-        disablePrivateVulnerabilityReporting: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"]["response"];
-        };
-        disableVulnerabilityAlerts: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/vulnerability-alerts"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/vulnerability-alerts"]["response"];
-        };
-        downloadArchive: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/zipball/{ref}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/zipball/{ref}"]["response"];
-        };
-        downloadTarballArchive: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/tarball/{ref}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/tarball/{ref}"]["response"];
-        };
-        downloadZipballArchive: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/zipball/{ref}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/zipball/{ref}"]["response"];
-        };
-        enableAutomatedSecurityFixes: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/automated-security-fixes"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/automated-security-fixes"]["response"];
-        };
-        enablePrivateVulnerabilityReporting: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"]["response"];
-        };
-        enableVulnerabilityAlerts: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/vulnerability-alerts"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/vulnerability-alerts"]["response"];
-        };
-        generateReleaseNotes: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/releases/generate-notes"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/releases/generate-notes"]["response"];
-        };
-        get: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}"]["response"];
-        };
-        getAccessRestrictions: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"]["response"];
-        };
-        getAdminBranchProtection: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["response"];
-        };
-        getAllDeploymentProtectionRules: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"]["response"];
-        };
-        getAllEnvironments: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/environments"]["response"];
-        };
-        getAllStatusCheckContexts: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"];
-        };
-        getAllTopics: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/topics"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/topics"]["response"];
-        };
-        getAppsWithAccessToProtectedBranch: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"];
-        };
-        getAutolink: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"]["response"];
-        };
-        getBranch: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}"]["response"];
-        };
-        getBranchProtection: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection"]["response"];
-        };
-        getBranchRules: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/rules/branches/{branch}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/rules/branches/{branch}"]["response"];
-        };
-        getClones: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/traffic/clones"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/traffic/clones"]["response"];
-        };
-        getCodeFrequencyStats: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/stats/code_frequency"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/stats/code_frequency"]["response"];
-        };
-        getCollaboratorPermissionLevel: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/collaborators/{username}/permission"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/collaborators/{username}/permission"]["response"];
-        };
-        getCombinedStatusForRef: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["response"];
-        };
-        getCommit: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{ref}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}"]["response"];
-        };
-        getCommitActivityStats: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/stats/commit_activity"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/stats/commit_activity"]["response"];
-        };
-        getCommitComment: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}"]["response"];
-        };
-        getCommitSignatureProtection: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["response"];
-        };
-        getCommunityProfileMetrics: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/community/profile"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/community/profile"]["response"];
-        };
-        getContent: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/contents/{path}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/contents/{path}"]["response"];
-        };
-        getContributorsStats: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/stats/contributors"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/stats/contributors"]["response"];
-        };
-        getCustomDeploymentProtectionRule: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"]["response"];
-        };
-        getCustomPropertiesValues: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/properties/values"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/properties/values"]["response"];
-        };
-        getDeployKey: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/keys/{key_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/keys/{key_id}"]["response"];
-        };
-        getDeployment: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}"]["response"];
-        };
-        getDeploymentBranchPolicy: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"]["response"];
-        };
-        getDeploymentStatus: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"]["response"];
-        };
-        getEnvironment: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}"]["response"];
-        };
-        getLatestPagesBuild: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pages/builds/latest"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pages/builds/latest"]["response"];
-        };
-        getLatestRelease: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases/latest"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/releases/latest"]["response"];
-        };
-        getOrgRuleSuite: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"]["response"];
-        };
-        getOrgRuleSuites: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/rulesets/rule-suites"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/rulesets/rule-suites"]["response"];
-        };
-        getOrgRuleset: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/rulesets/{ruleset_id}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/rulesets/{ruleset_id}"]["response"];
-        };
-        getOrgRulesets: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/rulesets"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/rulesets"]["response"];
-        };
-        getPages: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pages"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pages"]["response"];
-        };
-        getPagesBuild: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pages/builds/{build_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pages/builds/{build_id}"]["response"];
-        };
-        getPagesHealthCheck: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pages/health"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pages/health"]["response"];
-        };
-        getParticipationStats: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/stats/participation"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/stats/participation"]["response"];
-        };
-        getPullRequestReviewProtection: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["response"];
-        };
-        getPunchCardStats: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/stats/punch_card"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/stats/punch_card"]["response"];
-        };
-        getReadme: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/readme"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/readme"]["response"];
-        };
-        getReadmeInDirectory: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/readme/{dir}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/readme/{dir}"]["response"];
-        };
-        getRelease: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}"]["response"];
-        };
-        getReleaseAsset: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"]["response"];
-        };
-        getReleaseByTag: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases/tags/{tag}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/releases/tags/{tag}"]["response"];
-        };
-        getRepoRuleSuite: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"]["response"];
-        };
-        getRepoRuleSuites: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites"]["response"];
-        };
-        getRepoRuleset: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"]["response"];
-        };
-        getRepoRulesets: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/rulesets"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/rulesets"]["response"];
-        };
-        getStatusChecksProtection: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"];
-        };
-        getTeamsWithAccessToProtectedBranch: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"];
-        };
-        getTopPaths: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/traffic/popular/paths"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/traffic/popular/paths"]["response"];
-        };
-        getTopReferrers: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/traffic/popular/referrers"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/traffic/popular/referrers"]["response"];
-        };
-        getUsersWithAccessToProtectedBranch: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"];
-        };
-        getViews: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/traffic/views"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/traffic/views"]["response"];
-        };
-        getWebhook: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}"]["response"];
-        };
-        getWebhookConfigForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"]["response"];
-        };
-        getWebhookDelivery: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"]["response"];
-        };
-        listActivities: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/activity"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/activity"]["response"];
-        };
-        listAutolinks: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/autolinks"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/autolinks"]["response"];
-        };
-        listBranches: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/branches"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/branches"]["response"];
-        };
-        listBranchesForHeadCommit: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"]["response"];
-        };
-        listCollaborators: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/collaborators"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["response"];
-        };
-        listCommentsForCommit: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"];
-        };
-        listCommitCommentsForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/comments"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/comments"]["response"];
-        };
-        listCommitStatusesForRef: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["response"];
-        };
-        listCommits: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/commits"]["response"];
-        };
-        listContributors: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/contributors"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/contributors"]["response"];
-        };
-        listCustomDeploymentRuleIntegrations: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["response"];
-        };
-        listDeployKeys: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/keys"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/keys"]["response"];
-        };
-        listDeploymentBranchPolicies: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["response"];
-        };
-        listDeploymentStatuses: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"];
-        };
-        listDeployments: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/deployments"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/deployments"]["response"];
-        };
-        listForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/repos"]["parameters"];
-            response: Endpoints["GET /user/repos"]["response"];
-        };
-        listForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/repos"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/repos"]["response"];
-        };
-        listForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/repos"]["parameters"];
-            response: Endpoints["GET /users/{username}/repos"]["response"];
-        };
-        listForks: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/forks"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/forks"]["response"];
-        };
-        listInvitations: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/invitations"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/invitations"]["response"];
-        };
-        listInvitationsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/repository_invitations"]["parameters"];
-            response: Endpoints["GET /user/repository_invitations"]["response"];
-        };
-        listLanguages: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/languages"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/languages"]["response"];
-        };
-        listPagesBuilds: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["response"];
-        };
-        listPublic: {
-            parameters: RequestParameters & Endpoints["GET /repositories"]["parameters"];
-            response: Endpoints["GET /repositories"]["response"];
-        };
-        listPullRequestsAssociatedWithCommit: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["response"];
-        };
-        listReleaseAssets: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["response"];
-        };
-        listReleases: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/releases"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/releases"]["response"];
-        };
-        listTagProtection: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/tags/protection"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/tags/protection"]["response"];
-        };
-        listTags: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/tags"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/tags"]["response"];
-        };
-        listTeams: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/teams"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/teams"]["response"];
-        };
-        listWebhookDeliveries: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["response"];
-        };
-        listWebhooks: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/hooks"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/hooks"]["response"];
-        };
-        merge: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/merges"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/merges"]["response"];
-        };
-        mergeUpstream: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/merge-upstream"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/merge-upstream"]["response"];
-        };
-        pingWebhook: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"]["response"];
-        };
-        redeliverWebhookDelivery: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"]["response"];
-        };
-        removeAppAccessRestrictions: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"];
-        };
-        removeCollaborator: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/collaborators/{username}"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/collaborators/{username}"]["response"];
-        };
-        removeStatusCheckContexts: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"];
-        };
-        removeStatusCheckProtection: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"];
-        };
-        removeTeamAccessRestrictions: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"];
-        };
-        removeUserAccessRestrictions: {
-            parameters: RequestParameters & Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["parameters"];
-            response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"];
-        };
-        renameBranch: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/rename"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/rename"]["response"];
-        };
-        replaceAllTopics: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/topics"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/topics"]["response"];
-        };
-        requestPagesBuild: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/pages/builds"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/pages/builds"]["response"];
-        };
-        setAdminBranchProtection: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["response"];
-        };
-        setAppAccessRestrictions: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"];
-        };
-        setStatusCheckContexts: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"];
-        };
-        setTeamAccessRestrictions: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"];
-        };
-        setUserAccessRestrictions: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"];
-        };
-        testPushWebhook: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"]["response"];
-        };
-        transfer: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/transfer"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/transfer"]["response"];
-        };
-        update: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}"]["response"];
-        };
-        updateBranchProtection: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection"]["response"];
-        };
-        updateCommitComment: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/comments/{comment_id}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/comments/{comment_id}"]["response"];
-        };
-        updateDeploymentBranchPolicy: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"]["response"];
-        };
-        updateInformationAboutPagesSite: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/pages"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/pages"]["response"];
-        };
-        updateInvitation: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"]["response"];
-        };
-        updateOrgRuleset: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/rulesets/{ruleset_id}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/rulesets/{ruleset_id}"]["response"];
-        };
-        updatePullRequestReviewProtection: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["response"];
-        };
-        updateRelease: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/releases/{release_id}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/releases/{release_id}"]["response"];
-        };
-        updateReleaseAsset: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"]["response"];
-        };
-        updateRepoRuleset: {
-            parameters: RequestParameters & Endpoints["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"]["parameters"];
-            response: Endpoints["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"]["response"];
-        };
-        updateStatusCheckPotection: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"];
-        };
-        updateStatusCheckProtection: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"];
-        };
-        updateWebhook: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"]["response"];
-        };
-        updateWebhookConfigForRepo: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"]["response"];
-        };
-        uploadReleaseAsset: {
-            parameters: RequestParameters & Endpoints["POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}"]["parameters"];
-            response: Endpoints["POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}"]["response"];
-        };
-    };
-    search: {
-        code: {
-            parameters: RequestParameters & Endpoints["GET /search/code"]["parameters"];
-            response: Endpoints["GET /search/code"]["response"];
-        };
-        commits: {
-            parameters: RequestParameters & Endpoints["GET /search/commits"]["parameters"];
-            response: Endpoints["GET /search/commits"]["response"];
-        };
-        issuesAndPullRequests: {
-            parameters: RequestParameters & Endpoints["GET /search/issues"]["parameters"];
-            response: Endpoints["GET /search/issues"]["response"];
-        };
-        labels: {
-            parameters: RequestParameters & Endpoints["GET /search/labels"]["parameters"];
-            response: Endpoints["GET /search/labels"]["response"];
-        };
-        repos: {
-            parameters: RequestParameters & Endpoints["GET /search/repositories"]["parameters"];
-            response: Endpoints["GET /search/repositories"]["response"];
-        };
-        topics: {
-            parameters: RequestParameters & Endpoints["GET /search/topics"]["parameters"];
-            response: Endpoints["GET /search/topics"]["response"];
-        };
-        users: {
-            parameters: RequestParameters & Endpoints["GET /search/users"]["parameters"];
-            response: Endpoints["GET /search/users"]["response"];
-        };
-    };
-    secretScanning: {
-        getAlert: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]["response"];
-        };
-        listAlertsForEnterprise: {
-            parameters: RequestParameters & Endpoints["GET /enterprises/{enterprise}/secret-scanning/alerts"]["parameters"];
-            response: Endpoints["GET /enterprises/{enterprise}/secret-scanning/alerts"]["response"];
-        };
-        listAlertsForOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["response"];
-        };
-        listAlertsForRepo: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["response"];
-        };
-        listLocationsForAlert: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["response"];
-        };
-        updateAlert: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]["response"];
-        };
-    };
-    securityAdvisories: {
-        createPrivateVulnerabilityReport: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/security-advisories/reports"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/security-advisories/reports"]["response"];
-        };
-        createRepositoryAdvisory: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/security-advisories"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/security-advisories"]["response"];
-        };
-        createRepositoryAdvisoryCveRequest: {
-            parameters: RequestParameters & Endpoints["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"]["parameters"];
-            response: Endpoints["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"]["response"];
-        };
-        getGlobalAdvisory: {
-            parameters: RequestParameters & Endpoints["GET /advisories/{ghsa_id}"]["parameters"];
-            response: Endpoints["GET /advisories/{ghsa_id}"]["response"];
-        };
-        getRepositoryAdvisory: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]["response"];
-        };
-        listGlobalAdvisories: {
-            parameters: RequestParameters & Endpoints["GET /advisories"]["parameters"];
-            response: Endpoints["GET /advisories"]["response"];
-        };
-        listOrgRepositoryAdvisories: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/security-advisories"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/security-advisories"]["response"];
-        };
-        listRepositoryAdvisories: {
-            parameters: RequestParameters & Endpoints["GET /repos/{owner}/{repo}/security-advisories"]["parameters"];
-            response: Endpoints["GET /repos/{owner}/{repo}/security-advisories"]["response"];
-        };
-        updateRepositoryAdvisory: {
-            parameters: RequestParameters & Endpoints["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]["parameters"];
-            response: Endpoints["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]["response"];
-        };
-    };
-    teams: {
-        addOrUpdateMembershipForUserInOrg: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"]["response"];
-        };
-        addOrUpdateProjectPermissionsInOrg: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"]["response"];
-        };
-        addOrUpdateRepoPermissionsInOrg: {
-            parameters: RequestParameters & Endpoints["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["parameters"];
-            response: Endpoints["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["response"];
-        };
-        checkPermissionsForProjectInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"]["response"];
-        };
-        checkPermissionsForRepoInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["response"];
-        };
-        create: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/teams"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/teams"]["response"];
-        };
-        createDiscussionCommentInOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"];
-        };
-        createDiscussionInOrg: {
-            parameters: RequestParameters & Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions"]["parameters"];
-            response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions"]["response"];
-        };
-        deleteDiscussionCommentInOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["response"];
-        };
-        deleteDiscussionInOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["response"];
-        };
-        deleteInOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}"]["response"];
-        };
-        getByName: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}"]["response"];
-        };
-        getDiscussionCommentInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["response"];
-        };
-        getDiscussionInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["response"];
-        };
-        getMembershipForUserInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"]["response"];
-        };
-        list: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams"]["response"];
-        };
-        listChildInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["response"];
-        };
-        listDiscussionCommentsInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"];
-        };
-        listDiscussionsInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["response"];
-        };
-        listForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/teams"]["parameters"];
-            response: Endpoints["GET /user/teams"]["response"];
-        };
-        listMembersInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["response"];
-        };
-        listPendingInvitationsInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["response"];
-        };
-        listProjectsInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["response"];
-        };
-        listReposInOrg: {
-            parameters: RequestParameters & Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["parameters"];
-            response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["response"];
-        };
-        removeMembershipForUserInOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"]["response"];
-        };
-        removeProjectInOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"]["response"];
-        };
-        removeRepoInOrg: {
-            parameters: RequestParameters & Endpoints["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["parameters"];
-            response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["response"];
-        };
-        updateDiscussionCommentInOrg: {
-            parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["parameters"];
-            response: Endpoints["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["response"];
-        };
-        updateDiscussionInOrg: {
-            parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["parameters"];
-            response: Endpoints["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["response"];
-        };
-        updateInOrg: {
-            parameters: RequestParameters & Endpoints["PATCH /orgs/{org}/teams/{team_slug}"]["parameters"];
-            response: Endpoints["PATCH /orgs/{org}/teams/{team_slug}"]["response"];
-        };
-    };
-    users: {
-        addEmailForAuthenticated: {
-            parameters: RequestParameters & Endpoints["POST /user/emails"]["parameters"];
-            response: Endpoints["POST /user/emails"]["response"];
-        };
-        addEmailForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/emails"]["parameters"];
-            response: Endpoints["POST /user/emails"]["response"];
-        };
-        addSocialAccountForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/social_accounts"]["parameters"];
-            response: Endpoints["POST /user/social_accounts"]["response"];
-        };
-        block: {
-            parameters: RequestParameters & Endpoints["PUT /user/blocks/{username}"]["parameters"];
-            response: Endpoints["PUT /user/blocks/{username}"]["response"];
-        };
-        checkBlocked: {
-            parameters: RequestParameters & Endpoints["GET /user/blocks/{username}"]["parameters"];
-            response: Endpoints["GET /user/blocks/{username}"]["response"];
-        };
-        checkFollowingForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/following/{target_user}"]["parameters"];
-            response: Endpoints["GET /users/{username}/following/{target_user}"]["response"];
-        };
-        checkPersonIsFollowedByAuthenticated: {
-            parameters: RequestParameters & Endpoints["GET /user/following/{username}"]["parameters"];
-            response: Endpoints["GET /user/following/{username}"]["response"];
-        };
-        createGpgKeyForAuthenticated: {
-            parameters: RequestParameters & Endpoints["POST /user/gpg_keys"]["parameters"];
-            response: Endpoints["POST /user/gpg_keys"]["response"];
-        };
-        createGpgKeyForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/gpg_keys"]["parameters"];
-            response: Endpoints["POST /user/gpg_keys"]["response"];
-        };
-        createPublicSshKeyForAuthenticated: {
-            parameters: RequestParameters & Endpoints["POST /user/keys"]["parameters"];
-            response: Endpoints["POST /user/keys"]["response"];
-        };
-        createPublicSshKeyForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/keys"]["parameters"];
-            response: Endpoints["POST /user/keys"]["response"];
-        };
-        createSshSigningKeyForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["POST /user/ssh_signing_keys"]["parameters"];
-            response: Endpoints["POST /user/ssh_signing_keys"]["response"];
-        };
-        deleteEmailForAuthenticated: {
-            parameters: RequestParameters & Endpoints["DELETE /user/emails"]["parameters"];
-            response: Endpoints["DELETE /user/emails"]["response"];
-        };
-        deleteEmailForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/emails"]["parameters"];
-            response: Endpoints["DELETE /user/emails"]["response"];
-        };
-        deleteGpgKeyForAuthenticated: {
-            parameters: RequestParameters & Endpoints["DELETE /user/gpg_keys/{gpg_key_id}"]["parameters"];
-            response: Endpoints["DELETE /user/gpg_keys/{gpg_key_id}"]["response"];
-        };
-        deleteGpgKeyForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/gpg_keys/{gpg_key_id}"]["parameters"];
-            response: Endpoints["DELETE /user/gpg_keys/{gpg_key_id}"]["response"];
-        };
-        deletePublicSshKeyForAuthenticated: {
-            parameters: RequestParameters & Endpoints["DELETE /user/keys/{key_id}"]["parameters"];
-            response: Endpoints["DELETE /user/keys/{key_id}"]["response"];
-        };
-        deletePublicSshKeyForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/keys/{key_id}"]["parameters"];
-            response: Endpoints["DELETE /user/keys/{key_id}"]["response"];
-        };
-        deleteSocialAccountForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/social_accounts"]["parameters"];
-            response: Endpoints["DELETE /user/social_accounts"]["response"];
-        };
-        deleteSshSigningKeyForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"]["parameters"];
-            response: Endpoints["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"]["response"];
-        };
-        follow: {
-            parameters: RequestParameters & Endpoints["PUT /user/following/{username}"]["parameters"];
-            response: Endpoints["PUT /user/following/{username}"]["response"];
-        };
-        getAuthenticated: {
-            parameters: RequestParameters & Endpoints["GET /user"]["parameters"];
-            response: Endpoints["GET /user"]["response"];
-        };
-        getByUsername: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}"]["parameters"];
-            response: Endpoints["GET /users/{username}"]["response"];
-        };
-        getContextForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/hovercard"]["parameters"];
-            response: Endpoints["GET /users/{username}/hovercard"]["response"];
-        };
-        getGpgKeyForAuthenticated: {
-            parameters: RequestParameters & Endpoints["GET /user/gpg_keys/{gpg_key_id}"]["parameters"];
-            response: Endpoints["GET /user/gpg_keys/{gpg_key_id}"]["response"];
-        };
-        getGpgKeyForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/gpg_keys/{gpg_key_id}"]["parameters"];
-            response: Endpoints["GET /user/gpg_keys/{gpg_key_id}"]["response"];
-        };
-        getPublicSshKeyForAuthenticated: {
-            parameters: RequestParameters & Endpoints["GET /user/keys/{key_id}"]["parameters"];
-            response: Endpoints["GET /user/keys/{key_id}"]["response"];
-        };
-        getPublicSshKeyForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/keys/{key_id}"]["parameters"];
-            response: Endpoints["GET /user/keys/{key_id}"]["response"];
-        };
-        getSshSigningKeyForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/ssh_signing_keys/{ssh_signing_key_id}"]["parameters"];
-            response: Endpoints["GET /user/ssh_signing_keys/{ssh_signing_key_id}"]["response"];
-        };
-        list: {
-            parameters: RequestParameters & Endpoints["GET /users"]["parameters"];
-            response: Endpoints["GET /users"]["response"];
-        };
-        listBlockedByAuthenticated: {
-            parameters: RequestParameters & Endpoints["GET /user/blocks"]["parameters"];
-            response: Endpoints["GET /user/blocks"]["response"];
-        };
-        listBlockedByAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/blocks"]["parameters"];
-            response: Endpoints["GET /user/blocks"]["response"];
-        };
-        listEmailsForAuthenticated: {
-            parameters: RequestParameters & Endpoints["GET /user/emails"]["parameters"];
-            response: Endpoints["GET /user/emails"]["response"];
-        };
-        listEmailsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/emails"]["parameters"];
-            response: Endpoints["GET /user/emails"]["response"];
-        };
-        listFollowedByAuthenticated: {
-            parameters: RequestParameters & Endpoints["GET /user/following"]["parameters"];
-            response: Endpoints["GET /user/following"]["response"];
-        };
-        listFollowedByAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/following"]["parameters"];
-            response: Endpoints["GET /user/following"]["response"];
-        };
-        listFollowersForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/followers"]["parameters"];
-            response: Endpoints["GET /user/followers"]["response"];
-        };
-        listFollowersForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/followers"]["parameters"];
-            response: Endpoints["GET /users/{username}/followers"]["response"];
-        };
-        listFollowingForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/following"]["parameters"];
-            response: Endpoints["GET /users/{username}/following"]["response"];
-        };
-        listGpgKeysForAuthenticated: {
-            parameters: RequestParameters & Endpoints["GET /user/gpg_keys"]["parameters"];
-            response: Endpoints["GET /user/gpg_keys"]["response"];
-        };
-        listGpgKeysForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/gpg_keys"]["parameters"];
-            response: Endpoints["GET /user/gpg_keys"]["response"];
-        };
-        listGpgKeysForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/gpg_keys"]["parameters"];
-            response: Endpoints["GET /users/{username}/gpg_keys"]["response"];
-        };
-        listPublicEmailsForAuthenticated: {
-            parameters: RequestParameters & Endpoints["GET /user/public_emails"]["parameters"];
-            response: Endpoints["GET /user/public_emails"]["response"];
-        };
-        listPublicEmailsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/public_emails"]["parameters"];
-            response: Endpoints["GET /user/public_emails"]["response"];
-        };
-        listPublicKeysForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/keys"]["parameters"];
-            response: Endpoints["GET /users/{username}/keys"]["response"];
-        };
-        listPublicSshKeysForAuthenticated: {
-            parameters: RequestParameters & Endpoints["GET /user/keys"]["parameters"];
-            response: Endpoints["GET /user/keys"]["response"];
-        };
-        listPublicSshKeysForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/keys"]["parameters"];
-            response: Endpoints["GET /user/keys"]["response"];
-        };
-        listSocialAccountsForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/social_accounts"]["parameters"];
-            response: Endpoints["GET /user/social_accounts"]["response"];
-        };
-        listSocialAccountsForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/social_accounts"]["parameters"];
-            response: Endpoints["GET /users/{username}/social_accounts"]["response"];
-        };
-        listSshSigningKeysForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["GET /user/ssh_signing_keys"]["parameters"];
-            response: Endpoints["GET /user/ssh_signing_keys"]["response"];
-        };
-        listSshSigningKeysForUser: {
-            parameters: RequestParameters & Endpoints["GET /users/{username}/ssh_signing_keys"]["parameters"];
-            response: Endpoints["GET /users/{username}/ssh_signing_keys"]["response"];
-        };
-        setPrimaryEmailVisibilityForAuthenticated: {
-            parameters: RequestParameters & Endpoints["PATCH /user/email/visibility"]["parameters"];
-            response: Endpoints["PATCH /user/email/visibility"]["response"];
-        };
-        setPrimaryEmailVisibilityForAuthenticatedUser: {
-            parameters: RequestParameters & Endpoints["PATCH /user/email/visibility"]["parameters"];
-            response: Endpoints["PATCH /user/email/visibility"]["response"];
-        };
-        unblock: {
-            parameters: RequestParameters & Endpoints["DELETE /user/blocks/{username}"]["parameters"];
-            response: Endpoints["DELETE /user/blocks/{username}"]["response"];
-        };
-        unfollow: {
-            parameters: RequestParameters & Endpoints["DELETE /user/following/{username}"]["parameters"];
-            response: Endpoints["DELETE /user/following/{username}"]["response"];
-        };
-        updateAuthenticated: {
-            parameters: RequestParameters & Endpoints["PATCH /user"]["parameters"];
-            response: Endpoints["PATCH /user"]["response"];
-        };
-    };
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts
deleted file mode 100644
index 9b0af18..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import type { Octokit } from "@octokit/core";
-export type { RestEndpointMethodTypes } from "./generated/parameters-and-response-types.js";
-import type { Api } from "./types.js";
-export declare function restEndpointMethods(octokit: Octokit): Api;
-export declare namespace restEndpointMethods {
-    var VERSION: string;
-}
-export declare function legacyRestEndpointMethods(octokit: Octokit): Api["rest"] & Api;
-export declare namespace legacyRestEndpointMethods {
-    var VERSION: string;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts
deleted file mode 100644
index 5fbfe84..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import type { Route, RequestParameters } from "@octokit/types";
-import type { RestEndpointMethods } from "./generated/method-types.js";
-export type Api = {
-    rest: RestEndpointMethods;
-};
-export type EndpointDecorations = {
-    mapToData?: string;
-    deprecated?: string;
-    renamed?: [string, string];
-    renamedParameters?: {
-        [name: string]: string;
-    };
-};
-export type EndpointsDefaultsAndDecorations = {
-    [scope: string]: {
-        [methodName: string]: [Route, RequestParameters?, EndpointDecorations?];
-    };
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts
deleted file mode 100644
index 9ec3234..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare const VERSION = "10.2.0";
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js
deleted file mode 100644
index 937af7d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js
+++ /dev/null
@@ -1,2078 +0,0 @@
-// pkg/dist-src/version.js
-var VERSION = "10.2.0";
-
-// pkg/dist-src/generated/endpoints.js
-var Endpoints = {
-  actions: {
-    addCustomLabelsToSelfHostedRunnerForOrg: [
-      "POST /orgs/{org}/actions/runners/{runner_id}/labels"
-    ],
-    addCustomLabelsToSelfHostedRunnerForRepo: [
-      "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
-    ],
-    addSelectedRepoToOrgSecret: [
-      "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    addSelectedRepoToOrgVariable: [
-      "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"
-    ],
-    approveWorkflowRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"
-    ],
-    cancelWorkflowRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"
-    ],
-    createEnvironmentVariable: [
-      "POST /repositories/{repository_id}/environments/{environment_name}/variables"
-    ],
-    createOrUpdateEnvironmentSecret: [
-      "PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"
-    ],
-    createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
-    createOrUpdateRepoSecret: [
-      "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"
-    ],
-    createOrgVariable: ["POST /orgs/{org}/actions/variables"],
-    createRegistrationTokenForOrg: [
-      "POST /orgs/{org}/actions/runners/registration-token"
-    ],
-    createRegistrationTokenForRepo: [
-      "POST /repos/{owner}/{repo}/actions/runners/registration-token"
-    ],
-    createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"],
-    createRemoveTokenForRepo: [
-      "POST /repos/{owner}/{repo}/actions/runners/remove-token"
-    ],
-    createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"],
-    createWorkflowDispatch: [
-      "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"
-    ],
-    deleteActionsCacheById: [
-      "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"
-    ],
-    deleteActionsCacheByKey: [
-      "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"
-    ],
-    deleteArtifact: [
-      "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"
-    ],
-    deleteEnvironmentSecret: [
-      "DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"
-    ],
-    deleteEnvironmentVariable: [
-      "DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}"
-    ],
-    deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
-    deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"],
-    deleteRepoSecret: [
-      "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"
-    ],
-    deleteRepoVariable: [
-      "DELETE /repos/{owner}/{repo}/actions/variables/{name}"
-    ],
-    deleteSelfHostedRunnerFromOrg: [
-      "DELETE /orgs/{org}/actions/runners/{runner_id}"
-    ],
-    deleteSelfHostedRunnerFromRepo: [
-      "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"
-    ],
-    deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],
-    deleteWorkflowRunLogs: [
-      "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"
-    ],
-    disableSelectedRepositoryGithubActionsOrganization: [
-      "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"
-    ],
-    disableWorkflow: [
-      "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"
-    ],
-    downloadArtifact: [
-      "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"
-    ],
-    downloadJobLogsForWorkflowRun: [
-      "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"
-    ],
-    downloadWorkflowRunAttemptLogs: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"
-    ],
-    downloadWorkflowRunLogs: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"
-    ],
-    enableSelectedRepositoryGithubActionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"
-    ],
-    enableWorkflow: [
-      "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"
-    ],
-    forceCancelWorkflowRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"
-    ],
-    generateRunnerJitconfigForOrg: [
-      "POST /orgs/{org}/actions/runners/generate-jitconfig"
-    ],
-    generateRunnerJitconfigForRepo: [
-      "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"
-    ],
-    getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"],
-    getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"],
-    getActionsCacheUsageByRepoForOrg: [
-      "GET /orgs/{org}/actions/cache/usage-by-repository"
-    ],
-    getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"],
-    getAllowedActionsOrganization: [
-      "GET /orgs/{org}/actions/permissions/selected-actions"
-    ],
-    getAllowedActionsRepository: [
-      "GET /repos/{owner}/{repo}/actions/permissions/selected-actions"
-    ],
-    getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
-    getEnvironmentPublicKey: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"
-    ],
-    getEnvironmentSecret: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"
-    ],
-    getEnvironmentVariable: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}"
-    ],
-    getGithubActionsDefaultWorkflowPermissionsOrganization: [
-      "GET /orgs/{org}/actions/permissions/workflow"
-    ],
-    getGithubActionsDefaultWorkflowPermissionsRepository: [
-      "GET /repos/{owner}/{repo}/actions/permissions/workflow"
-    ],
-    getGithubActionsPermissionsOrganization: [
-      "GET /orgs/{org}/actions/permissions"
-    ],
-    getGithubActionsPermissionsRepository: [
-      "GET /repos/{owner}/{repo}/actions/permissions"
-    ],
-    getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
-    getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
-    getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
-    getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"],
-    getPendingDeploymentsForRun: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"
-    ],
-    getRepoPermissions: [
-      "GET /repos/{owner}/{repo}/actions/permissions",
-      {},
-      { renamed: ["actions", "getGithubActionsPermissionsRepository"] }
-    ],
-    getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
-    getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
-    getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"],
-    getReviewsForRun: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"
-    ],
-    getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
-    getSelfHostedRunnerForRepo: [
-      "GET /repos/{owner}/{repo}/actions/runners/{runner_id}"
-    ],
-    getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
-    getWorkflowAccessToRepository: [
-      "GET /repos/{owner}/{repo}/actions/permissions/access"
-    ],
-    getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],
-    getWorkflowRunAttempt: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"
-    ],
-    getWorkflowRunUsage: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"
-    ],
-    getWorkflowUsage: [
-      "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"
-    ],
-    listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
-    listEnvironmentSecrets: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/secrets"
-    ],
-    listEnvironmentVariables: [
-      "GET /repositories/{repository_id}/environments/{environment_name}/variables"
-    ],
-    listJobsForWorkflowRun: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"
-    ],
-    listJobsForWorkflowRunAttempt: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"
-    ],
-    listLabelsForSelfHostedRunnerForOrg: [
-      "GET /orgs/{org}/actions/runners/{runner_id}/labels"
-    ],
-    listLabelsForSelfHostedRunnerForRepo: [
-      "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
-    ],
-    listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
-    listOrgVariables: ["GET /orgs/{org}/actions/variables"],
-    listRepoOrganizationSecrets: [
-      "GET /repos/{owner}/{repo}/actions/organization-secrets"
-    ],
-    listRepoOrganizationVariables: [
-      "GET /repos/{owner}/{repo}/actions/organization-variables"
-    ],
-    listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
-    listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"],
-    listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"],
-    listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"],
-    listRunnerApplicationsForRepo: [
-      "GET /repos/{owner}/{repo}/actions/runners/downloads"
-    ],
-    listSelectedReposForOrgSecret: [
-      "GET /orgs/{org}/actions/secrets/{secret_name}/repositories"
-    ],
-    listSelectedReposForOrgVariable: [
-      "GET /orgs/{org}/actions/variables/{name}/repositories"
-    ],
-    listSelectedRepositoriesEnabledGithubActionsOrganization: [
-      "GET /orgs/{org}/actions/permissions/repositories"
-    ],
-    listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"],
-    listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"],
-    listWorkflowRunArtifacts: [
-      "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"
-    ],
-    listWorkflowRuns: [
-      "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"
-    ],
-    listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
-    reRunJobForWorkflowRun: [
-      "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"
-    ],
-    reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
-    reRunWorkflowFailedJobs: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"
-    ],
-    removeAllCustomLabelsFromSelfHostedRunnerForOrg: [
-      "DELETE /orgs/{org}/actions/runners/{runner_id}/labels"
-    ],
-    removeAllCustomLabelsFromSelfHostedRunnerForRepo: [
-      "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
-    ],
-    removeCustomLabelFromSelfHostedRunnerForOrg: [
-      "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"
-    ],
-    removeCustomLabelFromSelfHostedRunnerForRepo: [
-      "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"
-    ],
-    removeSelectedRepoFromOrgSecret: [
-      "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    removeSelectedRepoFromOrgVariable: [
-      "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"
-    ],
-    reviewCustomGatesForRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"
-    ],
-    reviewPendingDeploymentsForRun: [
-      "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"
-    ],
-    setAllowedActionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions/selected-actions"
-    ],
-    setAllowedActionsRepository: [
-      "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"
-    ],
-    setCustomLabelsForSelfHostedRunnerForOrg: [
-      "PUT /orgs/{org}/actions/runners/{runner_id}/labels"
-    ],
-    setCustomLabelsForSelfHostedRunnerForRepo: [
-      "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
-    ],
-    setGithubActionsDefaultWorkflowPermissionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions/workflow"
-    ],
-    setGithubActionsDefaultWorkflowPermissionsRepository: [
-      "PUT /repos/{owner}/{repo}/actions/permissions/workflow"
-    ],
-    setGithubActionsPermissionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions"
-    ],
-    setGithubActionsPermissionsRepository: [
-      "PUT /repos/{owner}/{repo}/actions/permissions"
-    ],
-    setSelectedReposForOrgSecret: [
-      "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"
-    ],
-    setSelectedReposForOrgVariable: [
-      "PUT /orgs/{org}/actions/variables/{name}/repositories"
-    ],
-    setSelectedRepositoriesEnabledGithubActionsOrganization: [
-      "PUT /orgs/{org}/actions/permissions/repositories"
-    ],
-    setWorkflowAccessToRepository: [
-      "PUT /repos/{owner}/{repo}/actions/permissions/access"
-    ],
-    updateEnvironmentVariable: [
-      "PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}"
-    ],
-    updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"],
-    updateRepoVariable: [
-      "PATCH /repos/{owner}/{repo}/actions/variables/{name}"
-    ]
-  },
-  activity: {
-    checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"],
-    deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"],
-    deleteThreadSubscription: [
-      "DELETE /notifications/threads/{thread_id}/subscription"
-    ],
-    getFeeds: ["GET /feeds"],
-    getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"],
-    getThread: ["GET /notifications/threads/{thread_id}"],
-    getThreadSubscriptionForAuthenticatedUser: [
-      "GET /notifications/threads/{thread_id}/subscription"
-    ],
-    listEventsForAuthenticatedUser: ["GET /users/{username}/events"],
-    listNotificationsForAuthenticatedUser: ["GET /notifications"],
-    listOrgEventsForAuthenticatedUser: [
-      "GET /users/{username}/events/orgs/{org}"
-    ],
-    listPublicEvents: ["GET /events"],
-    listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"],
-    listPublicEventsForUser: ["GET /users/{username}/events/public"],
-    listPublicOrgEvents: ["GET /orgs/{org}/events"],
-    listReceivedEventsForUser: ["GET /users/{username}/received_events"],
-    listReceivedPublicEventsForUser: [
-      "GET /users/{username}/received_events/public"
-    ],
-    listRepoEvents: ["GET /repos/{owner}/{repo}/events"],
-    listRepoNotificationsForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/notifications"
-    ],
-    listReposStarredByAuthenticatedUser: ["GET /user/starred"],
-    listReposStarredByUser: ["GET /users/{username}/starred"],
-    listReposWatchedByUser: ["GET /users/{username}/subscriptions"],
-    listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"],
-    listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"],
-    listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"],
-    markNotificationsAsRead: ["PUT /notifications"],
-    markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"],
-    markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"],
-    setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"],
-    setThreadSubscription: [
-      "PUT /notifications/threads/{thread_id}/subscription"
-    ],
-    starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"],
-    unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"]
-  },
-  apps: {
-    addRepoToInstallation: [
-      "PUT /user/installations/{installation_id}/repositories/{repository_id}",
-      {},
-      { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] }
-    ],
-    addRepoToInstallationForAuthenticatedUser: [
-      "PUT /user/installations/{installation_id}/repositories/{repository_id}"
-    ],
-    checkToken: ["POST /applications/{client_id}/token"],
-    createFromManifest: ["POST /app-manifests/{code}/conversions"],
-    createInstallationAccessToken: [
-      "POST /app/installations/{installation_id}/access_tokens"
-    ],
-    deleteAuthorization: ["DELETE /applications/{client_id}/grant"],
-    deleteInstallation: ["DELETE /app/installations/{installation_id}"],
-    deleteToken: ["DELETE /applications/{client_id}/token"],
-    getAuthenticated: ["GET /app"],
-    getBySlug: ["GET /apps/{app_slug}"],
-    getInstallation: ["GET /app/installations/{installation_id}"],
-    getOrgInstallation: ["GET /orgs/{org}/installation"],
-    getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"],
-    getSubscriptionPlanForAccount: [
-      "GET /marketplace_listing/accounts/{account_id}"
-    ],
-    getSubscriptionPlanForAccountStubbed: [
-      "GET /marketplace_listing/stubbed/accounts/{account_id}"
-    ],
-    getUserInstallation: ["GET /users/{username}/installation"],
-    getWebhookConfigForApp: ["GET /app/hook/config"],
-    getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"],
-    listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"],
-    listAccountsForPlanStubbed: [
-      "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"
-    ],
-    listInstallationReposForAuthenticatedUser: [
-      "GET /user/installations/{installation_id}/repositories"
-    ],
-    listInstallationRequestsForAuthenticatedApp: [
-      "GET /app/installation-requests"
-    ],
-    listInstallations: ["GET /app/installations"],
-    listInstallationsForAuthenticatedUser: ["GET /user/installations"],
-    listPlans: ["GET /marketplace_listing/plans"],
-    listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"],
-    listReposAccessibleToInstallation: ["GET /installation/repositories"],
-    listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"],
-    listSubscriptionsForAuthenticatedUserStubbed: [
-      "GET /user/marketplace_purchases/stubbed"
-    ],
-    listWebhookDeliveries: ["GET /app/hook/deliveries"],
-    redeliverWebhookDelivery: [
-      "POST /app/hook/deliveries/{delivery_id}/attempts"
-    ],
-    removeRepoFromInstallation: [
-      "DELETE /user/installations/{installation_id}/repositories/{repository_id}",
-      {},
-      { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] }
-    ],
-    removeRepoFromInstallationForAuthenticatedUser: [
-      "DELETE /user/installations/{installation_id}/repositories/{repository_id}"
-    ],
-    resetToken: ["PATCH /applications/{client_id}/token"],
-    revokeInstallationAccessToken: ["DELETE /installation/token"],
-    scopeToken: ["POST /applications/{client_id}/token/scoped"],
-    suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"],
-    unsuspendInstallation: [
-      "DELETE /app/installations/{installation_id}/suspended"
-    ],
-    updateWebhookConfigForApp: ["PATCH /app/hook/config"]
-  },
-  billing: {
-    getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"],
-    getGithubActionsBillingUser: [
-      "GET /users/{username}/settings/billing/actions"
-    ],
-    getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"],
-    getGithubPackagesBillingUser: [
-      "GET /users/{username}/settings/billing/packages"
-    ],
-    getSharedStorageBillingOrg: [
-      "GET /orgs/{org}/settings/billing/shared-storage"
-    ],
-    getSharedStorageBillingUser: [
-      "GET /users/{username}/settings/billing/shared-storage"
-    ]
-  },
-  checks: {
-    create: ["POST /repos/{owner}/{repo}/check-runs"],
-    createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
-    get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],
-    getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],
-    listAnnotations: [
-      "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"
-    ],
-    listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],
-    listForSuite: [
-      "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"
-    ],
-    listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],
-    rerequestRun: [
-      "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"
-    ],
-    rerequestSuite: [
-      "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"
-    ],
-    setSuitesPreferences: [
-      "PATCH /repos/{owner}/{repo}/check-suites/preferences"
-    ],
-    update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]
-  },
-  codeScanning: {
-    deleteAnalysis: [
-      "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"
-    ],
-    getAlert: [
-      "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",
-      {},
-      { renamedParameters: { alert_id: "alert_number" } }
-    ],
-    getAnalysis: [
-      "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"
-    ],
-    getCodeqlDatabase: [
-      "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"
-    ],
-    getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"],
-    getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],
-    listAlertInstances: [
-      "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"
-    ],
-    listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"],
-    listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"],
-    listAlertsInstances: [
-      "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
-      {},
-      { renamed: ["codeScanning", "listAlertInstances"] }
-    ],
-    listCodeqlDatabases: [
-      "GET /repos/{owner}/{repo}/code-scanning/codeql/databases"
-    ],
-    listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"],
-    updateAlert: [
-      "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"
-    ],
-    updateDefaultSetup: [
-      "PATCH /repos/{owner}/{repo}/code-scanning/default-setup"
-    ],
-    uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"]
-  },
-  codesOfConduct: {
-    getAllCodesOfConduct: ["GET /codes_of_conduct"],
-    getConductCode: ["GET /codes_of_conduct/{key}"]
-  },
-  codespaces: {
-    addRepositoryForSecretForAuthenticatedUser: [
-      "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    addSelectedRepoToOrgSecret: [
-      "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    checkPermissionsForDevcontainer: [
-      "GET /repos/{owner}/{repo}/codespaces/permissions_check"
-    ],
-    codespaceMachinesForAuthenticatedUser: [
-      "GET /user/codespaces/{codespace_name}/machines"
-    ],
-    createForAuthenticatedUser: ["POST /user/codespaces"],
-    createOrUpdateOrgSecret: [
-      "PUT /orgs/{org}/codespaces/secrets/{secret_name}"
-    ],
-    createOrUpdateRepoSecret: [
-      "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
-    ],
-    createOrUpdateSecretForAuthenticatedUser: [
-      "PUT /user/codespaces/secrets/{secret_name}"
-    ],
-    createWithPrForAuthenticatedUser: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"
-    ],
-    createWithRepoForAuthenticatedUser: [
-      "POST /repos/{owner}/{repo}/codespaces"
-    ],
-    deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"],
-    deleteFromOrganization: [
-      "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"
-    ],
-    deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],
-    deleteRepoSecret: [
-      "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
-    ],
-    deleteSecretForAuthenticatedUser: [
-      "DELETE /user/codespaces/secrets/{secret_name}"
-    ],
-    exportForAuthenticatedUser: [
-      "POST /user/codespaces/{codespace_name}/exports"
-    ],
-    getCodespacesForUserInOrg: [
-      "GET /orgs/{org}/members/{username}/codespaces"
-    ],
-    getExportDetailsForAuthenticatedUser: [
-      "GET /user/codespaces/{codespace_name}/exports/{export_id}"
-    ],
-    getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"],
-    getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"],
-    getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"],
-    getPublicKeyForAuthenticatedUser: [
-      "GET /user/codespaces/secrets/public-key"
-    ],
-    getRepoPublicKey: [
-      "GET /repos/{owner}/{repo}/codespaces/secrets/public-key"
-    ],
-    getRepoSecret: [
-      "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
-    ],
-    getSecretForAuthenticatedUser: [
-      "GET /user/codespaces/secrets/{secret_name}"
-    ],
-    listDevcontainersInRepositoryForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/codespaces/devcontainers"
-    ],
-    listForAuthenticatedUser: ["GET /user/codespaces"],
-    listInOrganization: [
-      "GET /orgs/{org}/codespaces",
-      {},
-      { renamedParameters: { org_id: "org" } }
-    ],
-    listInRepositoryForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/codespaces"
-    ],
-    listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"],
-    listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
-    listRepositoriesForSecretForAuthenticatedUser: [
-      "GET /user/codespaces/secrets/{secret_name}/repositories"
-    ],
-    listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"],
-    listSelectedReposForOrgSecret: [
-      "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"
-    ],
-    preFlightWithRepoForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/codespaces/new"
-    ],
-    publishForAuthenticatedUser: [
-      "POST /user/codespaces/{codespace_name}/publish"
-    ],
-    removeRepositoryForSecretForAuthenticatedUser: [
-      "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    removeSelectedRepoFromOrgSecret: [
-      "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    repoMachinesForAuthenticatedUser: [
-      "GET /repos/{owner}/{repo}/codespaces/machines"
-    ],
-    setRepositoriesForSecretForAuthenticatedUser: [
-      "PUT /user/codespaces/secrets/{secret_name}/repositories"
-    ],
-    setSelectedReposForOrgSecret: [
-      "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"
-    ],
-    startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"],
-    stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"],
-    stopInOrganization: [
-      "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"
-    ],
-    updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
-  },
-  copilot: {
-    addCopilotForBusinessSeatsForTeams: [
-      "POST /orgs/{org}/copilot/billing/selected_teams"
-    ],
-    addCopilotForBusinessSeatsForUsers: [
-      "POST /orgs/{org}/copilot/billing/selected_users"
-    ],
-    cancelCopilotSeatAssignmentForTeams: [
-      "DELETE /orgs/{org}/copilot/billing/selected_teams"
-    ],
-    cancelCopilotSeatAssignmentForUsers: [
-      "DELETE /orgs/{org}/copilot/billing/selected_users"
-    ],
-    getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"],
-    getCopilotSeatDetailsForUser: [
-      "GET /orgs/{org}/members/{username}/copilot"
-    ],
-    listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"]
-  },
-  dependabot: {
-    addSelectedRepoToOrgSecret: [
-      "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    createOrUpdateOrgSecret: [
-      "PUT /orgs/{org}/dependabot/secrets/{secret_name}"
-    ],
-    createOrUpdateRepoSecret: [
-      "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
-    ],
-    deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],
-    deleteRepoSecret: [
-      "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
-    ],
-    getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],
-    getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"],
-    getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"],
-    getRepoPublicKey: [
-      "GET /repos/{owner}/{repo}/dependabot/secrets/public-key"
-    ],
-    getRepoSecret: [
-      "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
-    ],
-    listAlertsForEnterprise: [
-      "GET /enterprises/{enterprise}/dependabot/alerts"
-    ],
-    listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"],
-    listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"],
-    listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"],
-    listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"],
-    listSelectedReposForOrgSecret: [
-      "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"
-    ],
-    removeSelectedRepoFromOrgSecret: [
-      "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"
-    ],
-    setSelectedReposForOrgSecret: [
-      "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"
-    ],
-    updateAlert: [
-      "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"
-    ]
-  },
-  dependencyGraph: {
-    createRepositorySnapshot: [
-      "POST /repos/{owner}/{repo}/dependency-graph/snapshots"
-    ],
-    diffRange: [
-      "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"
-    ],
-    exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"]
-  },
-  emojis: { get: ["GET /emojis"] },
-  gists: {
-    checkIsStarred: ["GET /gists/{gist_id}/star"],
-    create: ["POST /gists"],
-    createComment: ["POST /gists/{gist_id}/comments"],
-    delete: ["DELETE /gists/{gist_id}"],
-    deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"],
-    fork: ["POST /gists/{gist_id}/forks"],
-    get: ["GET /gists/{gist_id}"],
-    getComment: ["GET /gists/{gist_id}/comments/{comment_id}"],
-    getRevision: ["GET /gists/{gist_id}/{sha}"],
-    list: ["GET /gists"],
-    listComments: ["GET /gists/{gist_id}/comments"],
-    listCommits: ["GET /gists/{gist_id}/commits"],
-    listForUser: ["GET /users/{username}/gists"],
-    listForks: ["GET /gists/{gist_id}/forks"],
-    listPublic: ["GET /gists/public"],
-    listStarred: ["GET /gists/starred"],
-    star: ["PUT /gists/{gist_id}/star"],
-    unstar: ["DELETE /gists/{gist_id}/star"],
-    update: ["PATCH /gists/{gist_id}"],
-    updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"]
-  },
-  git: {
-    createBlob: ["POST /repos/{owner}/{repo}/git/blobs"],
-    createCommit: ["POST /repos/{owner}/{repo}/git/commits"],
-    createRef: ["POST /repos/{owner}/{repo}/git/refs"],
-    createTag: ["POST /repos/{owner}/{repo}/git/tags"],
-    createTree: ["POST /repos/{owner}/{repo}/git/trees"],
-    deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],
-    getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],
-    getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],
-    getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"],
-    getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],
-    getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],
-    listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],
-    updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]
-  },
-  gitignore: {
-    getAllTemplates: ["GET /gitignore/templates"],
-    getTemplate: ["GET /gitignore/templates/{name}"]
-  },
-  interactions: {
-    getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
-    getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
-    getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"],
-    getRestrictionsForYourPublicRepos: [
-      "GET /user/interaction-limits",
-      {},
-      { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] }
-    ],
-    removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"],
-    removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"],
-    removeRestrictionsForRepo: [
-      "DELETE /repos/{owner}/{repo}/interaction-limits"
-    ],
-    removeRestrictionsForYourPublicRepos: [
-      "DELETE /user/interaction-limits",
-      {},
-      { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] }
-    ],
-    setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"],
-    setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"],
-    setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"],
-    setRestrictionsForYourPublicRepos: [
-      "PUT /user/interaction-limits",
-      {},
-      { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] }
-    ]
-  },
-  issues: {
-    addAssignees: [
-      "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"
-    ],
-    addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],
-    checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"],
-    checkUserCanBeAssignedToIssue: [
-      "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"
-    ],
-    create: ["POST /repos/{owner}/{repo}/issues"],
-    createComment: [
-      "POST /repos/{owner}/{repo}/issues/{issue_number}/comments"
-    ],
-    createLabel: ["POST /repos/{owner}/{repo}/labels"],
-    createMilestone: ["POST /repos/{owner}/{repo}/milestones"],
-    deleteComment: [
-      "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"
-    ],
-    deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"],
-    deleteMilestone: [
-      "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"
-    ],
-    get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"],
-    getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],
-    getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"],
-    getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"],
-    getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],
-    list: ["GET /issues"],
-    listAssignees: ["GET /repos/{owner}/{repo}/assignees"],
-    listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],
-    listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"],
-    listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],
-    listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"],
-    listEventsForTimeline: [
-      "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"
-    ],
-    listForAuthenticatedUser: ["GET /user/issues"],
-    listForOrg: ["GET /orgs/{org}/issues"],
-    listForRepo: ["GET /repos/{owner}/{repo}/issues"],
-    listLabelsForMilestone: [
-      "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"
-    ],
-    listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"],
-    listLabelsOnIssue: [
-      "GET /repos/{owner}/{repo}/issues/{issue_number}/labels"
-    ],
-    listMilestones: ["GET /repos/{owner}/{repo}/milestones"],
-    lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],
-    removeAllLabels: [
-      "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"
-    ],
-    removeAssignees: [
-      "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"
-    ],
-    removeLabel: [
-      "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"
-    ],
-    setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],
-    unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],
-    update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],
-    updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],
-    updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"],
-    updateMilestone: [
-      "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"
-    ]
-  },
-  licenses: {
-    get: ["GET /licenses/{license}"],
-    getAllCommonlyUsed: ["GET /licenses"],
-    getForRepo: ["GET /repos/{owner}/{repo}/license"]
-  },
-  markdown: {
-    render: ["POST /markdown"],
-    renderRaw: [
-      "POST /markdown/raw",
-      { headers: { "content-type": "text/plain; charset=utf-8" } }
-    ]
-  },
-  meta: {
-    get: ["GET /meta"],
-    getAllVersions: ["GET /versions"],
-    getOctocat: ["GET /octocat"],
-    getZen: ["GET /zen"],
-    root: ["GET /"]
-  },
-  migrations: {
-    cancelImport: [
-      "DELETE /repos/{owner}/{repo}/import",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import"
-      }
-    ],
-    deleteArchiveForAuthenticatedUser: [
-      "DELETE /user/migrations/{migration_id}/archive"
-    ],
-    deleteArchiveForOrg: [
-      "DELETE /orgs/{org}/migrations/{migration_id}/archive"
-    ],
-    downloadArchiveForOrg: [
-      "GET /orgs/{org}/migrations/{migration_id}/archive"
-    ],
-    getArchiveForAuthenticatedUser: [
-      "GET /user/migrations/{migration_id}/archive"
-    ],
-    getCommitAuthors: [
-      "GET /repos/{owner}/{repo}/import/authors",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors"
-      }
-    ],
-    getImportStatus: [
-      "GET /repos/{owner}/{repo}/import",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status"
-      }
-    ],
-    getLargeFiles: [
-      "GET /repos/{owner}/{repo}/import/large_files",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files"
-      }
-    ],
-    getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"],
-    getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"],
-    listForAuthenticatedUser: ["GET /user/migrations"],
-    listForOrg: ["GET /orgs/{org}/migrations"],
-    listReposForAuthenticatedUser: [
-      "GET /user/migrations/{migration_id}/repositories"
-    ],
-    listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"],
-    listReposForUser: [
-      "GET /user/migrations/{migration_id}/repositories",
-      {},
-      { renamed: ["migrations", "listReposForAuthenticatedUser"] }
-    ],
-    mapCommitAuthor: [
-      "PATCH /repos/{owner}/{repo}/import/authors/{author_id}",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author"
-      }
-    ],
-    setLfsPreference: [
-      "PATCH /repos/{owner}/{repo}/import/lfs",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference"
-      }
-    ],
-    startForAuthenticatedUser: ["POST /user/migrations"],
-    startForOrg: ["POST /orgs/{org}/migrations"],
-    startImport: [
-      "PUT /repos/{owner}/{repo}/import",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import"
-      }
-    ],
-    unlockRepoForAuthenticatedUser: [
-      "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"
-    ],
-    unlockRepoForOrg: [
-      "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"
-    ],
-    updateImport: [
-      "PATCH /repos/{owner}/{repo}/import",
-      {},
-      {
-        deprecated: "octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import"
-      }
-    ]
-  },
-  orgs: {
-    addSecurityManagerTeam: [
-      "PUT /orgs/{org}/security-managers/teams/{team_slug}"
-    ],
-    blockUser: ["PUT /orgs/{org}/blocks/{username}"],
-    cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"],
-    checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"],
-    checkMembershipForUser: ["GET /orgs/{org}/members/{username}"],
-    checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"],
-    convertMemberToOutsideCollaborator: [
-      "PUT /orgs/{org}/outside_collaborators/{username}"
-    ],
-    createInvitation: ["POST /orgs/{org}/invitations"],
-    createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"],
-    createOrUpdateCustomPropertiesValuesForRepos: [
-      "PATCH /orgs/{org}/properties/values"
-    ],
-    createOrUpdateCustomProperty: [
-      "PUT /orgs/{org}/properties/schema/{custom_property_name}"
-    ],
-    createWebhook: ["POST /orgs/{org}/hooks"],
-    delete: ["DELETE /orgs/{org}"],
-    deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
-    enableOrDisableSecurityProductOnAllOrgRepos: [
-      "POST /orgs/{org}/{security_product}/{enablement}"
-    ],
-    get: ["GET /orgs/{org}"],
-    getAllCustomProperties: ["GET /orgs/{org}/properties/schema"],
-    getCustomProperty: [
-      "GET /orgs/{org}/properties/schema/{custom_property_name}"
-    ],
-    getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
-    getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
-    getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
-    getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
-    getWebhookDelivery: [
-      "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"
-    ],
-    list: ["GET /organizations"],
-    listAppInstallations: ["GET /orgs/{org}/installations"],
-    listBlockedUsers: ["GET /orgs/{org}/blocks"],
-    listCustomPropertiesValuesForRepos: ["GET /orgs/{org}/properties/values"],
-    listFailedInvitations: ["GET /orgs/{org}/failed_invitations"],
-    listForAuthenticatedUser: ["GET /user/orgs"],
-    listForUser: ["GET /users/{username}/orgs"],
-    listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
-    listMembers: ["GET /orgs/{org}/members"],
-    listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
-    listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"],
-    listPatGrantRepositories: [
-      "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"
-    ],
-    listPatGrantRequestRepositories: [
-      "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"
-    ],
-    listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"],
-    listPatGrants: ["GET /orgs/{org}/personal-access-tokens"],
-    listPendingInvitations: ["GET /orgs/{org}/invitations"],
-    listPublicMembers: ["GET /orgs/{org}/public_members"],
-    listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"],
-    listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"],
-    listWebhooks: ["GET /orgs/{org}/hooks"],
-    pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"],
-    redeliverWebhookDelivery: [
-      "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
-    ],
-    removeCustomProperty: [
-      "DELETE /orgs/{org}/properties/schema/{custom_property_name}"
-    ],
-    removeMember: ["DELETE /orgs/{org}/members/{username}"],
-    removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"],
-    removeOutsideCollaborator: [
-      "DELETE /orgs/{org}/outside_collaborators/{username}"
-    ],
-    removePublicMembershipForAuthenticatedUser: [
-      "DELETE /orgs/{org}/public_members/{username}"
-    ],
-    removeSecurityManagerTeam: [
-      "DELETE /orgs/{org}/security-managers/teams/{team_slug}"
-    ],
-    reviewPatGrantRequest: [
-      "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"
-    ],
-    reviewPatGrantRequestsInBulk: [
-      "POST /orgs/{org}/personal-access-token-requests"
-    ],
-    setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"],
-    setPublicMembershipForAuthenticatedUser: [
-      "PUT /orgs/{org}/public_members/{username}"
-    ],
-    unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
-    update: ["PATCH /orgs/{org}"],
-    updateMembershipForAuthenticatedUser: [
-      "PATCH /user/memberships/orgs/{org}"
-    ],
-    updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"],
-    updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"],
-    updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"],
-    updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"]
-  },
-  packages: {
-    deletePackageForAuthenticatedUser: [
-      "DELETE /user/packages/{package_type}/{package_name}"
-    ],
-    deletePackageForOrg: [
-      "DELETE /orgs/{org}/packages/{package_type}/{package_name}"
-    ],
-    deletePackageForUser: [
-      "DELETE /users/{username}/packages/{package_type}/{package_name}"
-    ],
-    deletePackageVersionForAuthenticatedUser: [
-      "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    deletePackageVersionForOrg: [
-      "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    deletePackageVersionForUser: [
-      "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    getAllPackageVersionsForAPackageOwnedByAnOrg: [
-      "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
-      {},
-      { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] }
-    ],
-    getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [
-      "GET /user/packages/{package_type}/{package_name}/versions",
-      {},
-      {
-        renamed: [
-          "packages",
-          "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"
-        ]
-      }
-    ],
-    getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [
-      "GET /user/packages/{package_type}/{package_name}/versions"
-    ],
-    getAllPackageVersionsForPackageOwnedByOrg: [
-      "GET /orgs/{org}/packages/{package_type}/{package_name}/versions"
-    ],
-    getAllPackageVersionsForPackageOwnedByUser: [
-      "GET /users/{username}/packages/{package_type}/{package_name}/versions"
-    ],
-    getPackageForAuthenticatedUser: [
-      "GET /user/packages/{package_type}/{package_name}"
-    ],
-    getPackageForOrganization: [
-      "GET /orgs/{org}/packages/{package_type}/{package_name}"
-    ],
-    getPackageForUser: [
-      "GET /users/{username}/packages/{package_type}/{package_name}"
-    ],
-    getPackageVersionForAuthenticatedUser: [
-      "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    getPackageVersionForOrganization: [
-      "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    getPackageVersionForUser: [
-      "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"
-    ],
-    listDockerMigrationConflictingPackagesForAuthenticatedUser: [
-      "GET /user/docker/conflicts"
-    ],
-    listDockerMigrationConflictingPackagesForOrganization: [
-      "GET /orgs/{org}/docker/conflicts"
-    ],
-    listDockerMigrationConflictingPackagesForUser: [
-      "GET /users/{username}/docker/conflicts"
-    ],
-    listPackagesForAuthenticatedUser: ["GET /user/packages"],
-    listPackagesForOrganization: ["GET /orgs/{org}/packages"],
-    listPackagesForUser: ["GET /users/{username}/packages"],
-    restorePackageForAuthenticatedUser: [
-      "POST /user/packages/{package_type}/{package_name}/restore{?token}"
-    ],
-    restorePackageForOrg: [
-      "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"
-    ],
-    restorePackageForUser: [
-      "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"
-    ],
-    restorePackageVersionForAuthenticatedUser: [
-      "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
-    ],
-    restorePackageVersionForOrg: [
-      "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
-    ],
-    restorePackageVersionForUser: [
-      "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
-    ]
-  },
-  projects: {
-    addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"],
-    createCard: ["POST /projects/columns/{column_id}/cards"],
-    createColumn: ["POST /projects/{project_id}/columns"],
-    createForAuthenticatedUser: ["POST /user/projects"],
-    createForOrg: ["POST /orgs/{org}/projects"],
-    createForRepo: ["POST /repos/{owner}/{repo}/projects"],
-    delete: ["DELETE /projects/{project_id}"],
-    deleteCard: ["DELETE /projects/columns/cards/{card_id}"],
-    deleteColumn: ["DELETE /projects/columns/{column_id}"],
-    get: ["GET /projects/{project_id}"],
-    getCard: ["GET /projects/columns/cards/{card_id}"],
-    getColumn: ["GET /projects/columns/{column_id}"],
-    getPermissionForUser: [
-      "GET /projects/{project_id}/collaborators/{username}/permission"
-    ],
-    listCards: ["GET /projects/columns/{column_id}/cards"],
-    listCollaborators: ["GET /projects/{project_id}/collaborators"],
-    listColumns: ["GET /projects/{project_id}/columns"],
-    listForOrg: ["GET /orgs/{org}/projects"],
-    listForRepo: ["GET /repos/{owner}/{repo}/projects"],
-    listForUser: ["GET /users/{username}/projects"],
-    moveCard: ["POST /projects/columns/cards/{card_id}/moves"],
-    moveColumn: ["POST /projects/columns/{column_id}/moves"],
-    removeCollaborator: [
-      "DELETE /projects/{project_id}/collaborators/{username}"
-    ],
-    update: ["PATCH /projects/{project_id}"],
-    updateCard: ["PATCH /projects/columns/cards/{card_id}"],
-    updateColumn: ["PATCH /projects/columns/{column_id}"]
-  },
-  pulls: {
-    checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
-    create: ["POST /repos/{owner}/{repo}/pulls"],
-    createReplyForReviewComment: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"
-    ],
-    createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
-    createReviewComment: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"
-    ],
-    deletePendingReview: [
-      "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
-    ],
-    deleteReviewComment: [
-      "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"
-    ],
-    dismissReview: [
-      "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"
-    ],
-    get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"],
-    getReview: [
-      "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
-    ],
-    getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
-    list: ["GET /repos/{owner}/{repo}/pulls"],
-    listCommentsForReview: [
-      "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"
-    ],
-    listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],
-    listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],
-    listRequestedReviewers: [
-      "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
-    ],
-    listReviewComments: [
-      "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"
-    ],
-    listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"],
-    listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
-    merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
-    removeRequestedReviewers: [
-      "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
-    ],
-    requestReviewers: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
-    ],
-    submitReview: [
-      "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"
-    ],
-    update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],
-    updateBranch: [
-      "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"
-    ],
-    updateReview: [
-      "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
-    ],
-    updateReviewComment: [
-      "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"
-    ]
-  },
-  rateLimit: { get: ["GET /rate_limit"] },
-  reactions: {
-    createForCommitComment: [
-      "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"
-    ],
-    createForIssue: [
-      "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"
-    ],
-    createForIssueComment: [
-      "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"
-    ],
-    createForPullRequestReviewComment: [
-      "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"
-    ],
-    createForRelease: [
-      "POST /repos/{owner}/{repo}/releases/{release_id}/reactions"
-    ],
-    createForTeamDiscussionCommentInOrg: [
-      "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"
-    ],
-    createForTeamDiscussionInOrg: [
-      "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"
-    ],
-    deleteForCommitComment: [
-      "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"
-    ],
-    deleteForIssue: [
-      "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"
-    ],
-    deleteForIssueComment: [
-      "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"
-    ],
-    deleteForPullRequestComment: [
-      "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"
-    ],
-    deleteForRelease: [
-      "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"
-    ],
-    deleteForTeamDiscussion: [
-      "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"
-    ],
-    deleteForTeamDiscussionComment: [
-      "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"
-    ],
-    listForCommitComment: [
-      "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"
-    ],
-    listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
-    listForIssueComment: [
-      "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"
-    ],
-    listForPullRequestReviewComment: [
-      "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"
-    ],
-    listForRelease: [
-      "GET /repos/{owner}/{repo}/releases/{release_id}/reactions"
-    ],
-    listForTeamDiscussionCommentInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"
-    ],
-    listForTeamDiscussionInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"
-    ]
-  },
-  repos: {
-    acceptInvitation: [
-      "PATCH /user/repository_invitations/{invitation_id}",
-      {},
-      { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] }
-    ],
-    acceptInvitationForAuthenticatedUser: [
-      "PATCH /user/repository_invitations/{invitation_id}"
-    ],
-    addAppAccessRestrictions: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
-      {},
-      { mapToData: "apps" }
-    ],
-    addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"],
-    addStatusCheckContexts: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
-      {},
-      { mapToData: "contexts" }
-    ],
-    addTeamAccessRestrictions: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
-      {},
-      { mapToData: "teams" }
-    ],
-    addUserAccessRestrictions: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
-      {},
-      { mapToData: "users" }
-    ],
-    checkAutomatedSecurityFixes: [
-      "GET /repos/{owner}/{repo}/automated-security-fixes"
-    ],
-    checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"],
-    checkVulnerabilityAlerts: [
-      "GET /repos/{owner}/{repo}/vulnerability-alerts"
-    ],
-    codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"],
-    compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"],
-    compareCommitsWithBasehead: [
-      "GET /repos/{owner}/{repo}/compare/{basehead}"
-    ],
-    createAutolink: ["POST /repos/{owner}/{repo}/autolinks"],
-    createCommitComment: [
-      "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"
-    ],
-    createCommitSignatureProtection: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
-    ],
-    createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"],
-    createDeployKey: ["POST /repos/{owner}/{repo}/keys"],
-    createDeployment: ["POST /repos/{owner}/{repo}/deployments"],
-    createDeploymentBranchPolicy: [
-      "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"
-    ],
-    createDeploymentProtectionRule: [
-      "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"
-    ],
-    createDeploymentStatus: [
-      "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"
-    ],
-    createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"],
-    createForAuthenticatedUser: ["POST /user/repos"],
-    createFork: ["POST /repos/{owner}/{repo}/forks"],
-    createInOrg: ["POST /orgs/{org}/repos"],
-    createOrUpdateEnvironment: [
-      "PUT /repos/{owner}/{repo}/environments/{environment_name}"
-    ],
-    createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
-    createOrgRuleset: ["POST /orgs/{org}/rulesets"],
-    createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"],
-    createPagesSite: ["POST /repos/{owner}/{repo}/pages"],
-    createRelease: ["POST /repos/{owner}/{repo}/releases"],
-    createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"],
-    createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"],
-    createUsingTemplate: [
-      "POST /repos/{template_owner}/{template_repo}/generate"
-    ],
-    createWebhook: ["POST /repos/{owner}/{repo}/hooks"],
-    declineInvitation: [
-      "DELETE /user/repository_invitations/{invitation_id}",
-      {},
-      { renamed: ["repos", "declineInvitationForAuthenticatedUser"] }
-    ],
-    declineInvitationForAuthenticatedUser: [
-      "DELETE /user/repository_invitations/{invitation_id}"
-    ],
-    delete: ["DELETE /repos/{owner}/{repo}"],
-    deleteAccessRestrictions: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"
-    ],
-    deleteAdminBranchProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
-    ],
-    deleteAnEnvironment: [
-      "DELETE /repos/{owner}/{repo}/environments/{environment_name}"
-    ],
-    deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],
-    deleteBranchProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection"
-    ],
-    deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
-    deleteCommitSignatureProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
-    ],
-    deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"],
-    deleteDeployment: [
-      "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"
-    ],
-    deleteDeploymentBranchPolicy: [
-      "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
-    ],
-    deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"],
-    deleteInvitation: [
-      "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"
-    ],
-    deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"],
-    deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"],
-    deletePullRequestReviewProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
-    ],
-    deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"],
-    deleteReleaseAsset: [
-      "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"
-    ],
-    deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
-    deleteTagProtection: [
-      "DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"
-    ],
-    deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],
-    disableAutomatedSecurityFixes: [
-      "DELETE /repos/{owner}/{repo}/automated-security-fixes"
-    ],
-    disableDeploymentProtectionRule: [
-      "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"
-    ],
-    disablePrivateVulnerabilityReporting: [
-      "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"
-    ],
-    disableVulnerabilityAlerts: [
-      "DELETE /repos/{owner}/{repo}/vulnerability-alerts"
-    ],
-    downloadArchive: [
-      "GET /repos/{owner}/{repo}/zipball/{ref}",
-      {},
-      { renamed: ["repos", "downloadZipballArchive"] }
-    ],
-    downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"],
-    downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"],
-    enableAutomatedSecurityFixes: [
-      "PUT /repos/{owner}/{repo}/automated-security-fixes"
-    ],
-    enablePrivateVulnerabilityReporting: [
-      "PUT /repos/{owner}/{repo}/private-vulnerability-reporting"
-    ],
-    enableVulnerabilityAlerts: [
-      "PUT /repos/{owner}/{repo}/vulnerability-alerts"
-    ],
-    generateReleaseNotes: [
-      "POST /repos/{owner}/{repo}/releases/generate-notes"
-    ],
-    get: ["GET /repos/{owner}/{repo}"],
-    getAccessRestrictions: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"
-    ],
-    getAdminBranchProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
-    ],
-    getAllDeploymentProtectionRules: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"
-    ],
-    getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"],
-    getAllStatusCheckContexts: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"
-    ],
-    getAllTopics: ["GET /repos/{owner}/{repo}/topics"],
-    getAppsWithAccessToProtectedBranch: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"
-    ],
-    getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],
-    getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"],
-    getBranchProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection"
-    ],
-    getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"],
-    getClones: ["GET /repos/{owner}/{repo}/traffic/clones"],
-    getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"],
-    getCollaboratorPermissionLevel: [
-      "GET /repos/{owner}/{repo}/collaborators/{username}/permission"
-    ],
-    getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"],
-    getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"],
-    getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"],
-    getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"],
-    getCommitSignatureProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
-    ],
-    getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"],
-    getContent: ["GET /repos/{owner}/{repo}/contents/{path}"],
-    getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"],
-    getCustomDeploymentProtectionRule: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"
-    ],
-    getCustomPropertiesValues: ["GET /repos/{owner}/{repo}/properties/values"],
-    getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
-    getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
-    getDeploymentBranchPolicy: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
-    ],
-    getDeploymentStatus: [
-      "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"
-    ],
-    getEnvironment: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}"
-    ],
-    getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
-    getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
-    getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],
-    getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"],
-    getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"],
-    getOrgRulesets: ["GET /orgs/{org}/rulesets"],
-    getPages: ["GET /repos/{owner}/{repo}/pages"],
-    getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],
-    getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"],
-    getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"],
-    getPullRequestReviewProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
-    ],
-    getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"],
-    getReadme: ["GET /repos/{owner}/{repo}/readme"],
-    getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"],
-    getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"],
-    getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],
-    getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"],
-    getRepoRuleSuite: [
-      "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"
-    ],
-    getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"],
-    getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
-    getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"],
-    getStatusChecksProtection: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
-    ],
-    getTeamsWithAccessToProtectedBranch: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"
-    ],
-    getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"],
-    getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"],
-    getUsersWithAccessToProtectedBranch: [
-      "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"
-    ],
-    getViews: ["GET /repos/{owner}/{repo}/traffic/views"],
-    getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"],
-    getWebhookConfigForRepo: [
-      "GET /repos/{owner}/{repo}/hooks/{hook_id}/config"
-    ],
-    getWebhookDelivery: [
-      "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"
-    ],
-    listActivities: ["GET /repos/{owner}/{repo}/activity"],
-    listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"],
-    listBranches: ["GET /repos/{owner}/{repo}/branches"],
-    listBranchesForHeadCommit: [
-      "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"
-    ],
-    listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"],
-    listCommentsForCommit: [
-      "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"
-    ],
-    listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"],
-    listCommitStatusesForRef: [
-      "GET /repos/{owner}/{repo}/commits/{ref}/statuses"
-    ],
-    listCommits: ["GET /repos/{owner}/{repo}/commits"],
-    listContributors: ["GET /repos/{owner}/{repo}/contributors"],
-    listCustomDeploymentRuleIntegrations: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"
-    ],
-    listDeployKeys: ["GET /repos/{owner}/{repo}/keys"],
-    listDeploymentBranchPolicies: [
-      "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"
-    ],
-    listDeploymentStatuses: [
-      "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"
-    ],
-    listDeployments: ["GET /repos/{owner}/{repo}/deployments"],
-    listForAuthenticatedUser: ["GET /user/repos"],
-    listForOrg: ["GET /orgs/{org}/repos"],
-    listForUser: ["GET /users/{username}/repos"],
-    listForks: ["GET /repos/{owner}/{repo}/forks"],
-    listInvitations: ["GET /repos/{owner}/{repo}/invitations"],
-    listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"],
-    listLanguages: ["GET /repos/{owner}/{repo}/languages"],
-    listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"],
-    listPublic: ["GET /repositories"],
-    listPullRequestsAssociatedWithCommit: [
-      "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"
-    ],
-    listReleaseAssets: [
-      "GET /repos/{owner}/{repo}/releases/{release_id}/assets"
-    ],
-    listReleases: ["GET /repos/{owner}/{repo}/releases"],
-    listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"],
-    listTags: ["GET /repos/{owner}/{repo}/tags"],
-    listTeams: ["GET /repos/{owner}/{repo}/teams"],
-    listWebhookDeliveries: [
-      "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"
-    ],
-    listWebhooks: ["GET /repos/{owner}/{repo}/hooks"],
-    merge: ["POST /repos/{owner}/{repo}/merges"],
-    mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"],
-    pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],
-    redeliverWebhookDelivery: [
-      "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
-    ],
-    removeAppAccessRestrictions: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
-      {},
-      { mapToData: "apps" }
-    ],
-    removeCollaborator: [
-      "DELETE /repos/{owner}/{repo}/collaborators/{username}"
-    ],
-    removeStatusCheckContexts: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
-      {},
-      { mapToData: "contexts" }
-    ],
-    removeStatusCheckProtection: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
-    ],
-    removeTeamAccessRestrictions: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
-      {},
-      { mapToData: "teams" }
-    ],
-    removeUserAccessRestrictions: [
-      "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
-      {},
-      { mapToData: "users" }
-    ],
-    renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"],
-    replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"],
-    requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"],
-    setAdminBranchProtection: [
-      "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
-    ],
-    setAppAccessRestrictions: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
-      {},
-      { mapToData: "apps" }
-    ],
-    setStatusCheckContexts: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
-      {},
-      { mapToData: "contexts" }
-    ],
-    setTeamAccessRestrictions: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
-      {},
-      { mapToData: "teams" }
-    ],
-    setUserAccessRestrictions: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
-      {},
-      { mapToData: "users" }
-    ],
-    testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],
-    transfer: ["POST /repos/{owner}/{repo}/transfer"],
-    update: ["PATCH /repos/{owner}/{repo}"],
-    updateBranchProtection: [
-      "PUT /repos/{owner}/{repo}/branches/{branch}/protection"
-    ],
-    updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],
-    updateDeploymentBranchPolicy: [
-      "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
-    ],
-    updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"],
-    updateInvitation: [
-      "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"
-    ],
-    updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"],
-    updatePullRequestReviewProtection: [
-      "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
-    ],
-    updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"],
-    updateReleaseAsset: [
-      "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"
-    ],
-    updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
-    updateStatusCheckPotection: [
-      "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",
-      {},
-      { renamed: ["repos", "updateStatusCheckProtection"] }
-    ],
-    updateStatusCheckProtection: [
-      "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
-    ],
-    updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],
-    updateWebhookConfigForRepo: [
-      "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"
-    ],
-    uploadReleaseAsset: [
-      "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",
-      { baseUrl: "https://uploads.github.com" }
-    ]
-  },
-  search: {
-    code: ["GET /search/code"],
-    commits: ["GET /search/commits"],
-    issuesAndPullRequests: ["GET /search/issues"],
-    labels: ["GET /search/labels"],
-    repos: ["GET /search/repositories"],
-    topics: ["GET /search/topics"],
-    users: ["GET /search/users"]
-  },
-  secretScanning: {
-    getAlert: [
-      "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"
-    ],
-    listAlertsForEnterprise: [
-      "GET /enterprises/{enterprise}/secret-scanning/alerts"
-    ],
-    listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"],
-    listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"],
-    listLocationsForAlert: [
-      "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"
-    ],
-    updateAlert: [
-      "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"
-    ]
-  },
-  securityAdvisories: {
-    createPrivateVulnerabilityReport: [
-      "POST /repos/{owner}/{repo}/security-advisories/reports"
-    ],
-    createRepositoryAdvisory: [
-      "POST /repos/{owner}/{repo}/security-advisories"
-    ],
-    createRepositoryAdvisoryCveRequest: [
-      "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"
-    ],
-    getGlobalAdvisory: ["GET /advisories/{ghsa_id}"],
-    getRepositoryAdvisory: [
-      "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"
-    ],
-    listGlobalAdvisories: ["GET /advisories"],
-    listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"],
-    listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"],
-    updateRepositoryAdvisory: [
-      "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"
-    ]
-  },
-  teams: {
-    addOrUpdateMembershipForUserInOrg: [
-      "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"
-    ],
-    addOrUpdateProjectPermissionsInOrg: [
-      "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"
-    ],
-    addOrUpdateRepoPermissionsInOrg: [
-      "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
-    ],
-    checkPermissionsForProjectInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"
-    ],
-    checkPermissionsForRepoInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
-    ],
-    create: ["POST /orgs/{org}/teams"],
-    createDiscussionCommentInOrg: [
-      "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"
-    ],
-    createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"],
-    deleteDiscussionCommentInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
-    ],
-    deleteDiscussionInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
-    ],
-    deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"],
-    getByName: ["GET /orgs/{org}/teams/{team_slug}"],
-    getDiscussionCommentInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
-    ],
-    getDiscussionInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
-    ],
-    getMembershipForUserInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/memberships/{username}"
-    ],
-    list: ["GET /orgs/{org}/teams"],
-    listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"],
-    listDiscussionCommentsInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"
-    ],
-    listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"],
-    listForAuthenticatedUser: ["GET /user/teams"],
-    listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"],
-    listPendingInvitationsInOrg: [
-      "GET /orgs/{org}/teams/{team_slug}/invitations"
-    ],
-    listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"],
-    listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
-    removeMembershipForUserInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"
-    ],
-    removeProjectInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"
-    ],
-    removeRepoInOrg: [
-      "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
-    ],
-    updateDiscussionCommentInOrg: [
-      "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
-    ],
-    updateDiscussionInOrg: [
-      "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
-    ],
-    updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"]
-  },
-  users: {
-    addEmailForAuthenticated: [
-      "POST /user/emails",
-      {},
-      { renamed: ["users", "addEmailForAuthenticatedUser"] }
-    ],
-    addEmailForAuthenticatedUser: ["POST /user/emails"],
-    addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"],
-    block: ["PUT /user/blocks/{username}"],
-    checkBlocked: ["GET /user/blocks/{username}"],
-    checkFollowingForUser: ["GET /users/{username}/following/{target_user}"],
-    checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"],
-    createGpgKeyForAuthenticated: [
-      "POST /user/gpg_keys",
-      {},
-      { renamed: ["users", "createGpgKeyForAuthenticatedUser"] }
-    ],
-    createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"],
-    createPublicSshKeyForAuthenticated: [
-      "POST /user/keys",
-      {},
-      { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] }
-    ],
-    createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"],
-    createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"],
-    deleteEmailForAuthenticated: [
-      "DELETE /user/emails",
-      {},
-      { renamed: ["users", "deleteEmailForAuthenticatedUser"] }
-    ],
-    deleteEmailForAuthenticatedUser: ["DELETE /user/emails"],
-    deleteGpgKeyForAuthenticated: [
-      "DELETE /user/gpg_keys/{gpg_key_id}",
-      {},
-      { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] }
-    ],
-    deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"],
-    deletePublicSshKeyForAuthenticated: [
-      "DELETE /user/keys/{key_id}",
-      {},
-      { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] }
-    ],
-    deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"],
-    deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"],
-    deleteSshSigningKeyForAuthenticatedUser: [
-      "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"
-    ],
-    follow: ["PUT /user/following/{username}"],
-    getAuthenticated: ["GET /user"],
-    getByUsername: ["GET /users/{username}"],
-    getContextForUser: ["GET /users/{username}/hovercard"],
-    getGpgKeyForAuthenticated: [
-      "GET /user/gpg_keys/{gpg_key_id}",
-      {},
-      { renamed: ["users", "getGpgKeyForAuthenticatedUser"] }
-    ],
-    getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"],
-    getPublicSshKeyForAuthenticated: [
-      "GET /user/keys/{key_id}",
-      {},
-      { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] }
-    ],
-    getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"],
-    getSshSigningKeyForAuthenticatedUser: [
-      "GET /user/ssh_signing_keys/{ssh_signing_key_id}"
-    ],
-    list: ["GET /users"],
-    listBlockedByAuthenticated: [
-      "GET /user/blocks",
-      {},
-      { renamed: ["users", "listBlockedByAuthenticatedUser"] }
-    ],
-    listBlockedByAuthenticatedUser: ["GET /user/blocks"],
-    listEmailsForAuthenticated: [
-      "GET /user/emails",
-      {},
-      { renamed: ["users", "listEmailsForAuthenticatedUser"] }
-    ],
-    listEmailsForAuthenticatedUser: ["GET /user/emails"],
-    listFollowedByAuthenticated: [
-      "GET /user/following",
-      {},
-      { renamed: ["users", "listFollowedByAuthenticatedUser"] }
-    ],
-    listFollowedByAuthenticatedUser: ["GET /user/following"],
-    listFollowersForAuthenticatedUser: ["GET /user/followers"],
-    listFollowersForUser: ["GET /users/{username}/followers"],
-    listFollowingForUser: ["GET /users/{username}/following"],
-    listGpgKeysForAuthenticated: [
-      "GET /user/gpg_keys",
-      {},
-      { renamed: ["users", "listGpgKeysForAuthenticatedUser"] }
-    ],
-    listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"],
-    listGpgKeysForUser: ["GET /users/{username}/gpg_keys"],
-    listPublicEmailsForAuthenticated: [
-      "GET /user/public_emails",
-      {},
-      { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] }
-    ],
-    listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"],
-    listPublicKeysForUser: ["GET /users/{username}/keys"],
-    listPublicSshKeysForAuthenticated: [
-      "GET /user/keys",
-      {},
-      { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] }
-    ],
-    listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"],
-    listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"],
-    listSocialAccountsForUser: ["GET /users/{username}/social_accounts"],
-    listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"],
-    listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"],
-    setPrimaryEmailVisibilityForAuthenticated: [
-      "PATCH /user/email/visibility",
-      {},
-      { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] }
-    ],
-    setPrimaryEmailVisibilityForAuthenticatedUser: [
-      "PATCH /user/email/visibility"
-    ],
-    unblock: ["DELETE /user/blocks/{username}"],
-    unfollow: ["DELETE /user/following/{username}"],
-    updateAuthenticated: ["PATCH /user"]
-  }
-};
-var endpoints_default = Endpoints;
-
-// pkg/dist-src/endpoints-to-methods.js
-var endpointMethodsMap = /* @__PURE__ */ new Map();
-for (const [scope, endpoints] of Object.entries(endpoints_default)) {
-  for (const [methodName, endpoint] of Object.entries(endpoints)) {
-    const [route, defaults, decorations] = endpoint;
-    const [method, url] = route.split(/ /);
-    const endpointDefaults = Object.assign(
-      {
-        method,
-        url
-      },
-      defaults
-    );
-    if (!endpointMethodsMap.has(scope)) {
-      endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());
-    }
-    endpointMethodsMap.get(scope).set(methodName, {
-      scope,
-      methodName,
-      endpointDefaults,
-      decorations
-    });
-  }
-}
-var handler = {
-  has({ scope }, methodName) {
-    return endpointMethodsMap.get(scope).has(methodName);
-  },
-  getOwnPropertyDescriptor(target, methodName) {
-    return {
-      value: this.get(target, methodName),
-      // ensures method is in the cache
-      configurable: true,
-      writable: true,
-      enumerable: true
-    };
-  },
-  defineProperty(target, methodName, descriptor) {
-    Object.defineProperty(target.cache, methodName, descriptor);
-    return true;
-  },
-  deleteProperty(target, methodName) {
-    delete target.cache[methodName];
-    return true;
-  },
-  ownKeys({ scope }) {
-    return [...endpointMethodsMap.get(scope).keys()];
-  },
-  set(target, methodName, value) {
-    return target.cache[methodName] = value;
-  },
-  get({ octokit, scope, cache }, methodName) {
-    if (cache[methodName]) {
-      return cache[methodName];
-    }
-    const method = endpointMethodsMap.get(scope).get(methodName);
-    if (!method) {
-      return void 0;
-    }
-    const { endpointDefaults, decorations } = method;
-    if (decorations) {
-      cache[methodName] = decorate(
-        octokit,
-        scope,
-        methodName,
-        endpointDefaults,
-        decorations
-      );
-    } else {
-      cache[methodName] = octokit.request.defaults(endpointDefaults);
-    }
-    return cache[methodName];
-  }
-};
-function endpointsToMethods(octokit) {
-  const newMethods = {};
-  for (const scope of endpointMethodsMap.keys()) {
-    newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);
-  }
-  return newMethods;
-}
-function decorate(octokit, scope, methodName, defaults, decorations) {
-  const requestWithDefaults = octokit.request.defaults(defaults);
-  function withDecorations(...args) {
-    let options = requestWithDefaults.endpoint.merge(...args);
-    if (decorations.mapToData) {
-      options = Object.assign({}, options, {
-        data: options[decorations.mapToData],
-        [decorations.mapToData]: void 0
-      });
-      return requestWithDefaults(options);
-    }
-    if (decorations.renamed) {
-      const [newScope, newMethodName] = decorations.renamed;
-      octokit.log.warn(
-        `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`
-      );
-    }
-    if (decorations.deprecated) {
-      octokit.log.warn(decorations.deprecated);
-    }
-    if (decorations.renamedParameters) {
-      const options2 = requestWithDefaults.endpoint.merge(...args);
-      for (const [name, alias] of Object.entries(
-        decorations.renamedParameters
-      )) {
-        if (name in options2) {
-          octokit.log.warn(
-            `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`
-          );
-          if (!(alias in options2)) {
-            options2[alias] = options2[name];
-          }
-          delete options2[name];
-        }
-      }
-      return requestWithDefaults(options2);
-    }
-    return requestWithDefaults(...args);
-  }
-  return Object.assign(withDecorations, requestWithDefaults);
-}
-
-// pkg/dist-src/index.js
-function restEndpointMethods(octokit) {
-  const api = endpointsToMethods(octokit);
-  return {
-    rest: api
-  };
-}
-restEndpointMethods.VERSION = VERSION;
-function legacyRestEndpointMethods(octokit) {
-  const api = endpointsToMethods(octokit);
-  return {
-    ...api,
-    rest: api
-  };
-}
-legacyRestEndpointMethods.VERSION = VERSION;
-export {
-  legacyRestEndpointMethods,
-  restEndpointMethods
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map
deleted file mode 100644
index af4b2b9..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/version.js", "../dist-src/generated/endpoints.js", "../dist-src/endpoints-to-methods.js", "../dist-src/index.js"],
-  "sourcesContent": ["const VERSION = \"10.2.0\";\nexport {\n  VERSION\n};\n", "const Endpoints = {\n  actions: {\n    addCustomLabelsToSelfHostedRunnerForOrg: [\n      \"POST /orgs/{org}/actions/runners/{runner_id}/labels\"\n    ],\n    addCustomLabelsToSelfHostedRunnerForRepo: [\n      \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n    ],\n    addSelectedRepoToOrgSecret: [\n      \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    addSelectedRepoToOrgVariable: [\n      \"PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n    ],\n    approveWorkflowRun: [\n      \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\"\n    ],\n    cancelWorkflowRun: [\n      \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\"\n    ],\n    createEnvironmentVariable: [\n      \"POST /repositories/{repository_id}/environments/{environment_name}/variables\"\n    ],\n    createOrUpdateEnvironmentSecret: [\n      \"PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n    ],\n    createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n    createOrUpdateRepoSecret: [\n      \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n    ],\n    createOrgVariable: [\"POST /orgs/{org}/actions/variables\"],\n    createRegistrationTokenForOrg: [\n      \"POST /orgs/{org}/actions/runners/registration-token\"\n    ],\n    createRegistrationTokenForRepo: [\n      \"POST /repos/{owner}/{repo}/actions/runners/registration-token\"\n    ],\n    createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n    createRemoveTokenForRepo: [\n      \"POST /repos/{owner}/{repo}/actions/runners/remove-token\"\n    ],\n    createRepoVariable: [\"POST /repos/{owner}/{repo}/actions/variables\"],\n    createWorkflowDispatch: [\n      \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\"\n    ],\n    deleteActionsCacheById: [\n      \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\"\n    ],\n    deleteActionsCacheByKey: [\n      \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\"\n    ],\n    deleteArtifact: [\n      \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"\n    ],\n    deleteEnvironmentSecret: [\n      \"DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n    ],\n    deleteEnvironmentVariable: [\n      \"DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n    ],\n    deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n    deleteOrgVariable: [\"DELETE /orgs/{org}/actions/variables/{name}\"],\n    deleteRepoSecret: [\n      \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n    ],\n    deleteRepoVariable: [\n      \"DELETE /repos/{owner}/{repo}/actions/variables/{name}\"\n    ],\n    deleteSelfHostedRunnerFromOrg: [\n      \"DELETE /orgs/{org}/actions/runners/{runner_id}\"\n    ],\n    deleteSelfHostedRunnerFromRepo: [\n      \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n    ],\n    deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n    deleteWorkflowRunLogs: [\n      \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n    ],\n    disableSelectedRepositoryGithubActionsOrganization: [\n      \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n    ],\n    disableWorkflow: [\n      \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\"\n    ],\n    downloadArtifact: [\n      \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\"\n    ],\n    downloadJobLogsForWorkflowRun: [\n      \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\"\n    ],\n    downloadWorkflowRunAttemptLogs: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\"\n    ],\n    downloadWorkflowRunLogs: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n    ],\n    enableSelectedRepositoryGithubActionsOrganization: [\n      \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n    ],\n    enableWorkflow: [\n      \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\"\n    ],\n    forceCancelWorkflowRun: [\n      \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel\"\n    ],\n    generateRunnerJitconfigForOrg: [\n      \"POST /orgs/{org}/actions/runners/generate-jitconfig\"\n    ],\n    generateRunnerJitconfigForRepo: [\n      \"POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig\"\n    ],\n    getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n    getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n    getActionsCacheUsageByRepoForOrg: [\n      \"GET /orgs/{org}/actions/cache/usage-by-repository\"\n    ],\n    getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n    getAllowedActionsOrganization: [\n      \"GET /orgs/{org}/actions/permissions/selected-actions\"\n    ],\n    getAllowedActionsRepository: [\n      \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n    ],\n    getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n    getEnvironmentPublicKey: [\n      \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key\"\n    ],\n    getEnvironmentSecret: [\n      \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n    ],\n    getEnvironmentVariable: [\n      \"GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n    ],\n    getGithubActionsDefaultWorkflowPermissionsOrganization: [\n      \"GET /orgs/{org}/actions/permissions/workflow\"\n    ],\n    getGithubActionsDefaultWorkflowPermissionsRepository: [\n      \"GET /repos/{owner}/{repo}/actions/permissions/workflow\"\n    ],\n    getGithubActionsPermissionsOrganization: [\n      \"GET /orgs/{org}/actions/permissions\"\n    ],\n    getGithubActionsPermissionsRepository: [\n      \"GET /repos/{owner}/{repo}/actions/permissions\"\n    ],\n    getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n    getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n    getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n    getOrgVariable: [\"GET /orgs/{org}/actions/variables/{name}\"],\n    getPendingDeploymentsForRun: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n    ],\n    getRepoPermissions: [\n      \"GET /repos/{owner}/{repo}/actions/permissions\",\n      {},\n      { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] }\n    ],\n    getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n    getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n    getRepoVariable: [\"GET /repos/{owner}/{repo}/actions/variables/{name}\"],\n    getReviewsForRun: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\"\n    ],\n    getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n    getSelfHostedRunnerForRepo: [\n      \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n    ],\n    getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n    getWorkflowAccessToRepository: [\n      \"GET /repos/{owner}/{repo}/actions/permissions/access\"\n    ],\n    getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n    getWorkflowRunAttempt: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\"\n    ],\n    getWorkflowRunUsage: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\"\n    ],\n    getWorkflowUsage: [\n      \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\"\n    ],\n    listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n    listEnvironmentSecrets: [\n      \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\"\n    ],\n    listEnvironmentVariables: [\n      \"GET /repositories/{repository_id}/environments/{environment_name}/variables\"\n    ],\n    listJobsForWorkflowRun: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\"\n    ],\n    listJobsForWorkflowRunAttempt: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\"\n    ],\n    listLabelsForSelfHostedRunnerForOrg: [\n      \"GET /orgs/{org}/actions/runners/{runner_id}/labels\"\n    ],\n    listLabelsForSelfHostedRunnerForRepo: [\n      \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n    ],\n    listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n    listOrgVariables: [\"GET /orgs/{org}/actions/variables\"],\n    listRepoOrganizationSecrets: [\n      \"GET /repos/{owner}/{repo}/actions/organization-secrets\"\n    ],\n    listRepoOrganizationVariables: [\n      \"GET /repos/{owner}/{repo}/actions/organization-variables\"\n    ],\n    listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n    listRepoVariables: [\"GET /repos/{owner}/{repo}/actions/variables\"],\n    listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n    listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n    listRunnerApplicationsForRepo: [\n      \"GET /repos/{owner}/{repo}/actions/runners/downloads\"\n    ],\n    listSelectedReposForOrgSecret: [\n      \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n    ],\n    listSelectedReposForOrgVariable: [\n      \"GET /orgs/{org}/actions/variables/{name}/repositories\"\n    ],\n    listSelectedRepositoriesEnabledGithubActionsOrganization: [\n      \"GET /orgs/{org}/actions/permissions/repositories\"\n    ],\n    listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n    listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n    listWorkflowRunArtifacts: [\n      \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\"\n    ],\n    listWorkflowRuns: [\n      \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\"\n    ],\n    listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n    reRunJobForWorkflowRun: [\n      \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\"\n    ],\n    reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n    reRunWorkflowFailedJobs: [\n      \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\"\n    ],\n    removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n      \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\"\n    ],\n    removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n      \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n    ],\n    removeCustomLabelFromSelfHostedRunnerForOrg: [\n      \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\"\n    ],\n    removeCustomLabelFromSelfHostedRunnerForRepo: [\n      \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\"\n    ],\n    removeSelectedRepoFromOrgSecret: [\n      \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    removeSelectedRepoFromOrgVariable: [\n      \"DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n    ],\n    reviewCustomGatesForRun: [\n      \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule\"\n    ],\n    reviewPendingDeploymentsForRun: [\n      \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n    ],\n    setAllowedActionsOrganization: [\n      \"PUT /orgs/{org}/actions/permissions/selected-actions\"\n    ],\n    setAllowedActionsRepository: [\n      \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n    ],\n    setCustomLabelsForSelfHostedRunnerForOrg: [\n      \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\"\n    ],\n    setCustomLabelsForSelfHostedRunnerForRepo: [\n      \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n    ],\n    setGithubActionsDefaultWorkflowPermissionsOrganization: [\n      \"PUT /orgs/{org}/actions/permissions/workflow\"\n    ],\n    setGithubActionsDefaultWorkflowPermissionsRepository: [\n      \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\"\n    ],\n    setGithubActionsPermissionsOrganization: [\n      \"PUT /orgs/{org}/actions/permissions\"\n    ],\n    setGithubActionsPermissionsRepository: [\n      \"PUT /repos/{owner}/{repo}/actions/permissions\"\n    ],\n    setSelectedReposForOrgSecret: [\n      \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n    ],\n    setSelectedReposForOrgVariable: [\n      \"PUT /orgs/{org}/actions/variables/{name}/repositories\"\n    ],\n    setSelectedRepositoriesEnabledGithubActionsOrganization: [\n      \"PUT /orgs/{org}/actions/permissions/repositories\"\n    ],\n    setWorkflowAccessToRepository: [\n      \"PUT /repos/{owner}/{repo}/actions/permissions/access\"\n    ],\n    updateEnvironmentVariable: [\n      \"PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n    ],\n    updateOrgVariable: [\"PATCH /orgs/{org}/actions/variables/{name}\"],\n    updateRepoVariable: [\n      \"PATCH /repos/{owner}/{repo}/actions/variables/{name}\"\n    ]\n  },\n  activity: {\n    checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n    deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n    deleteThreadSubscription: [\n      \"DELETE /notifications/threads/{thread_id}/subscription\"\n    ],\n    getFeeds: [\"GET /feeds\"],\n    getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n    getThread: [\"GET /notifications/threads/{thread_id}\"],\n    getThreadSubscriptionForAuthenticatedUser: [\n      \"GET /notifications/threads/{thread_id}/subscription\"\n    ],\n    listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n    listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n    listOrgEventsForAuthenticatedUser: [\n      \"GET /users/{username}/events/orgs/{org}\"\n    ],\n    listPublicEvents: [\"GET /events\"],\n    listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n    listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n    listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n    listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n    listReceivedPublicEventsForUser: [\n      \"GET /users/{username}/received_events/public\"\n    ],\n    listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n    listRepoNotificationsForAuthenticatedUser: [\n      \"GET /repos/{owner}/{repo}/notifications\"\n    ],\n    listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n    listReposStarredByUser: [\"GET /users/{username}/starred\"],\n    listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n    listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n    listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n    listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n    markNotificationsAsRead: [\"PUT /notifications\"],\n    markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n    markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n    setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n    setThreadSubscription: [\n      \"PUT /notifications/threads/{thread_id}/subscription\"\n    ],\n    starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n    unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"]\n  },\n  apps: {\n    addRepoToInstallation: [\n      \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n      {},\n      { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] }\n    ],\n    addRepoToInstallationForAuthenticatedUser: [\n      \"PUT /user/installations/{installation_id}/repositories/{repository_id}\"\n    ],\n    checkToken: [\"POST /applications/{client_id}/token\"],\n    createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n    createInstallationAccessToken: [\n      \"POST /app/installations/{installation_id}/access_tokens\"\n    ],\n    deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n    deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n    deleteToken: [\"DELETE /applications/{client_id}/token\"],\n    getAuthenticated: [\"GET /app\"],\n    getBySlug: [\"GET /apps/{app_slug}\"],\n    getInstallation: [\"GET /app/installations/{installation_id}\"],\n    getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n    getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n    getSubscriptionPlanForAccount: [\n      \"GET /marketplace_listing/accounts/{account_id}\"\n    ],\n    getSubscriptionPlanForAccountStubbed: [\n      \"GET /marketplace_listing/stubbed/accounts/{account_id}\"\n    ],\n    getUserInstallation: [\"GET /users/{username}/installation\"],\n    getWebhookConfigForApp: [\"GET /app/hook/config\"],\n    getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n    listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n    listAccountsForPlanStubbed: [\n      \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\"\n    ],\n    listInstallationReposForAuthenticatedUser: [\n      \"GET /user/installations/{installation_id}/repositories\"\n    ],\n    listInstallationRequestsForAuthenticatedApp: [\n      \"GET /app/installation-requests\"\n    ],\n    listInstallations: [\"GET /app/installations\"],\n    listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n    listPlans: [\"GET /marketplace_listing/plans\"],\n    listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n    listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n    listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n    listSubscriptionsForAuthenticatedUserStubbed: [\n      \"GET /user/marketplace_purchases/stubbed\"\n    ],\n    listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n    redeliverWebhookDelivery: [\n      \"POST /app/hook/deliveries/{delivery_id}/attempts\"\n    ],\n    removeRepoFromInstallation: [\n      \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n      {},\n      { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] }\n    ],\n    removeRepoFromInstallationForAuthenticatedUser: [\n      \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\"\n    ],\n    resetToken: [\"PATCH /applications/{client_id}/token\"],\n    revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n    scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n    suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n    unsuspendInstallation: [\n      \"DELETE /app/installations/{installation_id}/suspended\"\n    ],\n    updateWebhookConfigForApp: [\"PATCH /app/hook/config\"]\n  },\n  billing: {\n    getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n    getGithubActionsBillingUser: [\n      \"GET /users/{username}/settings/billing/actions\"\n    ],\n    getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n    getGithubPackagesBillingUser: [\n      \"GET /users/{username}/settings/billing/packages\"\n    ],\n    getSharedStorageBillingOrg: [\n      \"GET /orgs/{org}/settings/billing/shared-storage\"\n    ],\n    getSharedStorageBillingUser: [\n      \"GET /users/{username}/settings/billing/shared-storage\"\n    ]\n  },\n  checks: {\n    create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n    createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n    get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n    getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n    listAnnotations: [\n      \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\"\n    ],\n    listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n    listForSuite: [\n      \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\"\n    ],\n    listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n    rerequestRun: [\n      \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\"\n    ],\n    rerequestSuite: [\n      \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\"\n    ],\n    setSuitesPreferences: [\n      \"PATCH /repos/{owner}/{repo}/check-suites/preferences\"\n    ],\n    update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"]\n  },\n  codeScanning: {\n    deleteAnalysis: [\n      \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\"\n    ],\n    getAlert: [\n      \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n      {},\n      { renamedParameters: { alert_id: \"alert_number\" } }\n    ],\n    getAnalysis: [\n      \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\"\n    ],\n    getCodeqlDatabase: [\n      \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\"\n    ],\n    getDefaultSetup: [\"GET /repos/{owner}/{repo}/code-scanning/default-setup\"],\n    getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n    listAlertInstances: [\n      \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\"\n    ],\n    listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n    listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n    listAlertsInstances: [\n      \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n      {},\n      { renamed: [\"codeScanning\", \"listAlertInstances\"] }\n    ],\n    listCodeqlDatabases: [\n      \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases\"\n    ],\n    listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n    updateAlert: [\n      \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\"\n    ],\n    updateDefaultSetup: [\n      \"PATCH /repos/{owner}/{repo}/code-scanning/default-setup\"\n    ],\n    uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"]\n  },\n  codesOfConduct: {\n    getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n    getConductCode: [\"GET /codes_of_conduct/{key}\"]\n  },\n  codespaces: {\n    addRepositoryForSecretForAuthenticatedUser: [\n      \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    addSelectedRepoToOrgSecret: [\n      \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    checkPermissionsForDevcontainer: [\n      \"GET /repos/{owner}/{repo}/codespaces/permissions_check\"\n    ],\n    codespaceMachinesForAuthenticatedUser: [\n      \"GET /user/codespaces/{codespace_name}/machines\"\n    ],\n    createForAuthenticatedUser: [\"POST /user/codespaces\"],\n    createOrUpdateOrgSecret: [\n      \"PUT /orgs/{org}/codespaces/secrets/{secret_name}\"\n    ],\n    createOrUpdateRepoSecret: [\n      \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n    ],\n    createOrUpdateSecretForAuthenticatedUser: [\n      \"PUT /user/codespaces/secrets/{secret_name}\"\n    ],\n    createWithPrForAuthenticatedUser: [\n      \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\"\n    ],\n    createWithRepoForAuthenticatedUser: [\n      \"POST /repos/{owner}/{repo}/codespaces\"\n    ],\n    deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n    deleteFromOrganization: [\n      \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\"\n    ],\n    deleteOrgSecret: [\"DELETE /orgs/{org}/codespaces/secrets/{secret_name}\"],\n    deleteRepoSecret: [\n      \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n    ],\n    deleteSecretForAuthenticatedUser: [\n      \"DELETE /user/codespaces/secrets/{secret_name}\"\n    ],\n    exportForAuthenticatedUser: [\n      \"POST /user/codespaces/{codespace_name}/exports\"\n    ],\n    getCodespacesForUserInOrg: [\n      \"GET /orgs/{org}/members/{username}/codespaces\"\n    ],\n    getExportDetailsForAuthenticatedUser: [\n      \"GET /user/codespaces/{codespace_name}/exports/{export_id}\"\n    ],\n    getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n    getOrgPublicKey: [\"GET /orgs/{org}/codespaces/secrets/public-key\"],\n    getOrgSecret: [\"GET /orgs/{org}/codespaces/secrets/{secret_name}\"],\n    getPublicKeyForAuthenticatedUser: [\n      \"GET /user/codespaces/secrets/public-key\"\n    ],\n    getRepoPublicKey: [\n      \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\"\n    ],\n    getRepoSecret: [\n      \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n    ],\n    getSecretForAuthenticatedUser: [\n      \"GET /user/codespaces/secrets/{secret_name}\"\n    ],\n    listDevcontainersInRepositoryForAuthenticatedUser: [\n      \"GET /repos/{owner}/{repo}/codespaces/devcontainers\"\n    ],\n    listForAuthenticatedUser: [\"GET /user/codespaces\"],\n    listInOrganization: [\n      \"GET /orgs/{org}/codespaces\",\n      {},\n      { renamedParameters: { org_id: \"org\" } }\n    ],\n    listInRepositoryForAuthenticatedUser: [\n      \"GET /repos/{owner}/{repo}/codespaces\"\n    ],\n    listOrgSecrets: [\"GET /orgs/{org}/codespaces/secrets\"],\n    listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n    listRepositoriesForSecretForAuthenticatedUser: [\n      \"GET /user/codespaces/secrets/{secret_name}/repositories\"\n    ],\n    listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n    listSelectedReposForOrgSecret: [\n      \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n    ],\n    preFlightWithRepoForAuthenticatedUser: [\n      \"GET /repos/{owner}/{repo}/codespaces/new\"\n    ],\n    publishForAuthenticatedUser: [\n      \"POST /user/codespaces/{codespace_name}/publish\"\n    ],\n    removeRepositoryForSecretForAuthenticatedUser: [\n      \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    removeSelectedRepoFromOrgSecret: [\n      \"DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    repoMachinesForAuthenticatedUser: [\n      \"GET /repos/{owner}/{repo}/codespaces/machines\"\n    ],\n    setRepositoriesForSecretForAuthenticatedUser: [\n      \"PUT /user/codespaces/secrets/{secret_name}/repositories\"\n    ],\n    setSelectedReposForOrgSecret: [\n      \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n    ],\n    startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n    stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n    stopInOrganization: [\n      \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\"\n    ],\n    updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"]\n  },\n  copilot: {\n    addCopilotForBusinessSeatsForTeams: [\n      \"POST /orgs/{org}/copilot/billing/selected_teams\"\n    ],\n    addCopilotForBusinessSeatsForUsers: [\n      \"POST /orgs/{org}/copilot/billing/selected_users\"\n    ],\n    cancelCopilotSeatAssignmentForTeams: [\n      \"DELETE /orgs/{org}/copilot/billing/selected_teams\"\n    ],\n    cancelCopilotSeatAssignmentForUsers: [\n      \"DELETE /orgs/{org}/copilot/billing/selected_users\"\n    ],\n    getCopilotOrganizationDetails: [\"GET /orgs/{org}/copilot/billing\"],\n    getCopilotSeatDetailsForUser: [\n      \"GET /orgs/{org}/members/{username}/copilot\"\n    ],\n    listCopilotSeats: [\"GET /orgs/{org}/copilot/billing/seats\"]\n  },\n  dependabot: {\n    addSelectedRepoToOrgSecret: [\n      \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    createOrUpdateOrgSecret: [\n      \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\"\n    ],\n    createOrUpdateRepoSecret: [\n      \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n    ],\n    deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n    deleteRepoSecret: [\n      \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n    ],\n    getAlert: [\"GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"],\n    getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n    getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n    getRepoPublicKey: [\n      \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\"\n    ],\n    getRepoSecret: [\n      \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n    ],\n    listAlertsForEnterprise: [\n      \"GET /enterprises/{enterprise}/dependabot/alerts\"\n    ],\n    listAlertsForOrg: [\"GET /orgs/{org}/dependabot/alerts\"],\n    listAlertsForRepo: [\"GET /repos/{owner}/{repo}/dependabot/alerts\"],\n    listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n    listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n    listSelectedReposForOrgSecret: [\n      \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n    ],\n    removeSelectedRepoFromOrgSecret: [\n      \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n    ],\n    setSelectedReposForOrgSecret: [\n      \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n    ],\n    updateAlert: [\n      \"PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"\n    ]\n  },\n  dependencyGraph: {\n    createRepositorySnapshot: [\n      \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\"\n    ],\n    diffRange: [\n      \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\"\n    ],\n    exportSbom: [\"GET /repos/{owner}/{repo}/dependency-graph/sbom\"]\n  },\n  emojis: { get: [\"GET /emojis\"] },\n  gists: {\n    checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n    create: [\"POST /gists\"],\n    createComment: [\"POST /gists/{gist_id}/comments\"],\n    delete: [\"DELETE /gists/{gist_id}\"],\n    deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n    fork: [\"POST /gists/{gist_id}/forks\"],\n    get: [\"GET /gists/{gist_id}\"],\n    getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n    getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n    list: [\"GET /gists\"],\n    listComments: [\"GET /gists/{gist_id}/comments\"],\n    listCommits: [\"GET /gists/{gist_id}/commits\"],\n    listForUser: [\"GET /users/{username}/gists\"],\n    listForks: [\"GET /gists/{gist_id}/forks\"],\n    listPublic: [\"GET /gists/public\"],\n    listStarred: [\"GET /gists/starred\"],\n    star: [\"PUT /gists/{gist_id}/star\"],\n    unstar: [\"DELETE /gists/{gist_id}/star\"],\n    update: [\"PATCH /gists/{gist_id}\"],\n    updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"]\n  },\n  git: {\n    createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n    createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n    createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n    createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n    createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n    deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n    getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n    getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n    getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n    getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n    getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n    listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n    updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"]\n  },\n  gitignore: {\n    getAllTemplates: [\"GET /gitignore/templates\"],\n    getTemplate: [\"GET /gitignore/templates/{name}\"]\n  },\n  interactions: {\n    getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n    getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n    getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n    getRestrictionsForYourPublicRepos: [\n      \"GET /user/interaction-limits\",\n      {},\n      { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] }\n    ],\n    removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n    removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n    removeRestrictionsForRepo: [\n      \"DELETE /repos/{owner}/{repo}/interaction-limits\"\n    ],\n    removeRestrictionsForYourPublicRepos: [\n      \"DELETE /user/interaction-limits\",\n      {},\n      { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] }\n    ],\n    setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n    setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n    setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n    setRestrictionsForYourPublicRepos: [\n      \"PUT /user/interaction-limits\",\n      {},\n      { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] }\n    ]\n  },\n  issues: {\n    addAssignees: [\n      \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n    ],\n    addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n    checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n    checkUserCanBeAssignedToIssue: [\n      \"GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}\"\n    ],\n    create: [\"POST /repos/{owner}/{repo}/issues\"],\n    createComment: [\n      \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\"\n    ],\n    createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n    createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n    deleteComment: [\n      \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\"\n    ],\n    deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n    deleteMilestone: [\n      \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\"\n    ],\n    get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n    getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n    getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n    getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n    getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n    list: [\"GET /issues\"],\n    listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n    listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n    listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n    listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n    listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n    listEventsForTimeline: [\n      \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\"\n    ],\n    listForAuthenticatedUser: [\"GET /user/issues\"],\n    listForOrg: [\"GET /orgs/{org}/issues\"],\n    listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n    listLabelsForMilestone: [\n      \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\"\n    ],\n    listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n    listLabelsOnIssue: [\n      \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n    ],\n    listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n    lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n    removeAllLabels: [\n      \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n    ],\n    removeAssignees: [\n      \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n    ],\n    removeLabel: [\n      \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\"\n    ],\n    setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n    unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n    update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n    updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n    updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n    updateMilestone: [\n      \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\"\n    ]\n  },\n  licenses: {\n    get: [\"GET /licenses/{license}\"],\n    getAllCommonlyUsed: [\"GET /licenses\"],\n    getForRepo: [\"GET /repos/{owner}/{repo}/license\"]\n  },\n  markdown: {\n    render: [\"POST /markdown\"],\n    renderRaw: [\n      \"POST /markdown/raw\",\n      { headers: { \"content-type\": \"text/plain; charset=utf-8\" } }\n    ]\n  },\n  meta: {\n    get: [\"GET /meta\"],\n    getAllVersions: [\"GET /versions\"],\n    getOctocat: [\"GET /octocat\"],\n    getZen: [\"GET /zen\"],\n    root: [\"GET /\"]\n  },\n  migrations: {\n    cancelImport: [\n      \"DELETE /repos/{owner}/{repo}/import\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import\"\n      }\n    ],\n    deleteArchiveForAuthenticatedUser: [\n      \"DELETE /user/migrations/{migration_id}/archive\"\n    ],\n    deleteArchiveForOrg: [\n      \"DELETE /orgs/{org}/migrations/{migration_id}/archive\"\n    ],\n    downloadArchiveForOrg: [\n      \"GET /orgs/{org}/migrations/{migration_id}/archive\"\n    ],\n    getArchiveForAuthenticatedUser: [\n      \"GET /user/migrations/{migration_id}/archive\"\n    ],\n    getCommitAuthors: [\n      \"GET /repos/{owner}/{repo}/import/authors\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors\"\n      }\n    ],\n    getImportStatus: [\n      \"GET /repos/{owner}/{repo}/import\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status\"\n      }\n    ],\n    getLargeFiles: [\n      \"GET /repos/{owner}/{repo}/import/large_files\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files\"\n      }\n    ],\n    getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n    getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n    listForAuthenticatedUser: [\"GET /user/migrations\"],\n    listForOrg: [\"GET /orgs/{org}/migrations\"],\n    listReposForAuthenticatedUser: [\n      \"GET /user/migrations/{migration_id}/repositories\"\n    ],\n    listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n    listReposForUser: [\n      \"GET /user/migrations/{migration_id}/repositories\",\n      {},\n      { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] }\n    ],\n    mapCommitAuthor: [\n      \"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author\"\n      }\n    ],\n    setLfsPreference: [\n      \"PATCH /repos/{owner}/{repo}/import/lfs\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference\"\n      }\n    ],\n    startForAuthenticatedUser: [\"POST /user/migrations\"],\n    startForOrg: [\"POST /orgs/{org}/migrations\"],\n    startImport: [\n      \"PUT /repos/{owner}/{repo}/import\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import\"\n      }\n    ],\n    unlockRepoForAuthenticatedUser: [\n      \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\"\n    ],\n    unlockRepoForOrg: [\n      \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\"\n    ],\n    updateImport: [\n      \"PATCH /repos/{owner}/{repo}/import\",\n      {},\n      {\n        deprecated: \"octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import\"\n      }\n    ]\n  },\n  orgs: {\n    addSecurityManagerTeam: [\n      \"PUT /orgs/{org}/security-managers/teams/{team_slug}\"\n    ],\n    blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n    cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n    checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n    checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n    checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n    convertMemberToOutsideCollaborator: [\n      \"PUT /orgs/{org}/outside_collaborators/{username}\"\n    ],\n    createInvitation: [\"POST /orgs/{org}/invitations\"],\n    createOrUpdateCustomProperties: [\"PATCH /orgs/{org}/properties/schema\"],\n    createOrUpdateCustomPropertiesValuesForRepos: [\n      \"PATCH /orgs/{org}/properties/values\"\n    ],\n    createOrUpdateCustomProperty: [\n      \"PUT /orgs/{org}/properties/schema/{custom_property_name}\"\n    ],\n    createWebhook: [\"POST /orgs/{org}/hooks\"],\n    delete: [\"DELETE /orgs/{org}\"],\n    deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n    enableOrDisableSecurityProductOnAllOrgRepos: [\n      \"POST /orgs/{org}/{security_product}/{enablement}\"\n    ],\n    get: [\"GET /orgs/{org}\"],\n    getAllCustomProperties: [\"GET /orgs/{org}/properties/schema\"],\n    getCustomProperty: [\n      \"GET /orgs/{org}/properties/schema/{custom_property_name}\"\n    ],\n    getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n    getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n    getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n    getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n    getWebhookDelivery: [\n      \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\"\n    ],\n    list: [\"GET /organizations\"],\n    listAppInstallations: [\"GET /orgs/{org}/installations\"],\n    listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n    listCustomPropertiesValuesForRepos: [\"GET /orgs/{org}/properties/values\"],\n    listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n    listForAuthenticatedUser: [\"GET /user/orgs\"],\n    listForUser: [\"GET /users/{username}/orgs\"],\n    listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n    listMembers: [\"GET /orgs/{org}/members\"],\n    listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n    listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n    listPatGrantRepositories: [\n      \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\"\n    ],\n    listPatGrantRequestRepositories: [\n      \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\"\n    ],\n    listPatGrantRequests: [\"GET /orgs/{org}/personal-access-token-requests\"],\n    listPatGrants: [\"GET /orgs/{org}/personal-access-tokens\"],\n    listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n    listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n    listSecurityManagerTeams: [\"GET /orgs/{org}/security-managers\"],\n    listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n    listWebhooks: [\"GET /orgs/{org}/hooks\"],\n    pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n    redeliverWebhookDelivery: [\n      \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n    ],\n    removeCustomProperty: [\n      \"DELETE /orgs/{org}/properties/schema/{custom_property_name}\"\n    ],\n    removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n    removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n    removeOutsideCollaborator: [\n      \"DELETE /orgs/{org}/outside_collaborators/{username}\"\n    ],\n    removePublicMembershipForAuthenticatedUser: [\n      \"DELETE /orgs/{org}/public_members/{username}\"\n    ],\n    removeSecurityManagerTeam: [\n      \"DELETE /orgs/{org}/security-managers/teams/{team_slug}\"\n    ],\n    reviewPatGrantRequest: [\n      \"POST /orgs/{org}/personal-access-token-requests/{pat_request_id}\"\n    ],\n    reviewPatGrantRequestsInBulk: [\n      \"POST /orgs/{org}/personal-access-token-requests\"\n    ],\n    setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n    setPublicMembershipForAuthenticatedUser: [\n      \"PUT /orgs/{org}/public_members/{username}\"\n    ],\n    unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n    update: [\"PATCH /orgs/{org}\"],\n    updateMembershipForAuthenticatedUser: [\n      \"PATCH /user/memberships/orgs/{org}\"\n    ],\n    updatePatAccess: [\"POST /orgs/{org}/personal-access-tokens/{pat_id}\"],\n    updatePatAccesses: [\"POST /orgs/{org}/personal-access-tokens\"],\n    updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n    updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"]\n  },\n  packages: {\n    deletePackageForAuthenticatedUser: [\n      \"DELETE /user/packages/{package_type}/{package_name}\"\n    ],\n    deletePackageForOrg: [\n      \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\"\n    ],\n    deletePackageForUser: [\n      \"DELETE /users/{username}/packages/{package_type}/{package_name}\"\n    ],\n    deletePackageVersionForAuthenticatedUser: [\n      \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n    ],\n    deletePackageVersionForOrg: [\n      \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n    ],\n    deletePackageVersionForUser: [\n      \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n    ],\n    getAllPackageVersionsForAPackageOwnedByAnOrg: [\n      \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n      {},\n      { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] }\n    ],\n    getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n      \"GET /user/packages/{package_type}/{package_name}/versions\",\n      {},\n      {\n        renamed: [\n          \"packages\",\n          \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\"\n        ]\n      }\n    ],\n    getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n      \"GET /user/packages/{package_type}/{package_name}/versions\"\n    ],\n    getAllPackageVersionsForPackageOwnedByOrg: [\n      \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\"\n    ],\n    getAllPackageVersionsForPackageOwnedByUser: [\n      \"GET /users/{username}/packages/{package_type}/{package_name}/versions\"\n    ],\n    getPackageForAuthenticatedUser: [\n      \"GET /user/packages/{package_type}/{package_name}\"\n    ],\n    getPackageForOrganization: [\n      \"GET /orgs/{org}/packages/{package_type}/{package_name}\"\n    ],\n    getPackageForUser: [\n      \"GET /users/{username}/packages/{package_type}/{package_name}\"\n    ],\n    getPackageVersionForAuthenticatedUser: [\n      \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n    ],\n    getPackageVersionForOrganization: [\n      \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n    ],\n    getPackageVersionForUser: [\n      \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n    ],\n    listDockerMigrationConflictingPackagesForAuthenticatedUser: [\n      \"GET /user/docker/conflicts\"\n    ],\n    listDockerMigrationConflictingPackagesForOrganization: [\n      \"GET /orgs/{org}/docker/conflicts\"\n    ],\n    listDockerMigrationConflictingPackagesForUser: [\n      \"GET /users/{username}/docker/conflicts\"\n    ],\n    listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n    listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n    listPackagesForUser: [\"GET /users/{username}/packages\"],\n    restorePackageForAuthenticatedUser: [\n      \"POST /user/packages/{package_type}/{package_name}/restore{?token}\"\n    ],\n    restorePackageForOrg: [\n      \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\"\n    ],\n    restorePackageForUser: [\n      \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\"\n    ],\n    restorePackageVersionForAuthenticatedUser: [\n      \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n    ],\n    restorePackageVersionForOrg: [\n      \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n    ],\n    restorePackageVersionForUser: [\n      \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n    ]\n  },\n  projects: {\n    addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n    createCard: [\"POST /projects/columns/{column_id}/cards\"],\n    createColumn: [\"POST /projects/{project_id}/columns\"],\n    createForAuthenticatedUser: [\"POST /user/projects\"],\n    createForOrg: [\"POST /orgs/{org}/projects\"],\n    createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n    delete: [\"DELETE /projects/{project_id}\"],\n    deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n    deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n    get: [\"GET /projects/{project_id}\"],\n    getCard: [\"GET /projects/columns/cards/{card_id}\"],\n    getColumn: [\"GET /projects/columns/{column_id}\"],\n    getPermissionForUser: [\n      \"GET /projects/{project_id}/collaborators/{username}/permission\"\n    ],\n    listCards: [\"GET /projects/columns/{column_id}/cards\"],\n    listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n    listColumns: [\"GET /projects/{project_id}/columns\"],\n    listForOrg: [\"GET /orgs/{org}/projects\"],\n    listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n    listForUser: [\"GET /users/{username}/projects\"],\n    moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n    moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n    removeCollaborator: [\n      \"DELETE /projects/{project_id}/collaborators/{username}\"\n    ],\n    update: [\"PATCH /projects/{project_id}\"],\n    updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n    updateColumn: [\"PATCH /projects/columns/{column_id}\"]\n  },\n  pulls: {\n    checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n    create: [\"POST /repos/{owner}/{repo}/pulls\"],\n    createReplyForReviewComment: [\n      \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\"\n    ],\n    createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n    createReviewComment: [\n      \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n    ],\n    deletePendingReview: [\n      \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n    ],\n    deleteReviewComment: [\n      \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n    ],\n    dismissReview: [\n      \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\"\n    ],\n    get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n    getReview: [\n      \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n    ],\n    getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n    list: [\"GET /repos/{owner}/{repo}/pulls\"],\n    listCommentsForReview: [\n      \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\"\n    ],\n    listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n    listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n    listRequestedReviewers: [\n      \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n    ],\n    listReviewComments: [\n      \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n    ],\n    listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n    listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n    merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n    removeRequestedReviewers: [\n      \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n    ],\n    requestReviewers: [\n      \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n    ],\n    submitReview: [\n      \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\"\n    ],\n    update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n    updateBranch: [\n      \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\"\n    ],\n    updateReview: [\n      \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n    ],\n    updateReviewComment: [\n      \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n    ]\n  },\n  rateLimit: { get: [\"GET /rate_limit\"] },\n  reactions: {\n    createForCommitComment: [\n      \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n    ],\n    createForIssue: [\n      \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\"\n    ],\n    createForIssueComment: [\n      \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n    ],\n    createForPullRequestReviewComment: [\n      \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n    ],\n    createForRelease: [\n      \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n    ],\n    createForTeamDiscussionCommentInOrg: [\n      \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n    ],\n    createForTeamDiscussionInOrg: [\n      \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n    ],\n    deleteForCommitComment: [\n      \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\"\n    ],\n    deleteForIssue: [\n      \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\"\n    ],\n    deleteForIssueComment: [\n      \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\"\n    ],\n    deleteForPullRequestComment: [\n      \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\"\n    ],\n    deleteForRelease: [\n      \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\"\n    ],\n    deleteForTeamDiscussion: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\"\n    ],\n    deleteForTeamDiscussionComment: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\"\n    ],\n    listForCommitComment: [\n      \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n    ],\n    listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n    listForIssueComment: [\n      \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n    ],\n    listForPullRequestReviewComment: [\n      \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n    ],\n    listForRelease: [\n      \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n    ],\n    listForTeamDiscussionCommentInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n    ],\n    listForTeamDiscussionInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n    ]\n  },\n  repos: {\n    acceptInvitation: [\n      \"PATCH /user/repository_invitations/{invitation_id}\",\n      {},\n      { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] }\n    ],\n    acceptInvitationForAuthenticatedUser: [\n      \"PATCH /user/repository_invitations/{invitation_id}\"\n    ],\n    addAppAccessRestrictions: [\n      \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n      {},\n      { mapToData: \"apps\" }\n    ],\n    addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n    addStatusCheckContexts: [\n      \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n      {},\n      { mapToData: \"contexts\" }\n    ],\n    addTeamAccessRestrictions: [\n      \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n      {},\n      { mapToData: \"teams\" }\n    ],\n    addUserAccessRestrictions: [\n      \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n      {},\n      { mapToData: \"users\" }\n    ],\n    checkAutomatedSecurityFixes: [\n      \"GET /repos/{owner}/{repo}/automated-security-fixes\"\n    ],\n    checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n    checkVulnerabilityAlerts: [\n      \"GET /repos/{owner}/{repo}/vulnerability-alerts\"\n    ],\n    codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n    compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n    compareCommitsWithBasehead: [\n      \"GET /repos/{owner}/{repo}/compare/{basehead}\"\n    ],\n    createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n    createCommitComment: [\n      \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n    ],\n    createCommitSignatureProtection: [\n      \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n    ],\n    createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n    createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n    createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n    createDeploymentBranchPolicy: [\n      \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n    ],\n    createDeploymentProtectionRule: [\n      \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n    ],\n    createDeploymentStatus: [\n      \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n    ],\n    createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n    createForAuthenticatedUser: [\"POST /user/repos\"],\n    createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n    createInOrg: [\"POST /orgs/{org}/repos\"],\n    createOrUpdateEnvironment: [\n      \"PUT /repos/{owner}/{repo}/environments/{environment_name}\"\n    ],\n    createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n    createOrgRuleset: [\"POST /orgs/{org}/rulesets\"],\n    createPagesDeployment: [\"POST /repos/{owner}/{repo}/pages/deployment\"],\n    createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n    createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n    createRepoRuleset: [\"POST /repos/{owner}/{repo}/rulesets\"],\n    createTagProtection: [\"POST /repos/{owner}/{repo}/tags/protection\"],\n    createUsingTemplate: [\n      \"POST /repos/{template_owner}/{template_repo}/generate\"\n    ],\n    createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n    declineInvitation: [\n      \"DELETE /user/repository_invitations/{invitation_id}\",\n      {},\n      { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] }\n    ],\n    declineInvitationForAuthenticatedUser: [\n      \"DELETE /user/repository_invitations/{invitation_id}\"\n    ],\n    delete: [\"DELETE /repos/{owner}/{repo}\"],\n    deleteAccessRestrictions: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n    ],\n    deleteAdminBranchProtection: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n    ],\n    deleteAnEnvironment: [\n      \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\"\n    ],\n    deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n    deleteBranchProtection: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\"\n    ],\n    deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n    deleteCommitSignatureProtection: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n    ],\n    deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n    deleteDeployment: [\n      \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\"\n    ],\n    deleteDeploymentBranchPolicy: [\n      \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n    ],\n    deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n    deleteInvitation: [\n      \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\"\n    ],\n    deleteOrgRuleset: [\"DELETE /orgs/{org}/rulesets/{ruleset_id}\"],\n    deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n    deletePullRequestReviewProtection: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n    ],\n    deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n    deleteReleaseAsset: [\n      \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n    ],\n    deleteRepoRuleset: [\"DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n    deleteTagProtection: [\n      \"DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}\"\n    ],\n    deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n    disableAutomatedSecurityFixes: [\n      \"DELETE /repos/{owner}/{repo}/automated-security-fixes\"\n    ],\n    disableDeploymentProtectionRule: [\n      \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n    ],\n    disablePrivateVulnerabilityReporting: [\n      \"DELETE /repos/{owner}/{repo}/private-vulnerability-reporting\"\n    ],\n    disableVulnerabilityAlerts: [\n      \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\"\n    ],\n    downloadArchive: [\n      \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n      {},\n      { renamed: [\"repos\", \"downloadZipballArchive\"] }\n    ],\n    downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n    downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n    enableAutomatedSecurityFixes: [\n      \"PUT /repos/{owner}/{repo}/automated-security-fixes\"\n    ],\n    enablePrivateVulnerabilityReporting: [\n      \"PUT /repos/{owner}/{repo}/private-vulnerability-reporting\"\n    ],\n    enableVulnerabilityAlerts: [\n      \"PUT /repos/{owner}/{repo}/vulnerability-alerts\"\n    ],\n    generateReleaseNotes: [\n      \"POST /repos/{owner}/{repo}/releases/generate-notes\"\n    ],\n    get: [\"GET /repos/{owner}/{repo}\"],\n    getAccessRestrictions: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n    ],\n    getAdminBranchProtection: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n    ],\n    getAllDeploymentProtectionRules: [\n      \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n    ],\n    getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n    getAllStatusCheckContexts: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\"\n    ],\n    getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n    getAppsWithAccessToProtectedBranch: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\"\n    ],\n    getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n    getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n    getBranchProtection: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection\"\n    ],\n    getBranchRules: [\"GET /repos/{owner}/{repo}/rules/branches/{branch}\"],\n    getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n    getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n    getCollaboratorPermissionLevel: [\n      \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\"\n    ],\n    getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n    getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n    getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n    getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n    getCommitSignatureProtection: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n    ],\n    getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n    getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n    getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n    getCustomDeploymentProtectionRule: [\n      \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n    ],\n    getCustomPropertiesValues: [\"GET /repos/{owner}/{repo}/properties/values\"],\n    getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n    getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n    getDeploymentBranchPolicy: [\n      \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n    ],\n    getDeploymentStatus: [\n      \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\"\n    ],\n    getEnvironment: [\n      \"GET /repos/{owner}/{repo}/environments/{environment_name}\"\n    ],\n    getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n    getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n    getOrgRuleSuite: [\"GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}\"],\n    getOrgRuleSuites: [\"GET /orgs/{org}/rulesets/rule-suites\"],\n    getOrgRuleset: [\"GET /orgs/{org}/rulesets/{ruleset_id}\"],\n    getOrgRulesets: [\"GET /orgs/{org}/rulesets\"],\n    getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n    getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n    getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n    getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n    getPullRequestReviewProtection: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n    ],\n    getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n    getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n    getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n    getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n    getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n    getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n    getRepoRuleSuite: [\n      \"GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}\"\n    ],\n    getRepoRuleSuites: [\"GET /repos/{owner}/{repo}/rulesets/rule-suites\"],\n    getRepoRuleset: [\"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n    getRepoRulesets: [\"GET /repos/{owner}/{repo}/rulesets\"],\n    getStatusChecksProtection: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n    ],\n    getTeamsWithAccessToProtectedBranch: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\"\n    ],\n    getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n    getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n    getUsersWithAccessToProtectedBranch: [\n      \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\"\n    ],\n    getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n    getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n    getWebhookConfigForRepo: [\n      \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n    ],\n    getWebhookDelivery: [\n      \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\"\n    ],\n    listActivities: [\"GET /repos/{owner}/{repo}/activity\"],\n    listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n    listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n    listBranchesForHeadCommit: [\n      \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\"\n    ],\n    listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n    listCommentsForCommit: [\n      \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n    ],\n    listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n    listCommitStatusesForRef: [\n      \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\"\n    ],\n    listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n    listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n    listCustomDeploymentRuleIntegrations: [\n      \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\"\n    ],\n    listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n    listDeploymentBranchPolicies: [\n      \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n    ],\n    listDeploymentStatuses: [\n      \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n    ],\n    listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n    listForAuthenticatedUser: [\"GET /user/repos\"],\n    listForOrg: [\"GET /orgs/{org}/repos\"],\n    listForUser: [\"GET /users/{username}/repos\"],\n    listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n    listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n    listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n    listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n    listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n    listPublic: [\"GET /repositories\"],\n    listPullRequestsAssociatedWithCommit: [\n      \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\"\n    ],\n    listReleaseAssets: [\n      \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\"\n    ],\n    listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n    listTagProtection: [\"GET /repos/{owner}/{repo}/tags/protection\"],\n    listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n    listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n    listWebhookDeliveries: [\n      \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\"\n    ],\n    listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n    merge: [\"POST /repos/{owner}/{repo}/merges\"],\n    mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n    pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n    redeliverWebhookDelivery: [\n      \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n    ],\n    removeAppAccessRestrictions: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n      {},\n      { mapToData: \"apps\" }\n    ],\n    removeCollaborator: [\n      \"DELETE /repos/{owner}/{repo}/collaborators/{username}\"\n    ],\n    removeStatusCheckContexts: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n      {},\n      { mapToData: \"contexts\" }\n    ],\n    removeStatusCheckProtection: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n    ],\n    removeTeamAccessRestrictions: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n      {},\n      { mapToData: \"teams\" }\n    ],\n    removeUserAccessRestrictions: [\n      \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n      {},\n      { mapToData: \"users\" }\n    ],\n    renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n    replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n    requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n    setAdminBranchProtection: [\n      \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n    ],\n    setAppAccessRestrictions: [\n      \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n      {},\n      { mapToData: \"apps\" }\n    ],\n    setStatusCheckContexts: [\n      \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n      {},\n      { mapToData: \"contexts\" }\n    ],\n    setTeamAccessRestrictions: [\n      \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n      {},\n      { mapToData: \"teams\" }\n    ],\n    setUserAccessRestrictions: [\n      \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n      {},\n      { mapToData: \"users\" }\n    ],\n    testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n    transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n    update: [\"PATCH /repos/{owner}/{repo}\"],\n    updateBranchProtection: [\n      \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\"\n    ],\n    updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n    updateDeploymentBranchPolicy: [\n      \"PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n    ],\n    updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n    updateInvitation: [\n      \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\"\n    ],\n    updateOrgRuleset: [\"PUT /orgs/{org}/rulesets/{ruleset_id}\"],\n    updatePullRequestReviewProtection: [\n      \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n    ],\n    updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n    updateReleaseAsset: [\n      \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n    ],\n    updateRepoRuleset: [\"PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n    updateStatusCheckPotection: [\n      \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n      {},\n      { renamed: [\"repos\", \"updateStatusCheckProtection\"] }\n    ],\n    updateStatusCheckProtection: [\n      \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n    ],\n    updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n    updateWebhookConfigForRepo: [\n      \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n    ],\n    uploadReleaseAsset: [\n      \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n      { baseUrl: \"https://uploads.github.com\" }\n    ]\n  },\n  search: {\n    code: [\"GET /search/code\"],\n    commits: [\"GET /search/commits\"],\n    issuesAndPullRequests: [\"GET /search/issues\"],\n    labels: [\"GET /search/labels\"],\n    repos: [\"GET /search/repositories\"],\n    topics: [\"GET /search/topics\"],\n    users: [\"GET /search/users\"]\n  },\n  secretScanning: {\n    getAlert: [\n      \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n    ],\n    listAlertsForEnterprise: [\n      \"GET /enterprises/{enterprise}/secret-scanning/alerts\"\n    ],\n    listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n    listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n    listLocationsForAlert: [\n      \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\"\n    ],\n    updateAlert: [\n      \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n    ]\n  },\n  securityAdvisories: {\n    createPrivateVulnerabilityReport: [\n      \"POST /repos/{owner}/{repo}/security-advisories/reports\"\n    ],\n    createRepositoryAdvisory: [\n      \"POST /repos/{owner}/{repo}/security-advisories\"\n    ],\n    createRepositoryAdvisoryCveRequest: [\n      \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve\"\n    ],\n    getGlobalAdvisory: [\"GET /advisories/{ghsa_id}\"],\n    getRepositoryAdvisory: [\n      \"GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n    ],\n    listGlobalAdvisories: [\"GET /advisories\"],\n    listOrgRepositoryAdvisories: [\"GET /orgs/{org}/security-advisories\"],\n    listRepositoryAdvisories: [\"GET /repos/{owner}/{repo}/security-advisories\"],\n    updateRepositoryAdvisory: [\n      \"PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n    ]\n  },\n  teams: {\n    addOrUpdateMembershipForUserInOrg: [\n      \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n    ],\n    addOrUpdateProjectPermissionsInOrg: [\n      \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n    ],\n    addOrUpdateRepoPermissionsInOrg: [\n      \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n    ],\n    checkPermissionsForProjectInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n    ],\n    checkPermissionsForRepoInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n    ],\n    create: [\"POST /orgs/{org}/teams\"],\n    createDiscussionCommentInOrg: [\n      \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n    ],\n    createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n    deleteDiscussionCommentInOrg: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n    ],\n    deleteDiscussionInOrg: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n    ],\n    deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n    getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n    getDiscussionCommentInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n    ],\n    getDiscussionInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n    ],\n    getMembershipForUserInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n    ],\n    list: [\"GET /orgs/{org}/teams\"],\n    listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n    listDiscussionCommentsInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n    ],\n    listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n    listForAuthenticatedUser: [\"GET /user/teams\"],\n    listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n    listPendingInvitationsInOrg: [\n      \"GET /orgs/{org}/teams/{team_slug}/invitations\"\n    ],\n    listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n    listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n    removeMembershipForUserInOrg: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n    ],\n    removeProjectInOrg: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n    ],\n    removeRepoInOrg: [\n      \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n    ],\n    updateDiscussionCommentInOrg: [\n      \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n    ],\n    updateDiscussionInOrg: [\n      \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n    ],\n    updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"]\n  },\n  users: {\n    addEmailForAuthenticated: [\n      \"POST /user/emails\",\n      {},\n      { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] }\n    ],\n    addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n    addSocialAccountForAuthenticatedUser: [\"POST /user/social_accounts\"],\n    block: [\"PUT /user/blocks/{username}\"],\n    checkBlocked: [\"GET /user/blocks/{username}\"],\n    checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n    checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n    createGpgKeyForAuthenticated: [\n      \"POST /user/gpg_keys\",\n      {},\n      { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] }\n    ],\n    createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n    createPublicSshKeyForAuthenticated: [\n      \"POST /user/keys\",\n      {},\n      { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] }\n    ],\n    createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n    createSshSigningKeyForAuthenticatedUser: [\"POST /user/ssh_signing_keys\"],\n    deleteEmailForAuthenticated: [\n      \"DELETE /user/emails\",\n      {},\n      { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] }\n    ],\n    deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n    deleteGpgKeyForAuthenticated: [\n      \"DELETE /user/gpg_keys/{gpg_key_id}\",\n      {},\n      { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] }\n    ],\n    deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n    deletePublicSshKeyForAuthenticated: [\n      \"DELETE /user/keys/{key_id}\",\n      {},\n      { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] }\n    ],\n    deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n    deleteSocialAccountForAuthenticatedUser: [\"DELETE /user/social_accounts\"],\n    deleteSshSigningKeyForAuthenticatedUser: [\n      \"DELETE /user/ssh_signing_keys/{ssh_signing_key_id}\"\n    ],\n    follow: [\"PUT /user/following/{username}\"],\n    getAuthenticated: [\"GET /user\"],\n    getByUsername: [\"GET /users/{username}\"],\n    getContextForUser: [\"GET /users/{username}/hovercard\"],\n    getGpgKeyForAuthenticated: [\n      \"GET /user/gpg_keys/{gpg_key_id}\",\n      {},\n      { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] }\n    ],\n    getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n    getPublicSshKeyForAuthenticated: [\n      \"GET /user/keys/{key_id}\",\n      {},\n      { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] }\n    ],\n    getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n    getSshSigningKeyForAuthenticatedUser: [\n      \"GET /user/ssh_signing_keys/{ssh_signing_key_id}\"\n    ],\n    list: [\"GET /users\"],\n    listBlockedByAuthenticated: [\n      \"GET /user/blocks\",\n      {},\n      { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] }\n    ],\n    listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n    listEmailsForAuthenticated: [\n      \"GET /user/emails\",\n      {},\n      { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] }\n    ],\n    listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n    listFollowedByAuthenticated: [\n      \"GET /user/following\",\n      {},\n      { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] }\n    ],\n    listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n    listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n    listFollowersForUser: [\"GET /users/{username}/followers\"],\n    listFollowingForUser: [\"GET /users/{username}/following\"],\n    listGpgKeysForAuthenticated: [\n      \"GET /user/gpg_keys\",\n      {},\n      { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] }\n    ],\n    listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n    listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n    listPublicEmailsForAuthenticated: [\n      \"GET /user/public_emails\",\n      {},\n      { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] }\n    ],\n    listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n    listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n    listPublicSshKeysForAuthenticated: [\n      \"GET /user/keys\",\n      {},\n      { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] }\n    ],\n    listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n    listSocialAccountsForAuthenticatedUser: [\"GET /user/social_accounts\"],\n    listSocialAccountsForUser: [\"GET /users/{username}/social_accounts\"],\n    listSshSigningKeysForAuthenticatedUser: [\"GET /user/ssh_signing_keys\"],\n    listSshSigningKeysForUser: [\"GET /users/{username}/ssh_signing_keys\"],\n    setPrimaryEmailVisibilityForAuthenticated: [\n      \"PATCH /user/email/visibility\",\n      {},\n      { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] }\n    ],\n    setPrimaryEmailVisibilityForAuthenticatedUser: [\n      \"PATCH /user/email/visibility\"\n    ],\n    unblock: [\"DELETE /user/blocks/{username}\"],\n    unfollow: [\"DELETE /user/following/{username}\"],\n    updateAuthenticated: [\"PATCH /user\"]\n  }\n};\nvar endpoints_default = Endpoints;\nexport {\n  endpoints_default as default\n};\n", "import ENDPOINTS from \"./generated/endpoints.js\";\nconst endpointMethodsMap = /* @__PURE__ */ new Map();\nfor (const [scope, endpoints] of Object.entries(ENDPOINTS)) {\n  for (const [methodName, endpoint] of Object.entries(endpoints)) {\n    const [route, defaults, decorations] = endpoint;\n    const [method, url] = route.split(/ /);\n    const endpointDefaults = Object.assign(\n      {\n        method,\n        url\n      },\n      defaults\n    );\n    if (!endpointMethodsMap.has(scope)) {\n      endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());\n    }\n    endpointMethodsMap.get(scope).set(methodName, {\n      scope,\n      methodName,\n      endpointDefaults,\n      decorations\n    });\n  }\n}\nconst handler = {\n  has({ scope }, methodName) {\n    return endpointMethodsMap.get(scope).has(methodName);\n  },\n  getOwnPropertyDescriptor(target, methodName) {\n    return {\n      value: this.get(target, methodName),\n      // ensures method is in the cache\n      configurable: true,\n      writable: true,\n      enumerable: true\n    };\n  },\n  defineProperty(target, methodName, descriptor) {\n    Object.defineProperty(target.cache, methodName, descriptor);\n    return true;\n  },\n  deleteProperty(target, methodName) {\n    delete target.cache[methodName];\n    return true;\n  },\n  ownKeys({ scope }) {\n    return [...endpointMethodsMap.get(scope).keys()];\n  },\n  set(target, methodName, value) {\n    return target.cache[methodName] = value;\n  },\n  get({ octokit, scope, cache }, methodName) {\n    if (cache[methodName]) {\n      return cache[methodName];\n    }\n    const method = endpointMethodsMap.get(scope).get(methodName);\n    if (!method) {\n      return void 0;\n    }\n    const { endpointDefaults, decorations } = method;\n    if (decorations) {\n      cache[methodName] = decorate(\n        octokit,\n        scope,\n        methodName,\n        endpointDefaults,\n        decorations\n      );\n    } else {\n      cache[methodName] = octokit.request.defaults(endpointDefaults);\n    }\n    return cache[methodName];\n  }\n};\nfunction endpointsToMethods(octokit) {\n  const newMethods = {};\n  for (const scope of endpointMethodsMap.keys()) {\n    newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);\n  }\n  return newMethods;\n}\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n  const requestWithDefaults = octokit.request.defaults(defaults);\n  function withDecorations(...args) {\n    let options = requestWithDefaults.endpoint.merge(...args);\n    if (decorations.mapToData) {\n      options = Object.assign({}, options, {\n        data: options[decorations.mapToData],\n        [decorations.mapToData]: void 0\n      });\n      return requestWithDefaults(options);\n    }\n    if (decorations.renamed) {\n      const [newScope, newMethodName] = decorations.renamed;\n      octokit.log.warn(\n        `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`\n      );\n    }\n    if (decorations.deprecated) {\n      octokit.log.warn(decorations.deprecated);\n    }\n    if (decorations.renamedParameters) {\n      const options2 = requestWithDefaults.endpoint.merge(...args);\n      for (const [name, alias] of Object.entries(\n        decorations.renamedParameters\n      )) {\n        if (name in options2) {\n          octokit.log.warn(\n            `\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`\n          );\n          if (!(alias in options2)) {\n            options2[alias] = options2[name];\n          }\n          delete options2[name];\n        }\n      }\n      return requestWithDefaults(options2);\n    }\n    return requestWithDefaults(...args);\n  }\n  return Object.assign(withDecorations, requestWithDefaults);\n}\nexport {\n  endpointsToMethods\n};\n", "import { VERSION } from \"./version.js\";\nimport { endpointsToMethods } from \"./endpoints-to-methods.js\";\nfunction restEndpointMethods(octokit) {\n  const api = endpointsToMethods(octokit);\n  return {\n    rest: api\n  };\n}\nrestEndpointMethods.VERSION = VERSION;\nfunction legacyRestEndpointMethods(octokit) {\n  const api = endpointsToMethods(octokit);\n  return {\n    ...api,\n    rest: api\n  };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\nexport {\n  legacyRestEndpointMethods,\n  restEndpointMethods\n};\n"],
-  "mappings": ";AAAA,IAAM,UAAU;;;ACAhB,IAAM,YAAY;AAAA,EAChB,SAAS;AAAA,IACP,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,+CAA+C;AAAA,IACzE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,oCAAoC;AAAA,IACxD,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,+CAA+C;AAAA,IACzE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,8CAA8C;AAAA,IACnE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,kDAAkD;AAAA,IACpE,mBAAmB,CAAC,6CAA6C;AAAA,IACjE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,oDAAoD;AAAA,IACxE,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,oDAAoD;AAAA,MAClD;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,mDAAmD;AAAA,MACjD;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,0CAA0C;AAAA,IAChE,sBAAsB,CAAC,+CAA+C;AAAA,IACtE,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,qCAAqC;AAAA,IAClE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,aAAa,CAAC,2DAA2D;AAAA,IACzE,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,wDAAwD;AAAA,MACtD;AAAA,IACF;AAAA,IACA,sDAAsD;AAAA,MACpD;AAAA,IACF;AAAA,IACA,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,iDAAiD;AAAA,IACxE,iBAAiB,CAAC,4CAA4C;AAAA,IAC9D,cAAc,CAAC,+CAA+C;AAAA,IAC9D,gBAAgB,CAAC,0CAA0C;AAAA,IAC3D,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,WAAW,uCAAuC,EAAE;AAAA,IAClE;AAAA,IACA,kBAAkB,CAAC,sDAAsD;AAAA,IACzE,eAAe,CAAC,yDAAyD;AAAA,IACzE,iBAAiB,CAAC,oDAAoD;AAAA,IACtE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,6CAA6C;AAAA,IACzE,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,aAAa,CAAC,2DAA2D;AAAA,IACzE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,iDAAiD;AAAA,IAClE,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,6CAA6C;AAAA,IACpE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,iCAAiC;AAAA,IAClD,kBAAkB,CAAC,mCAAmC;AAAA,IACtD,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,2CAA2C;AAAA,IAC7D,mBAAmB,CAAC,6CAA6C;AAAA,IACjE,mBAAmB,CAAC,6CAA6C;AAAA,IACjE,8BAA8B,CAAC,2CAA2C;AAAA,IAC1E,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,0DAA0D;AAAA,MACxD;AAAA,IACF;AAAA,IACA,6BAA6B,CAAC,iCAAiC;AAAA,IAC/D,8BAA8B,CAAC,2CAA2C;AAAA,IAC1E,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,wCAAwC;AAAA,IAClE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,eAAe,CAAC,wDAAwD;AAAA,IACxE,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,iDAAiD;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,kDAAkD;AAAA,MAChD;AAAA,IACF;AAAA,IACA,6CAA6C;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,wDAAwD;AAAA,MACtD;AAAA,IACF;AAAA,IACA,sDAAsD;AAAA,MACpD;AAAA,IACF;AAAA,IACA,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yDAAyD;AAAA,MACvD;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,4CAA4C;AAAA,IAChE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,uCAAuC,CAAC,kCAAkC;AAAA,IAC1E,wBAAwB,CAAC,2CAA2C;AAAA,IACpE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,UAAU,CAAC,YAAY;AAAA,IACvB,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,WAAW,CAAC,wCAAwC;AAAA,IACpD,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,gCAAgC,CAAC,8BAA8B;AAAA,IAC/D,uCAAuC,CAAC,oBAAoB;AAAA,IAC5D,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,aAAa;AAAA,IAChC,gCAAgC,CAAC,qCAAqC;AAAA,IACtE,yBAAyB,CAAC,qCAAqC;AAAA,IAC/D,qBAAqB,CAAC,wBAAwB;AAAA,IAC9C,2BAA2B,CAAC,uCAAuC;AAAA,IACnE,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,kCAAkC;AAAA,IACnD,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,qCAAqC,CAAC,mBAAmB;AAAA,IACzD,wBAAwB,CAAC,+BAA+B;AAAA,IACxD,wBAAwB,CAAC,qCAAqC;AAAA,IAC9D,uBAAuB,CAAC,sCAAsC;AAAA,IAC9D,sCAAsC,CAAC,yBAAyB;AAAA,IAChE,qBAAqB,CAAC,uCAAuC;AAAA,IAC7D,yBAAyB,CAAC,oBAAoB;AAAA,IAC9C,6BAA6B,CAAC,yCAAyC;AAAA,IACvE,kBAAkB,CAAC,0CAA0C;AAAA,IAC7D,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,8BAA8B,CAAC,kCAAkC;AAAA,IACjE,gCAAgC,CAAC,qCAAqC;AAAA,EACxE;AAAA,EACA,MAAM;AAAA,IACJ,uBAAuB;AAAA,MACrB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,QAAQ,2CAA2C,EAAE;AAAA,IACnE;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,YAAY,CAAC,sCAAsC;AAAA,IACnD,oBAAoB,CAAC,wCAAwC;AAAA,IAC7D,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,oBAAoB,CAAC,6CAA6C;AAAA,IAClE,aAAa,CAAC,wCAAwC;AAAA,IACtD,kBAAkB,CAAC,UAAU;AAAA,IAC7B,WAAW,CAAC,sBAAsB;AAAA,IAClC,iBAAiB,CAAC,0CAA0C;AAAA,IAC5D,oBAAoB,CAAC,8BAA8B;AAAA,IACnD,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,oCAAoC;AAAA,IAC1D,wBAAwB,CAAC,sBAAsB;AAAA,IAC/C,oBAAoB,CAAC,wCAAwC;AAAA,IAC7D,qBAAqB,CAAC,mDAAmD;AAAA,IACzE,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,6CAA6C;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,wBAAwB;AAAA,IAC5C,uCAAuC,CAAC,yBAAyB;AAAA,IACjE,WAAW,CAAC,gCAAgC;AAAA,IAC5C,kBAAkB,CAAC,wCAAwC;AAAA,IAC3D,mCAAmC,CAAC,gCAAgC;AAAA,IACpE,uCAAuC,CAAC,iCAAiC;AAAA,IACzE,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,uBAAuB,CAAC,0BAA0B;AAAA,IAClD,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,QAAQ,gDAAgD,EAAE;AAAA,IACxE;AAAA,IACA,gDAAgD;AAAA,MAC9C;AAAA,IACF;AAAA,IACA,YAAY,CAAC,uCAAuC;AAAA,IACpD,+BAA+B,CAAC,4BAA4B;AAAA,IAC5D,YAAY,CAAC,6CAA6C;AAAA,IAC1D,qBAAqB,CAAC,oDAAoD;AAAA,IAC1E,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,wBAAwB;AAAA,EACtD;AAAA,EACA,SAAS;AAAA,IACP,4BAA4B,CAAC,0CAA0C;AAAA,IACvE,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,6BAA6B,CAAC,2CAA2C;AAAA,IACzE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ,CAAC,uCAAuC;AAAA,IAChD,aAAa,CAAC,yCAAyC;AAAA,IACvD,KAAK,CAAC,qDAAqD;AAAA,IAC3D,UAAU,CAAC,yDAAyD;AAAA,IACpE,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,YAAY,CAAC,oDAAoD;AAAA,IACjE,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,sDAAsD;AAAA,IACzE,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,uDAAuD;AAAA,EAClE;AAAA,EACA,cAAc;AAAA,IACZ,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,UAAU;AAAA,MACR;AAAA,MACA,CAAC;AAAA,MACD,EAAE,mBAAmB,EAAE,UAAU,eAAe,EAAE;AAAA,IACpD;AAAA,IACA,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,uDAAuD;AAAA,IACzE,UAAU,CAAC,2DAA2D;AAAA,IACtE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,sCAAsC;AAAA,IACzD,mBAAmB,CAAC,gDAAgD;AAAA,IACpE,qBAAqB;AAAA,MACnB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,gBAAgB,oBAAoB,EAAE;AAAA,IACpD;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,kDAAkD;AAAA,IACvE,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,iDAAiD;AAAA,EACjE;AAAA,EACA,gBAAgB;AAAA,IACd,sBAAsB,CAAC,uBAAuB;AAAA,IAC9C,gBAAgB,CAAC,6BAA6B;AAAA,EAChD;AAAA,EACA,YAAY;AAAA,IACV,4CAA4C;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,uBAAuB;AAAA,IACpD,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,0CAA0C;AAAA,IACvE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,qDAAqD;AAAA,IACvE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,uCAAuC;AAAA,IACjE,iBAAiB,CAAC,+CAA+C;AAAA,IACjE,cAAc,CAAC,kDAAkD;AAAA,IACjE,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,mDAAmD;AAAA,MACjD;AAAA,IACF;AAAA,IACA,0BAA0B,CAAC,sBAAsB;AAAA,IACjD,oBAAoB;AAAA,MAClB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,mBAAmB,EAAE,QAAQ,MAAM,EAAE;AAAA,IACzC;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,oCAAoC;AAAA,IACrD,iBAAiB,CAAC,8CAA8C;AAAA,IAChE,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,iCAAiC,CAAC,8BAA8B;AAAA,IAChE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,8CAA8C;AAAA,IAC1E,0BAA0B,CAAC,6CAA6C;AAAA,IACxE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,yCAAyC;AAAA,EACxE;AAAA,EACA,SAAS;AAAA,IACP,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,+BAA+B,CAAC,iCAAiC;AAAA,IACjE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,uCAAuC;AAAA,EAC5D;AAAA,EACA,YAAY;AAAA,IACV,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,qDAAqD;AAAA,IACvE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,UAAU,CAAC,4DAA4D;AAAA,IACvE,iBAAiB,CAAC,+CAA+C;AAAA,IACjE,cAAc,CAAC,kDAAkD;AAAA,IACjE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,mCAAmC;AAAA,IACtD,mBAAmB,CAAC,6CAA6C;AAAA,IACjE,gBAAgB,CAAC,oCAAoC;AAAA,IACrD,iBAAiB,CAAC,8CAA8C;AAAA,IAChE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,IACF;AAAA,IACA,YAAY,CAAC,iDAAiD;AAAA,EAChE;AAAA,EACA,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE;AAAA,EAC/B,OAAO;AAAA,IACL,gBAAgB,CAAC,2BAA2B;AAAA,IAC5C,QAAQ,CAAC,aAAa;AAAA,IACtB,eAAe,CAAC,gCAAgC;AAAA,IAChD,QAAQ,CAAC,yBAAyB;AAAA,IAClC,eAAe,CAAC,+CAA+C;AAAA,IAC/D,MAAM,CAAC,6BAA6B;AAAA,IACpC,KAAK,CAAC,sBAAsB;AAAA,IAC5B,YAAY,CAAC,4CAA4C;AAAA,IACzD,aAAa,CAAC,4BAA4B;AAAA,IAC1C,MAAM,CAAC,YAAY;AAAA,IACnB,cAAc,CAAC,+BAA+B;AAAA,IAC9C,aAAa,CAAC,8BAA8B;AAAA,IAC5C,aAAa,CAAC,6BAA6B;AAAA,IAC3C,WAAW,CAAC,4BAA4B;AAAA,IACxC,YAAY,CAAC,mBAAmB;AAAA,IAChC,aAAa,CAAC,oBAAoB;AAAA,IAClC,MAAM,CAAC,2BAA2B;AAAA,IAClC,QAAQ,CAAC,8BAA8B;AAAA,IACvC,QAAQ,CAAC,wBAAwB;AAAA,IACjC,eAAe,CAAC,8CAA8C;AAAA,EAChE;AAAA,EACA,KAAK;AAAA,IACH,YAAY,CAAC,sCAAsC;AAAA,IACnD,cAAc,CAAC,wCAAwC;AAAA,IACvD,WAAW,CAAC,qCAAqC;AAAA,IACjD,WAAW,CAAC,qCAAqC;AAAA,IACjD,YAAY,CAAC,sCAAsC;AAAA,IACnD,WAAW,CAAC,6CAA6C;AAAA,IACzD,SAAS,CAAC,gDAAgD;AAAA,IAC1D,WAAW,CAAC,oDAAoD;AAAA,IAChE,QAAQ,CAAC,yCAAyC;AAAA,IAClD,QAAQ,CAAC,8CAA8C;AAAA,IACvD,SAAS,CAAC,gDAAgD;AAAA,IAC1D,kBAAkB,CAAC,mDAAmD;AAAA,IACtE,WAAW,CAAC,4CAA4C;AAAA,EAC1D;AAAA,EACA,WAAW;AAAA,IACT,iBAAiB,CAAC,0BAA0B;AAAA,IAC5C,aAAa,CAAC,iCAAiC;AAAA,EACjD;AAAA,EACA,cAAc;AAAA,IACZ,qCAAqC,CAAC,8BAA8B;AAAA,IACpE,uBAAuB,CAAC,oCAAoC;AAAA,IAC5D,wBAAwB,CAAC,8CAA8C;AAAA,IACvE,mCAAmC;AAAA,MACjC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,gBAAgB,qCAAqC,EAAE;AAAA,IACrE;AAAA,IACA,wCAAwC,CAAC,iCAAiC;AAAA,IAC1E,0BAA0B,CAAC,uCAAuC;AAAA,IAClE,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,gBAAgB,wCAAwC,EAAE;AAAA,IACxE;AAAA,IACA,qCAAqC,CAAC,8BAA8B;AAAA,IACpE,uBAAuB,CAAC,oCAAoC;AAAA,IAC5D,wBAAwB,CAAC,8CAA8C;AAAA,IACvE,mCAAmC;AAAA,MACjC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,gBAAgB,qCAAqC,EAAE;AAAA,IACrE;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,WAAW,CAAC,yDAAyD;AAAA,IACrE,wBAAwB,CAAC,gDAAgD;AAAA,IACzE,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,mCAAmC;AAAA,IAC5C,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,aAAa,CAAC,mCAAmC;AAAA,IACjD,iBAAiB,CAAC,uCAAuC;AAAA,IACzD,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,aAAa,CAAC,4CAA4C;AAAA,IAC1D,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,KAAK,CAAC,iDAAiD;AAAA,IACvD,YAAY,CAAC,wDAAwD;AAAA,IACrE,UAAU,CAAC,oDAAoD;AAAA,IAC/D,UAAU,CAAC,yCAAyC;AAAA,IACpD,cAAc,CAAC,yDAAyD;AAAA,IACxE,MAAM,CAAC,aAAa;AAAA,IACpB,eAAe,CAAC,qCAAqC;AAAA,IACrD,cAAc,CAAC,0DAA0D;AAAA,IACzE,qBAAqB,CAAC,2CAA2C;AAAA,IACjE,YAAY,CAAC,wDAAwD;AAAA,IACrE,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,0BAA0B,CAAC,kBAAkB;AAAA,IAC7C,YAAY,CAAC,wBAAwB;AAAA,IACrC,aAAa,CAAC,kCAAkC;AAAA,IAChD,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,kCAAkC;AAAA,IACtD,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,sCAAsC;AAAA,IACvD,MAAM,CAAC,sDAAsD;AAAA,IAC7D,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,IACF;AAAA,IACA,WAAW,CAAC,wDAAwD;AAAA,IACpE,QAAQ,CAAC,yDAAyD;AAAA,IAClE,QAAQ,CAAC,mDAAmD;AAAA,IAC5D,eAAe,CAAC,0DAA0D;AAAA,IAC1E,aAAa,CAAC,2CAA2C;AAAA,IACzD,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,KAAK,CAAC,yBAAyB;AAAA,IAC/B,oBAAoB,CAAC,eAAe;AAAA,IACpC,YAAY,CAAC,mCAAmC;AAAA,EAClD;AAAA,EACA,UAAU;AAAA,IACR,QAAQ,CAAC,gBAAgB;AAAA,IACzB,WAAW;AAAA,MACT;AAAA,MACA,EAAE,SAAS,EAAE,gBAAgB,4BAA4B,EAAE;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,KAAK,CAAC,WAAW;AAAA,IACjB,gBAAgB,CAAC,eAAe;AAAA,IAChC,YAAY,CAAC,cAAc;AAAA,IAC3B,QAAQ,CAAC,UAAU;AAAA,IACnB,MAAM,CAAC,OAAO;AAAA,EAChB;AAAA,EACA,YAAY;AAAA,IACV,cAAc;AAAA,MACZ;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,+BAA+B,CAAC,qCAAqC;AAAA,IACrE,iBAAiB,CAAC,2CAA2C;AAAA,IAC7D,0BAA0B,CAAC,sBAAsB;AAAA,IACjD,YAAY,CAAC,4BAA4B;AAAA,IACzC,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,wDAAwD;AAAA,IAC1E,kBAAkB;AAAA,MAChB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,cAAc,+BAA+B,EAAE;AAAA,IAC7D;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,uBAAuB;AAAA,IACnD,aAAa,CAAC,6BAA6B;AAAA,IAC3C,aAAa;AAAA,MACX;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,WAAW,CAAC,mCAAmC;AAAA,IAC/C,kBAAkB,CAAC,gDAAgD;AAAA,IACnE,kBAAkB,CAAC,mCAAmC;AAAA,IACtD,wBAAwB,CAAC,oCAAoC;AAAA,IAC7D,8BAA8B,CAAC,2CAA2C;AAAA,IAC1E,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,8BAA8B;AAAA,IACjD,gCAAgC,CAAC,qCAAqC;AAAA,IACtE,8CAA8C;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,eAAe,CAAC,wBAAwB;AAAA,IACxC,QAAQ,CAAC,oBAAoB;AAAA,IAC7B,eAAe,CAAC,oCAAoC;AAAA,IACpD,6CAA6C;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,KAAK,CAAC,iBAAiB;AAAA,IACvB,wBAAwB,CAAC,mCAAmC;AAAA,IAC5D,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,mCAAmC,CAAC,kCAAkC;AAAA,IACtE,sBAAsB,CAAC,wCAAwC;AAAA,IAC/D,YAAY,CAAC,iCAAiC;AAAA,IAC9C,wBAAwB,CAAC,wCAAwC;AAAA,IACjE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,MAAM,CAAC,oBAAoB;AAAA,IAC3B,sBAAsB,CAAC,+BAA+B;AAAA,IACtD,kBAAkB,CAAC,wBAAwB;AAAA,IAC3C,oCAAoC,CAAC,mCAAmC;AAAA,IACxE,uBAAuB,CAAC,oCAAoC;AAAA,IAC5D,0BAA0B,CAAC,gBAAgB;AAAA,IAC3C,aAAa,CAAC,4BAA4B;AAAA,IAC1C,qBAAqB,CAAC,mDAAmD;AAAA,IACzE,aAAa,CAAC,yBAAyB;AAAA,IACvC,qCAAqC,CAAC,4BAA4B;AAAA,IAClE,0BAA0B,CAAC,uCAAuC;AAAA,IAClE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,gDAAgD;AAAA,IACvE,eAAe,CAAC,wCAAwC;AAAA,IACxD,wBAAwB,CAAC,6BAA6B;AAAA,IACtD,mBAAmB,CAAC,gCAAgC;AAAA,IACpD,0BAA0B,CAAC,mCAAmC;AAAA,IAC9D,uBAAuB,CAAC,4CAA4C;AAAA,IACpE,cAAc,CAAC,uBAAuB;AAAA,IACtC,aAAa,CAAC,wCAAwC;AAAA,IACtD,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,uCAAuC;AAAA,IACtD,yBAAyB,CAAC,2CAA2C;AAAA,IACrE,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,4CAA4C;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,wCAAwC;AAAA,IAC/D,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,aAAa,CAAC,sCAAsC;AAAA,IACpD,QAAQ,CAAC,mBAAmB;AAAA,IAC5B,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,kDAAkD;AAAA,IACpE,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,eAAe,CAAC,mCAAmC;AAAA,IACnD,2BAA2B,CAAC,0CAA0C;AAAA,EACxE;AAAA,EACA,UAAU;AAAA,IACR,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,0CAA0C;AAAA,MACxC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,8CAA8C;AAAA,MAC5C;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,YAAY,2CAA2C,EAAE;AAAA,IACvE;AAAA,IACA,6DAA6D;AAAA,MAC3D;AAAA,MACA,CAAC;AAAA,MACD;AAAA,QACE,SAAS;AAAA,UACP;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,yDAAyD;AAAA,MACvD;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,4CAA4C;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,4DAA4D;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,uDAAuD;AAAA,MACrD;AAAA,IACF;AAAA,IACA,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,kCAAkC,CAAC,oBAAoB;AAAA,IACvD,6BAA6B,CAAC,0BAA0B;AAAA,IACxD,qBAAqB,CAAC,gCAAgC;AAAA,IACtD,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,2CAA2C;AAAA,MACzC;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,iBAAiB,CAAC,qDAAqD;AAAA,IACvE,YAAY,CAAC,0CAA0C;AAAA,IACvD,cAAc,CAAC,qCAAqC;AAAA,IACpD,4BAA4B,CAAC,qBAAqB;AAAA,IAClD,cAAc,CAAC,2BAA2B;AAAA,IAC1C,eAAe,CAAC,qCAAqC;AAAA,IACrD,QAAQ,CAAC,+BAA+B;AAAA,IACxC,YAAY,CAAC,0CAA0C;AAAA,IACvD,cAAc,CAAC,sCAAsC;AAAA,IACrD,KAAK,CAAC,4BAA4B;AAAA,IAClC,SAAS,CAAC,uCAAuC;AAAA,IACjD,WAAW,CAAC,mCAAmC;AAAA,IAC/C,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,WAAW,CAAC,yCAAyC;AAAA,IACrD,mBAAmB,CAAC,0CAA0C;AAAA,IAC9D,aAAa,CAAC,oCAAoC;AAAA,IAClD,YAAY,CAAC,0BAA0B;AAAA,IACvC,aAAa,CAAC,oCAAoC;AAAA,IAClD,aAAa,CAAC,gCAAgC;AAAA,IAC9C,UAAU,CAAC,8CAA8C;AAAA,IACzD,YAAY,CAAC,0CAA0C;AAAA,IACvD,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,8BAA8B;AAAA,IACvC,YAAY,CAAC,yCAAyC;AAAA,IACtD,cAAc,CAAC,qCAAqC;AAAA,EACtD;AAAA,EACA,OAAO;AAAA,IACL,eAAe,CAAC,qDAAqD;AAAA,IACrE,QAAQ,CAAC,kCAAkC;AAAA,IAC3C,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,cAAc,CAAC,wDAAwD;AAAA,IACvE,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,IACF;AAAA,IACA,KAAK,CAAC,+CAA+C;AAAA,IACrD,WAAW;AAAA,MACT;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,uDAAuD;AAAA,IAC1E,MAAM,CAAC,iCAAiC;AAAA,IACxC,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,uDAAuD;AAAA,IACrE,WAAW,CAAC,qDAAqD;AAAA,IACjE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,0CAA0C;AAAA,IACtE,aAAa,CAAC,uDAAuD;AAAA,IACrE,OAAO,CAAC,qDAAqD;AAAA,IAC7D,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,iDAAiD;AAAA,IAC1D,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAW,EAAE,KAAK,CAAC,iBAAiB,EAAE;AAAA,EACtC,WAAW;AAAA,IACT,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,2DAA2D;AAAA,IAC1E,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,kBAAkB;AAAA,MAChB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,sCAAsC,EAAE;AAAA,IAC/D;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,OAAO;AAAA,IACtB;AAAA,IACA,iBAAiB,CAAC,oDAAoD;AAAA,IACtE,wBAAwB;AAAA,MACtB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,WAAW;AAAA,IAC1B;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,oDAAoD;AAAA,IACxE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,6CAA6C;AAAA,IAChE,gBAAgB,CAAC,mDAAmD;AAAA,IACpE,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,sCAAsC;AAAA,IACvD,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,2CAA2C;AAAA,IAChE,iBAAiB,CAAC,iCAAiC;AAAA,IACnD,kBAAkB,CAAC,wCAAwC;AAAA,IAC3D,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,uCAAuC;AAAA,IAC7D,4BAA4B,CAAC,kBAAkB;AAAA,IAC/C,YAAY,CAAC,kCAAkC;AAAA,IAC/C,aAAa,CAAC,wBAAwB;AAAA,IACtC,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,2CAA2C;AAAA,IACxE,kBAAkB,CAAC,2BAA2B;AAAA,IAC9C,uBAAuB,CAAC,6CAA6C;AAAA,IACrE,iBAAiB,CAAC,kCAAkC;AAAA,IACpD,eAAe,CAAC,qCAAqC;AAAA,IACrD,mBAAmB,CAAC,qCAAqC;AAAA,IACzD,qBAAqB,CAAC,4CAA4C;AAAA,IAClE,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,eAAe,CAAC,kCAAkC;AAAA,IAClD,mBAAmB;AAAA,MACjB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,uCAAuC,EAAE;AAAA,IAChE;AAAA,IACA,uCAAuC;AAAA,MACrC;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,8BAA8B;AAAA,IACvC,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,sDAAsD;AAAA,IACvE,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,oDAAoD;AAAA,IAC1E,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,4CAA4C;AAAA,IAC9D,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,YAAY,CAAC,8CAA8C;AAAA,IAC3D,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,0CAA0C;AAAA,IAC7D,iBAAiB,CAAC,oCAAoC;AAAA,IACtD,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,eAAe,CAAC,oDAAoD;AAAA,IACpE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,oDAAoD;AAAA,IACxE,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,eAAe,CAAC,8CAA8C;AAAA,IAC9D,+BAA+B;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,wBAAwB,EAAE;AAAA,IACjD;AAAA,IACA,wBAAwB,CAAC,yCAAyC;AAAA,IAClE,wBAAwB,CAAC,yCAAyC;AAAA,IAClE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,KAAK,CAAC,2BAA2B;AAAA,IACjC,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,wCAAwC;AAAA,IAC7D,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,kCAAkC;AAAA,IACjD,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,aAAa,CAAC,mDAAmD;AAAA,IACjE,WAAW,CAAC,6CAA6C;AAAA,IACzD,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,mDAAmD;AAAA,IACpE,WAAW,CAAC,0CAA0C;AAAA,IACtD,uBAAuB,CAAC,gDAAgD;AAAA,IACxE,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,yBAAyB,CAAC,gDAAgD;AAAA,IAC1E,WAAW,CAAC,yCAAyC;AAAA,IACrD,wBAAwB,CAAC,iDAAiD;AAAA,IAC1E,kBAAkB,CAAC,iDAAiD;AAAA,IACpE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,4BAA4B,CAAC,6CAA6C;AAAA,IAC1E,YAAY,CAAC,2CAA2C;AAAA,IACxD,sBAAsB,CAAC,8CAA8C;AAAA,IACrE,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,6CAA6C;AAAA,IACzE,cAAc,CAAC,yCAAyC;AAAA,IACxD,eAAe,CAAC,uDAAuD;AAAA,IACvE,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,+CAA+C;AAAA,IACrE,kBAAkB,CAAC,2CAA2C;AAAA,IAC9D,iBAAiB,CAAC,sDAAsD;AAAA,IACxE,kBAAkB,CAAC,sCAAsC;AAAA,IACzD,eAAe,CAAC,uCAAuC;AAAA,IACvD,gBAAgB,CAAC,0BAA0B;AAAA,IAC3C,UAAU,CAAC,iCAAiC;AAAA,IAC5C,eAAe,CAAC,mDAAmD;AAAA,IACnE,qBAAqB,CAAC,wCAAwC;AAAA,IAC9D,uBAAuB,CAAC,+CAA+C;AAAA,IACvE,gCAAgC;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,4CAA4C;AAAA,IAChE,WAAW,CAAC,kCAAkC;AAAA,IAC9C,sBAAsB,CAAC,wCAAwC;AAAA,IAC/D,YAAY,CAAC,iDAAiD;AAAA,IAC9D,iBAAiB,CAAC,sDAAsD;AAAA,IACxE,iBAAiB,CAAC,+CAA+C;AAAA,IACjE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,gDAAgD;AAAA,IACpE,gBAAgB,CAAC,iDAAiD;AAAA,IAClE,iBAAiB,CAAC,oCAAoC;AAAA,IACtD,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,aAAa,CAAC,iDAAiD;AAAA,IAC/D,iBAAiB,CAAC,qDAAqD;AAAA,IACvE,qCAAqC;AAAA,MACnC;AAAA,IACF;AAAA,IACA,UAAU,CAAC,yCAAyC;AAAA,IACpD,YAAY,CAAC,2CAA2C;AAAA,IACxD,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,oCAAoC;AAAA,IACrD,eAAe,CAAC,qCAAqC;AAAA,IACrD,cAAc,CAAC,oCAAoC;AAAA,IACnD,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,2BAA2B,CAAC,oCAAoC;AAAA,IAChE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,mCAAmC;AAAA,IACjD,kBAAkB,CAAC,wCAAwC;AAAA,IAC3D,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,gBAAgB,CAAC,gCAAgC;AAAA,IACjD,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,uCAAuC;AAAA,IACzD,0BAA0B,CAAC,iBAAiB;AAAA,IAC5C,YAAY,CAAC,uBAAuB;AAAA,IACpC,aAAa,CAAC,6BAA6B;AAAA,IAC3C,WAAW,CAAC,iCAAiC;AAAA,IAC7C,iBAAiB,CAAC,uCAAuC;AAAA,IACzD,qCAAqC,CAAC,kCAAkC;AAAA,IACxE,eAAe,CAAC,qCAAqC;AAAA,IACrD,iBAAiB,CAAC,wCAAwC;AAAA,IAC1D,YAAY,CAAC,mBAAmB;AAAA,IAChC,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,oCAAoC;AAAA,IACnD,mBAAmB,CAAC,2CAA2C;AAAA,IAC/D,UAAU,CAAC,gCAAgC;AAAA,IAC3C,WAAW,CAAC,iCAAiC;AAAA,IAC7C,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,cAAc,CAAC,iCAAiC;AAAA,IAChD,OAAO,CAAC,mCAAmC;AAAA,IAC3C,eAAe,CAAC,2CAA2C;AAAA,IAC3D,aAAa,CAAC,kDAAkD;AAAA,IAChE,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,OAAO;AAAA,IACtB;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,WAAW;AAAA,IAC1B;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,cAAc,CAAC,qDAAqD;AAAA,IACpE,kBAAkB,CAAC,kCAAkC;AAAA,IACrD,mBAAmB,CAAC,yCAAyC;AAAA,IAC7D,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,OAAO;AAAA,IACtB;AAAA,IACA,wBAAwB;AAAA,MACtB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,WAAW;AAAA,IAC1B;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,WAAW,QAAQ;AAAA,IACvB;AAAA,IACA,iBAAiB,CAAC,kDAAkD;AAAA,IACpE,UAAU,CAAC,qCAAqC;AAAA,IAChD,QAAQ,CAAC,6BAA6B;AAAA,IACtC,wBAAwB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,qBAAqB,CAAC,mDAAmD;AAAA,IACzE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,iCAAiC,CAAC,iCAAiC;AAAA,IACnE,kBAAkB;AAAA,MAChB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,uCAAuC;AAAA,IAC1D,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,eAAe,CAAC,mDAAmD;AAAA,IACnE,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,iDAAiD;AAAA,IACrE,4BAA4B;AAAA,MAC1B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,6BAA6B,EAAE;AAAA,IACtD;AAAA,IACA,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,eAAe,CAAC,6CAA6C;AAAA,IAC7D,4BAA4B;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,MACA,EAAE,SAAS,6BAA6B;AAAA,IAC1C;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,MAAM,CAAC,kBAAkB;AAAA,IACzB,SAAS,CAAC,qBAAqB;AAAA,IAC/B,uBAAuB,CAAC,oBAAoB;AAAA,IAC5C,QAAQ,CAAC,oBAAoB;AAAA,IAC7B,OAAO,CAAC,0BAA0B;AAAA,IAClC,QAAQ,CAAC,oBAAoB;AAAA,IAC7B,OAAO,CAAC,mBAAmB;AAAA,EAC7B;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,MACR;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,wCAAwC;AAAA,IAC3D,mBAAmB,CAAC,kDAAkD;AAAA,IACtE,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,oBAAoB;AAAA,IAClB,kCAAkC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,IACA,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,2BAA2B;AAAA,IAC/C,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,iBAAiB;AAAA,IACxC,6BAA6B,CAAC,qCAAqC;AAAA,IACnE,0BAA0B,CAAC,+CAA+C;AAAA,IAC1E,0BAA0B;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,mCAAmC;AAAA,MACjC;AAAA,IACF;AAAA,IACA,oCAAoC;AAAA,MAClC;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,wBAAwB;AAAA,IACjC,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,uBAAuB,CAAC,gDAAgD;AAAA,IACxE,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,sCAAsC;AAAA,IACpD,WAAW,CAAC,mCAAmC;AAAA,IAC/C,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,2BAA2B;AAAA,MACzB;AAAA,IACF;AAAA,IACA,MAAM,CAAC,uBAAuB;AAAA,IAC9B,gBAAgB,CAAC,yCAAyC;AAAA,IAC1D,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,sBAAsB,CAAC,+CAA+C;AAAA,IACtE,0BAA0B,CAAC,iBAAiB;AAAA,IAC5C,kBAAkB,CAAC,2CAA2C;AAAA,IAC9D,6BAA6B;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,4CAA4C;AAAA,IAChE,gBAAgB,CAAC,yCAAyC;AAAA,IAC1D,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,uBAAuB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa,CAAC,qCAAqC;AAAA,EACrD;AAAA,EACA,OAAO;AAAA,IACL,0BAA0B;AAAA,MACxB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,8BAA8B,EAAE;AAAA,IACvD;AAAA,IACA,8BAA8B,CAAC,mBAAmB;AAAA,IAClD,sCAAsC,CAAC,4BAA4B;AAAA,IACnE,OAAO,CAAC,6BAA6B;AAAA,IACrC,cAAc,CAAC,6BAA6B;AAAA,IAC5C,uBAAuB,CAAC,+CAA+C;AAAA,IACvE,sCAAsC,CAAC,gCAAgC;AAAA,IACvE,8BAA8B;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,kCAAkC,EAAE;AAAA,IAC3D;AAAA,IACA,kCAAkC,CAAC,qBAAqB;AAAA,IACxD,oCAAoC;AAAA,MAClC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,wCAAwC,EAAE;AAAA,IACjE;AAAA,IACA,wCAAwC,CAAC,iBAAiB;AAAA,IAC1D,yCAAyC,CAAC,6BAA6B;AAAA,IACvE,6BAA6B;AAAA,MAC3B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,iCAAiC,EAAE;AAAA,IAC1D;AAAA,IACA,iCAAiC,CAAC,qBAAqB;AAAA,IACvD,8BAA8B;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,kCAAkC,EAAE;AAAA,IAC3D;AAAA,IACA,kCAAkC,CAAC,oCAAoC;AAAA,IACvE,oCAAoC;AAAA,MAClC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,wCAAwC,EAAE;AAAA,IACjE;AAAA,IACA,wCAAwC,CAAC,4BAA4B;AAAA,IACrE,yCAAyC,CAAC,8BAA8B;AAAA,IACxE,yCAAyC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,QAAQ,CAAC,gCAAgC;AAAA,IACzC,kBAAkB,CAAC,WAAW;AAAA,IAC9B,eAAe,CAAC,uBAAuB;AAAA,IACvC,mBAAmB,CAAC,iCAAiC;AAAA,IACrD,2BAA2B;AAAA,MACzB;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,+BAA+B,EAAE;AAAA,IACxD;AAAA,IACA,+BAA+B,CAAC,iCAAiC;AAAA,IACjE,iCAAiC;AAAA,MAC/B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,qCAAqC,EAAE;AAAA,IAC9D;AAAA,IACA,qCAAqC,CAAC,yBAAyB;AAAA,IAC/D,sCAAsC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,MAAM,CAAC,YAAY;AAAA,IACnB,4BAA4B;AAAA,MAC1B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,gCAAgC,EAAE;AAAA,IACzD;AAAA,IACA,gCAAgC,CAAC,kBAAkB;AAAA,IACnD,4BAA4B;AAAA,MAC1B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,gCAAgC,EAAE;AAAA,IACzD;AAAA,IACA,gCAAgC,CAAC,kBAAkB;AAAA,IACnD,6BAA6B;AAAA,MAC3B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,iCAAiC,EAAE;AAAA,IAC1D;AAAA,IACA,iCAAiC,CAAC,qBAAqB;AAAA,IACvD,mCAAmC,CAAC,qBAAqB;AAAA,IACzD,sBAAsB,CAAC,iCAAiC;AAAA,IACxD,sBAAsB,CAAC,iCAAiC;AAAA,IACxD,6BAA6B;AAAA,MAC3B;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,iCAAiC,EAAE;AAAA,IAC1D;AAAA,IACA,iCAAiC,CAAC,oBAAoB;AAAA,IACtD,oBAAoB,CAAC,gCAAgC;AAAA,IACrD,kCAAkC;AAAA,MAChC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,sCAAsC,EAAE;AAAA,IAC/D;AAAA,IACA,sCAAsC,CAAC,yBAAyB;AAAA,IAChE,uBAAuB,CAAC,4BAA4B;AAAA,IACpD,mCAAmC;AAAA,MACjC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,uCAAuC,EAAE;AAAA,IAChE;AAAA,IACA,uCAAuC,CAAC,gBAAgB;AAAA,IACxD,wCAAwC,CAAC,2BAA2B;AAAA,IACpE,2BAA2B,CAAC,uCAAuC;AAAA,IACnE,wCAAwC,CAAC,4BAA4B;AAAA,IACrE,2BAA2B,CAAC,wCAAwC;AAAA,IACpE,2CAA2C;AAAA,MACzC;AAAA,MACA,CAAC;AAAA,MACD,EAAE,SAAS,CAAC,SAAS,+CAA+C,EAAE;AAAA,IACxE;AAAA,IACA,+CAA+C;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,SAAS,CAAC,gCAAgC;AAAA,IAC1C,UAAU,CAAC,mCAAmC;AAAA,IAC9C,qBAAqB,CAAC,aAAa;AAAA,EACrC;AACF;AACA,IAAI,oBAAoB;;;ACx4DxB,IAAM,qBAAqC,oBAAI,IAAI;AACnD,WAAW,CAAC,OAAO,SAAS,KAAK,OAAO,QAAQ,iBAAS,GAAG;AAC1D,aAAW,CAAC,YAAY,QAAQ,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC9D,UAAM,CAAC,OAAO,UAAU,WAAW,IAAI;AACvC,UAAM,CAAC,QAAQ,GAAG,IAAI,MAAM,MAAM,GAAG;AACrC,UAAM,mBAAmB,OAAO;AAAA,MAC9B;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,IACF;AACA,QAAI,CAAC,mBAAmB,IAAI,KAAK,GAAG;AAClC,yBAAmB,IAAI,OAAuB,oBAAI,IAAI,CAAC;AAAA,IACzD;AACA,uBAAmB,IAAI,KAAK,EAAE,IAAI,YAAY;AAAA,MAC5C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;AACA,IAAM,UAAU;AAAA,EACd,IAAI,EAAE,MAAM,GAAG,YAAY;AACzB,WAAO,mBAAmB,IAAI,KAAK,EAAE,IAAI,UAAU;AAAA,EACrD;AAAA,EACA,yBAAyB,QAAQ,YAAY;AAC3C,WAAO;AAAA,MACL,OAAO,KAAK,IAAI,QAAQ,UAAU;AAAA;AAAA,MAElC,cAAc;AAAA,MACd,UAAU;AAAA,MACV,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,eAAe,QAAQ,YAAY,YAAY;AAC7C,WAAO,eAAe,OAAO,OAAO,YAAY,UAAU;AAC1D,WAAO;AAAA,EACT;AAAA,EACA,eAAe,QAAQ,YAAY;AACjC,WAAO,OAAO,MAAM,UAAU;AAC9B,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,EAAE,MAAM,GAAG;AACjB,WAAO,CAAC,GAAG,mBAAmB,IAAI,KAAK,EAAE,KAAK,CAAC;AAAA,EACjD;AAAA,EACA,IAAI,QAAQ,YAAY,OAAO;AAC7B,WAAO,OAAO,MAAM,UAAU,IAAI;AAAA,EACpC;AAAA,EACA,IAAI,EAAE,SAAS,OAAO,MAAM,GAAG,YAAY;AACzC,QAAI,MAAM,UAAU,GAAG;AACrB,aAAO,MAAM,UAAU;AAAA,IACzB;AACA,UAAM,SAAS,mBAAmB,IAAI,KAAK,EAAE,IAAI,UAAU;AAC3D,QAAI,CAAC,QAAQ;AACX,aAAO;AAAA,IACT;AACA,UAAM,EAAE,kBAAkB,YAAY,IAAI;AAC1C,QAAI,aAAa;AACf,YAAM,UAAU,IAAI;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAM,UAAU,IAAI,QAAQ,QAAQ,SAAS,gBAAgB;AAAA,IAC/D;AACA,WAAO,MAAM,UAAU;AAAA,EACzB;AACF;AACA,SAAS,mBAAmB,SAAS;AACnC,QAAM,aAAa,CAAC;AACpB,aAAW,SAAS,mBAAmB,KAAK,GAAG;AAC7C,eAAW,KAAK,IAAI,IAAI,MAAM,EAAE,SAAS,OAAO,OAAO,CAAC,EAAE,GAAG,OAAO;AAAA,EACtE;AACA,SAAO;AACT;AACA,SAAS,SAAS,SAAS,OAAO,YAAY,UAAU,aAAa;AACnE,QAAM,sBAAsB,QAAQ,QAAQ,SAAS,QAAQ;AAC7D,WAAS,mBAAmB,MAAM;AAChC,QAAI,UAAU,oBAAoB,SAAS,MAAM,GAAG,IAAI;AACxD,QAAI,YAAY,WAAW;AACzB,gBAAU,OAAO,OAAO,CAAC,GAAG,SAAS;AAAA,QACnC,MAAM,QAAQ,YAAY,SAAS;AAAA,QACnC,CAAC,YAAY,SAAS,GAAG;AAAA,MAC3B,CAAC;AACD,aAAO,oBAAoB,OAAO;AAAA,IACpC;AACA,QAAI,YAAY,SAAS;AACvB,YAAM,CAAC,UAAU,aAAa,IAAI,YAAY;AAC9C,cAAQ,IAAI;AAAA,QACV,WAAW,KAAK,IAAI,UAAU,kCAAkC,QAAQ,IAAI,aAAa;AAAA,MAC3F;AAAA,IACF;AACA,QAAI,YAAY,YAAY;AAC1B,cAAQ,IAAI,KAAK,YAAY,UAAU;AAAA,IACzC;AACA,QAAI,YAAY,mBAAmB;AACjC,YAAM,WAAW,oBAAoB,SAAS,MAAM,GAAG,IAAI;AAC3D,iBAAW,CAAC,MAAM,KAAK,KAAK,OAAO;AAAA,QACjC,YAAY;AAAA,MACd,GAAG;AACD,YAAI,QAAQ,UAAU;AACpB,kBAAQ,IAAI;AAAA,YACV,IAAI,IAAI,0CAA0C,KAAK,IAAI,UAAU,aAAa,KAAK;AAAA,UACzF;AACA,cAAI,EAAE,SAAS,WAAW;AACxB,qBAAS,KAAK,IAAI,SAAS,IAAI;AAAA,UACjC;AACA,iBAAO,SAAS,IAAI;AAAA,QACtB;AAAA,MACF;AACA,aAAO,oBAAoB,QAAQ;AAAA,IACrC;AACA,WAAO,oBAAoB,GAAG,IAAI;AAAA,EACpC;AACA,SAAO,OAAO,OAAO,iBAAiB,mBAAmB;AAC3D;;;ACvHA,SAAS,oBAAoB,SAAS;AACpC,QAAM,MAAM,mBAAmB,OAAO;AACtC,SAAO;AAAA,IACL,MAAM;AAAA,EACR;AACF;AACA,oBAAoB,UAAU;AAC9B,SAAS,0BAA0B,SAAS;AAC1C,QAAM,MAAM,mBAAmB,OAAO;AACtC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM;AAAA,EACR;AACF;AACA,0BAA0B,UAAU;",
-  "names": []
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/package.json b/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/package.json
deleted file mode 100644
index a67d1d7..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/plugin-rest-endpoint-methods/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "name": "@octokit/plugin-rest-endpoint-methods",
-  "version": "10.2.0",
-  "description": "Octokit plugin adding one method for all of api.github.com REST API endpoints",
-  "repository": "github:octokit/plugin-rest-endpoint-methods.js",
-  "keywords": [
-    "github",
-    "api",
-    "sdk",
-    "toolkit"
-  ],
-  "author": "Gregor Martynus (https://twitter.com/gr2m)",
-  "license": "MIT",
-  "dependencies": {
-    "@octokit/types": "^12.3.0"
-  },
-  "devDependencies": {
-    "@octokit/core": "^5.0.0",
-    "@octokit/tsconfig": "^2.0.0",
-    "@types/fetch-mock": "^7.3.1",
-    "@types/jest": "^29.0.0",
-    "@types/node": "^20.0.0",
-    "@types/sinon": "^17.0.0",
-    "esbuild": "^0.19.0",
-    "fetch-mock": "npm:@gr2m/fetch-mock@^9.11.0-pull-request-644.1",
-    "github-openapi-graphql-query": "^4.0.0",
-    "glob": "^10.2.6",
-    "jest": "^29.0.0",
-    "lodash.camelcase": "^4.3.0",
-    "lodash.set": "^4.3.2",
-    "lodash.upperfirst": "^4.3.1",
-    "mustache": "^4.0.0",
-    "npm-run-all": "^4.1.5",
-    "prettier": "3.1.0",
-    "semantic-release-plugin-update-version-in-files": "^1.0.0",
-    "sinon": "^17.0.0",
-    "sort-keys": "^5.0.0",
-    "string-to-jsdoc-comment": "^1.0.0",
-    "ts-jest": "^29.0.0",
-    "typescript": "^5.0.0"
-  },
-  "peerDependencies": {
-    "@octokit/core": ">=5"
-  },
-  "publishConfig": {
-    "access": "public"
-  },
-  "engines": {
-    "node": ">= 18"
-  },
-  "files": [
-    "dist-*/**",
-    "bin/**"
-  ],
-  "main": "dist-node/index.js",
-  "browser": "dist-web/index.js",
-  "types": "dist-types/index.d.ts",
-  "module": "dist-src/index.js",
-  "sideEffects": false
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/LICENSE
deleted file mode 100644
index ef2c18e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright (c) 2019 Octokit contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/README.md b/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/README.md
deleted file mode 100644
index cdd3695..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# http-error.js
-
-> Error class for Octokit request errors
-
-[![@latest](https://img.shields.io/npm/v/@octokit/request-error.svg)](https://www.npmjs.com/package/@octokit/request-error)
-[![Build Status](https://github.com/octokit/request-error.js/workflows/Test/badge.svg)](https://github.com/octokit/request-error.js/actions?query=workflow%3ATest)
-
-## Usage
-
-<table>
-<tbody valign=top align=left>
-<tr><th>
-Browsers
-</th><td width=100%>
-Load <code>@octokit/request-error</code> directly from <a href="https://esm.sh">esm.sh</a>
-        
-```html
-<script type="module">
-import { RequestError } from "https://esm.sh/@octokit/request-error";
-</script>
-```
-
-</td></tr>
-<tr><th>
-Node
-</th><td>
-
-Install with <code>npm install @octokit/request-error</code>
-
-```js
-const { RequestError } = require("@octokit/request-error");
-// or: import { RequestError } from "@octokit/request-error";
-```
-
-</td></tr>
-</tbody>
-</table>
-
-```js
-const error = new RequestError("Oops", 500, {
-  request: {
-    method: "POST",
-    url: "https://api.github.com/foo",
-    body: {
-      bar: "baz",
-    },
-    headers: {
-      authorization: "token secret123",
-    },
-  },
-  response: {
-    status: 500,
-    url: "https://api.github.com/foo",
-    headers: {
-      "x-github-request-id": "1:2:3:4",
-    },
-    data: {
-      foo: "bar",
-    },
-  },
-});
-
-error.message; // Oops
-error.status; // 500
-error.request; // { method, url, headers, body }
-error.response; // { url, status, headers, data }
-```
-
-### Usage with Octokit
-
-```js
-try {
-  // your code here that sends at least one Octokit request
-  await octokit.request("GET /");
-} catch (error) {
-  // Octokit errors always have a `error.status` property which is the http response code
-  if (error.status) {
-    // handle Octokit error
-  } else {
-    // handle all other errors
-    throw error;
-  }
-}
-```
-
-## LICENSE
-
-[MIT](LICENSE)
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-node/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-node/index.js
deleted file mode 100644
index ad4bc5f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-node/index.js
+++ /dev/null
@@ -1,92 +0,0 @@
-"use strict";
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
-  if (from && typeof from === "object" || typeof from === "function") {
-    for (let key of __getOwnPropNames(from))
-      if (!__hasOwnProp.call(to, key) && key !== except)
-        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
-  }
-  return to;
-};
-var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
-  // If the importer is in node compatibility mode or this is not an ESM
-  // file that has been converted to a CommonJS file using a Babel-
-  // compatible transform (i.e. "__esModule" has not been set), then set
-  // "default" to the CommonJS "module.exports" for node compatibility.
-  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
-  mod
-));
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
-  RequestError: () => RequestError
-});
-module.exports = __toCommonJS(dist_src_exports);
-var import_deprecation = require("deprecation");
-var import_once = __toESM(require("once"));
-var logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation));
-var logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation));
-var RequestError = class extends Error {
-  constructor(message, statusCode, options) {
-    super(message);
-    if (Error.captureStackTrace) {
-      Error.captureStackTrace(this, this.constructor);
-    }
-    this.name = "HttpError";
-    this.status = statusCode;
-    let headers;
-    if ("headers" in options && typeof options.headers !== "undefined") {
-      headers = options.headers;
-    }
-    if ("response" in options) {
-      this.response = options.response;
-      headers = options.response.headers;
-    }
-    const requestCopy = Object.assign({}, options.request);
-    if (options.request.headers.authorization) {
-      requestCopy.headers = Object.assign({}, options.request.headers, {
-        authorization: options.request.headers.authorization.replace(
-          / .*$/,
-          " [REDACTED]"
-        )
-      });
-    }
-    requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
-    this.request = requestCopy;
-    Object.defineProperty(this, "code", {
-      get() {
-        logOnceCode(
-          new import_deprecation.Deprecation(
-            "[@octokit/request-error] `error.code` is deprecated, use `error.status`."
-          )
-        );
-        return statusCode;
-      }
-    });
-    Object.defineProperty(this, "headers", {
-      get() {
-        logOnceHeaders(
-          new import_deprecation.Deprecation(
-            "[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`."
-          )
-        );
-        return headers || {};
-      }
-    });
-  }
-};
-// Annotate the CommonJS export names for ESM import in node:
-0 && (module.exports = {
-  RequestError
-});
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-node/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-node/index.js.map
deleted file mode 100644
index 3b7e6fe..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-node/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/index.js"],
-  "sourcesContent": ["import { Deprecation } from \"deprecation\";\nimport once from \"once\";\nconst logOnceCode = once((deprecation) => console.warn(deprecation));\nconst logOnceHeaders = once((deprecation) => console.warn(deprecation));\nclass RequestError extends Error {\n  constructor(message, statusCode, options) {\n    super(message);\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor);\n    }\n    this.name = \"HttpError\";\n    this.status = statusCode;\n    let headers;\n    if (\"headers\" in options && typeof options.headers !== \"undefined\") {\n      headers = options.headers;\n    }\n    if (\"response\" in options) {\n      this.response = options.response;\n      headers = options.response.headers;\n    }\n    const requestCopy = Object.assign({}, options.request);\n    if (options.request.headers.authorization) {\n      requestCopy.headers = Object.assign({}, options.request.headers, {\n        authorization: options.request.headers.authorization.replace(\n          / .*$/,\n          \" [REDACTED]\"\n        )\n      });\n    }\n    requestCopy.url = requestCopy.url.replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\").replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n    this.request = requestCopy;\n    Object.defineProperty(this, \"code\", {\n      get() {\n        logOnceCode(\n          new Deprecation(\n            \"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"\n          )\n        );\n        return statusCode;\n      }\n    });\n    Object.defineProperty(this, \"headers\", {\n      get() {\n        logOnceHeaders(\n          new Deprecation(\n            \"[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.\"\n          )\n        );\n        return headers || {};\n      }\n    });\n  }\n}\nexport {\n  RequestError\n};\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA4B;AAC5B,kBAAiB;AACjB,IAAM,kBAAc,YAAAA,SAAK,CAAC,gBAAgB,QAAQ,KAAK,WAAW,CAAC;AACnE,IAAM,qBAAiB,YAAAA,SAAK,CAAC,gBAAgB,QAAQ,KAAK,WAAW,CAAC;AACtE,IAAM,eAAN,cAA2B,MAAM;AAAA,EAC/B,YAAY,SAAS,YAAY,SAAS;AACxC,UAAM,OAAO;AACb,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,IAChD;AACA,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,QAAI;AACJ,QAAI,aAAa,WAAW,OAAO,QAAQ,YAAY,aAAa;AAClE,gBAAU,QAAQ;AAAA,IACpB;AACA,QAAI,cAAc,SAAS;AACzB,WAAK,WAAW,QAAQ;AACxB,gBAAU,QAAQ,SAAS;AAAA,IAC7B;AACA,UAAM,cAAc,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO;AACrD,QAAI,QAAQ,QAAQ,QAAQ,eAAe;AACzC,kBAAY,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,QAAQ,SAAS;AAAA,QAC/D,eAAe,QAAQ,QAAQ,QAAQ,cAAc;AAAA,UACnD;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AACA,gBAAY,MAAM,YAAY,IAAI,QAAQ,wBAAwB,0BAA0B,EAAE,QAAQ,uBAAuB,yBAAyB;AACtJ,SAAK,UAAU;AACf,WAAO,eAAe,MAAM,QAAQ;AAAA,MAClC,MAAM;AACJ;AAAA,UACE,IAAI;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,WAAO,eAAe,MAAM,WAAW;AAAA,MACrC,MAAM;AACJ;AAAA,UACE,IAAI;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO,WAAW,CAAC;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
-  "names": ["once"]
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-src/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-src/index.js
deleted file mode 100644
index 36f10b5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-src/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-import { Deprecation } from "deprecation";
-import once from "once";
-const logOnceCode = once((deprecation) => console.warn(deprecation));
-const logOnceHeaders = once((deprecation) => console.warn(deprecation));
-class RequestError extends Error {
-  constructor(message, statusCode, options) {
-    super(message);
-    if (Error.captureStackTrace) {
-      Error.captureStackTrace(this, this.constructor);
-    }
-    this.name = "HttpError";
-    this.status = statusCode;
-    let headers;
-    if ("headers" in options && typeof options.headers !== "undefined") {
-      headers = options.headers;
-    }
-    if ("response" in options) {
-      this.response = options.response;
-      headers = options.response.headers;
-    }
-    const requestCopy = Object.assign({}, options.request);
-    if (options.request.headers.authorization) {
-      requestCopy.headers = Object.assign({}, options.request.headers, {
-        authorization: options.request.headers.authorization.replace(
-          / .*$/,
-          " [REDACTED]"
-        )
-      });
-    }
-    requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
-    this.request = requestCopy;
-    Object.defineProperty(this, "code", {
-      get() {
-        logOnceCode(
-          new Deprecation(
-            "[@octokit/request-error] `error.code` is deprecated, use `error.status`."
-          )
-        );
-        return statusCode;
-      }
-    });
-    Object.defineProperty(this, "headers", {
-      get() {
-        logOnceHeaders(
-          new Deprecation(
-            "[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`."
-          )
-        );
-        return headers || {};
-      }
-    });
-  }
-}
-export {
-  RequestError
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-types/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-types/index.d.ts
deleted file mode 100644
index b91d08a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-types/index.d.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import type { RequestOptions, ResponseHeaders, OctokitResponse } from "@octokit/types";
-import type { RequestErrorOptions } from "./types";
-/**
- * Error with extra properties to help with debugging
- */
-export declare class RequestError extends Error {
-    name: "HttpError";
-    /**
-     * http status code
-     */
-    status: number;
-    /**
-     * http status code
-     *
-     * @deprecated `error.code` is deprecated in favor of `error.status`
-     */
-    code: number;
-    /**
-     * Request options that lead to the error.
-     */
-    request: RequestOptions;
-    /**
-     * error response headers
-     *
-     * @deprecated `error.headers` is deprecated in favor of `error.response.headers`
-     */
-    headers: ResponseHeaders;
-    /**
-     * Response object if a response was received
-     */
-    response?: OctokitResponse<unknown>;
-    constructor(message: string, statusCode: number, options: RequestErrorOptions);
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-types/types.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-types/types.d.ts
deleted file mode 100644
index 4d084aa..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-types/types.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import type { RequestOptions, ResponseHeaders, OctokitResponse } from "@octokit/types";
-export type RequestErrorOptions = {
-    /** @deprecated set `response` instead */
-    headers?: ResponseHeaders;
-    request: RequestOptions;
-} | {
-    response: OctokitResponse<unknown>;
-    request: RequestOptions;
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-web/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-web/index.js
deleted file mode 100644
index 8ddf132..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-web/index.js
+++ /dev/null
@@ -1,57 +0,0 @@
-// pkg/dist-src/index.js
-import { Deprecation } from "deprecation";
-import once from "once";
-var logOnceCode = once((deprecation) => console.warn(deprecation));
-var logOnceHeaders = once((deprecation) => console.warn(deprecation));
-var RequestError = class extends Error {
-  constructor(message, statusCode, options) {
-    super(message);
-    if (Error.captureStackTrace) {
-      Error.captureStackTrace(this, this.constructor);
-    }
-    this.name = "HttpError";
-    this.status = statusCode;
-    let headers;
-    if ("headers" in options && typeof options.headers !== "undefined") {
-      headers = options.headers;
-    }
-    if ("response" in options) {
-      this.response = options.response;
-      headers = options.response.headers;
-    }
-    const requestCopy = Object.assign({}, options.request);
-    if (options.request.headers.authorization) {
-      requestCopy.headers = Object.assign({}, options.request.headers, {
-        authorization: options.request.headers.authorization.replace(
-          / .*$/,
-          " [REDACTED]"
-        )
-      });
-    }
-    requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
-    this.request = requestCopy;
-    Object.defineProperty(this, "code", {
-      get() {
-        logOnceCode(
-          new Deprecation(
-            "[@octokit/request-error] `error.code` is deprecated, use `error.status`."
-          )
-        );
-        return statusCode;
-      }
-    });
-    Object.defineProperty(this, "headers", {
-      get() {
-        logOnceHeaders(
-          new Deprecation(
-            "[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`."
-          )
-        );
-        return headers || {};
-      }
-    });
-  }
-};
-export {
-  RequestError
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-web/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-web/index.js.map
deleted file mode 100644
index b6d41bf..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/dist-web/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/index.js"],
-  "sourcesContent": ["import { Deprecation } from \"deprecation\";\nimport once from \"once\";\nconst logOnceCode = once((deprecation) => console.warn(deprecation));\nconst logOnceHeaders = once((deprecation) => console.warn(deprecation));\nclass RequestError extends Error {\n  constructor(message, statusCode, options) {\n    super(message);\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor);\n    }\n    this.name = \"HttpError\";\n    this.status = statusCode;\n    let headers;\n    if (\"headers\" in options && typeof options.headers !== \"undefined\") {\n      headers = options.headers;\n    }\n    if (\"response\" in options) {\n      this.response = options.response;\n      headers = options.response.headers;\n    }\n    const requestCopy = Object.assign({}, options.request);\n    if (options.request.headers.authorization) {\n      requestCopy.headers = Object.assign({}, options.request.headers, {\n        authorization: options.request.headers.authorization.replace(\n          / .*$/,\n          \" [REDACTED]\"\n        )\n      });\n    }\n    requestCopy.url = requestCopy.url.replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\").replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n    this.request = requestCopy;\n    Object.defineProperty(this, \"code\", {\n      get() {\n        logOnceCode(\n          new Deprecation(\n            \"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"\n          )\n        );\n        return statusCode;\n      }\n    });\n    Object.defineProperty(this, \"headers\", {\n      get() {\n        logOnceHeaders(\n          new Deprecation(\n            \"[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.\"\n          )\n        );\n        return headers || {};\n      }\n    });\n  }\n}\nexport {\n  RequestError\n};\n"],
-  "mappings": ";AAAA,SAAS,mBAAmB;AAC5B,OAAO,UAAU;AACjB,IAAM,cAAc,KAAK,CAAC,gBAAgB,QAAQ,KAAK,WAAW,CAAC;AACnE,IAAM,iBAAiB,KAAK,CAAC,gBAAgB,QAAQ,KAAK,WAAW,CAAC;AACtE,IAAM,eAAN,cAA2B,MAAM;AAAA,EAC/B,YAAY,SAAS,YAAY,SAAS;AACxC,UAAM,OAAO;AACb,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,IAChD;AACA,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,QAAI;AACJ,QAAI,aAAa,WAAW,OAAO,QAAQ,YAAY,aAAa;AAClE,gBAAU,QAAQ;AAAA,IACpB;AACA,QAAI,cAAc,SAAS;AACzB,WAAK,WAAW,QAAQ;AACxB,gBAAU,QAAQ,SAAS;AAAA,IAC7B;AACA,UAAM,cAAc,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO;AACrD,QAAI,QAAQ,QAAQ,QAAQ,eAAe;AACzC,kBAAY,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,QAAQ,SAAS;AAAA,QAC/D,eAAe,QAAQ,QAAQ,QAAQ,cAAc;AAAA,UACnD;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AACA,gBAAY,MAAM,YAAY,IAAI,QAAQ,wBAAwB,0BAA0B,EAAE,QAAQ,uBAAuB,yBAAyB;AACtJ,SAAK,UAAU;AACf,WAAO,eAAe,MAAM,QAAQ;AAAA,MAClC,MAAM;AACJ;AAAA,UACE,IAAI;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,WAAO,eAAe,MAAM,WAAW;AAAA,MACrC,MAAM;AACJ;AAAA,UACE,IAAI;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO,WAAW,CAAC;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
-  "names": []
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/package.json b/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/package.json
deleted file mode 100644
index c5c6af8..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request-error/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-  "name": "@octokit/request-error",
-  "version": "5.0.1",
-  "publishConfig": {
-    "access": "public"
-  },
-  "description": "Error class for Octokit request errors",
-  "repository": "github:octokit/request-error.js",
-  "keywords": [
-    "octokit",
-    "github",
-    "api",
-    "error"
-  ],
-  "author": "Gregor Martynus (https://github.com/gr2m)",
-  "license": "MIT",
-  "dependencies": {
-    "@octokit/types": "^12.0.0",
-    "deprecation": "^2.0.0",
-    "once": "^1.4.0"
-  },
-  "devDependencies": {
-    "@octokit/tsconfig": "^2.0.0",
-    "@types/jest": "^29.0.0",
-    "@types/node": "^18.0.0",
-    "@types/once": "^1.4.0",
-    "esbuild": "^0.19.0",
-    "glob": "^10.2.6",
-    "jest": "^29.0.0",
-    "prettier": "3.0.3",
-    "ts-jest": "^29.0.0",
-    "typescript": "^5.0.0"
-  },
-  "engines": {
-    "node": ">= 18"
-  },
-  "files": [
-    "dist-*/**",
-    "bin/**"
-  ],
-  "main": "dist-node/index.js",
-  "browser": "dist-web/index.js",
-  "types": "dist-types/index.d.ts",
-  "module": "dist-src/index.js",
-  "sideEffects": false,
-  "unpkg": "dist-web/index.js"
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/LICENSE
deleted file mode 100644
index af5366d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright (c) 2018 Octokit contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/README.md b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/README.md
deleted file mode 100644
index ce321cf..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/README.md
+++ /dev/null
@@ -1,579 +0,0 @@
-# request.js
-
-> Send parameterized requests to GitHub’s APIs with sensible defaults in browsers and Node
-
-[![@latest](https://img.shields.io/npm/v/@octokit/request.svg)](https://www.npmjs.com/package/@octokit/request)
-[![Build Status](https://github.com/octokit/request.js/workflows/Test/badge.svg)](https://github.com/octokit/request.js/actions?query=workflow%3ATest+branch%3Amain)
-
-`@octokit/request` is a request library for browsers & node that makes it easier
-to interact with [GitHub’s REST API](https://developer.github.com/v3/) and
-[GitHub’s GraphQL API](https://developer.github.com/v4/guides/forming-calls/#the-graphql-endpoint).
-
-It uses [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) to parse
-the passed options and sends the request using [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). You can pass a custom `fetch` function using the `options.request.fetch` option, see below.
-
-<!-- update table of contents by running `npx markdown-toc README.md -i` -->
-
-<!-- toc -->
-
-- [request.js](#requestjs)
-  - [Features](#features)
-  - [Usage](#usage)
-    - [REST API example](#rest-api-example)
-    - [GraphQL example](#graphql-example)
-    - [Alternative: pass `method` \& `url` as part of options](#alternative-pass-method--url-as-part-of-options)
-  - [Authentication](#authentication)
-  - [request()](#request)
-  - [`request.defaults()`](#requestdefaults)
-  - [`request.endpoint`](#requestendpoint)
-  - [Special cases](#special-cases)
-    - [The `data` parameter – set request body directly](#the-data-parameter--set-request-body-directly)
-    - [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body)
-    - [Set a custom Agent to your requests](#set-a-custom-agent-to-your-requests)
-  - [LICENSE](#license)
-
-<!-- tocstop -->
-
-## Features
-
-🤩 1:1 mapping of REST API endpoint documentation, e.g. [Add labels to an issue](https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue) becomes
-
-```js
-request("POST /repos/{owner}/{repo}/issues/{number}/labels", {
-  mediaType: {
-    previews: ["symmetra"],
-  },
-  owner: "octokit",
-  repo: "request.js",
-  number: 1,
-  labels: ["🐛 bug"],
-});
-```
-
-👶 [Small bundle size](https://bundlephobia.com/result?p=@octokit/request@5.0.3) (\<4kb minified + gzipped)
-
-😎 [Authenticate](#authentication) with any of [GitHubs Authentication Strategies](https://github.com/octokit/auth.js).
-
-👍 Sensible defaults
-
-- `baseUrl`: `https://api.github.com`
-- `headers.accept`: `application/vnd.github.v3+json`
-- `headers['user-agent']`: `octokit-request.js/<current version> <OS information>`, e.g. `octokit-request.js/1.2.3 Node.js/10.15.0 (macOS Mojave; x64)`
-
-👌 Simple to test: mock requests by passing a custom fetch method.
-
-🧐 Simple to debug: Sets `error.request` to request options causing the error (with redacted credentials).
-
-## Usage
-
-<table>
-<tbody valign=top align=left>
-<tr><th>
-Browsers
-</th><td width=100%>
-Load <code>@octokit/request</code> directly from <a href="https://esm.sh">esm.sh</a>
-
-```html
-<script type="module">
-  import { request } from "https://esm.sh/@octokit/request";
-</script>
-```
-
-</td></tr>
-<tr><th>
-Node
-</th><td>
-
-Install with <code>npm install @octokit/request</code>
-
-```js
-const { request } = require("@octokit/request");
-// or: import { request } from "@octokit/request";
-```
-
-</td></tr>
-</tbody>
-</table>
-
-### REST API example
-
-```js
-// Following GitHub docs formatting:
-// https://developer.github.com/v3/repos/#list-organization-repositories
-const result = await request("GET /orgs/{org}/repos", {
-  headers: {
-    authorization: "token 0000000000000000000000000000000000000001",
-  },
-  org: "octokit",
-  type: "private",
-});
-
-console.log(`${result.data.length} repos found.`);
-```
-
-### GraphQL example
-
-For GraphQL request we recommend using [`@octokit/graphql`](https://github.com/octokit/graphql.js#readme)
-
-```js
-const result = await request("POST /graphql", {
-  headers: {
-    authorization: "token 0000000000000000000000000000000000000001",
-  },
-  query: `query ($login: String!) {
-    organization(login: $login) {
-      repositories(privacy: PRIVATE) {
-        totalCount
-      }
-    }
-  }`,
-  variables: {
-    login: "octokit",
-  },
-});
-```
-
-### Alternative: pass `method` & `url` as part of options
-
-Alternatively, pass in a method and a url
-
-```js
-const result = await request({
-  method: "GET",
-  url: "/orgs/{org}/repos",
-  headers: {
-    authorization: "token 0000000000000000000000000000000000000001",
-  },
-  org: "octokit",
-  type: "private",
-});
-```
-
-## Authentication
-
-The simplest way to authenticate a request is to set the `Authorization` header directly, e.g. to a [personal access token](https://github.com/settings/tokens/).
-
-```js
-const requestWithAuth = request.defaults({
-  headers: {
-    authorization: "token 0000000000000000000000000000000000000001",
-  },
-});
-const result = await requestWithAuth("GET /user");
-```
-
-For more complex authentication strategies such as GitHub Apps or Basic, we recommend the according authentication library exported by [`@octokit/auth`](https://github.com/octokit/auth.js).
-
-```js
-const { createAppAuth } = require("@octokit/auth-app");
-const auth = createAppAuth({
-  appId: process.env.APP_ID,
-  privateKey: process.env.PRIVATE_KEY,
-  installationId: 123,
-});
-const requestWithAuth = request.defaults({
-  request: {
-    hook: auth.hook,
-  },
-  mediaType: {
-    previews: ["machine-man"],
-  },
-});
-
-const { data: app } = await requestWithAuth("GET /app");
-const { data: app } = await requestWithAuth(
-  "POST /repos/{owner}/{repo}/issues",
-  {
-    owner: "octocat",
-    repo: "hello-world",
-    title: "Hello from the engine room",
-  },
-);
-```
-
-## request()
-
-`request(route, options)` or `request(options)`.
-
-**Options**
-
-<table>
-  <thead>
-    <tr>
-      <th align=left>
-        name
-      </th>
-      <th align=left>
-        type
-      </th>
-      <th align=left>
-        description
-      </th>
-    </tr>
-  </thead>
-  <tr>
-    <th align=left>
-      <code>route</code>
-    </th>
-    <td>
-      String
-    </td>
-    <td>
-      **Required**. If <code>route</code> is set it has to be a string consisting of the request method and URL, e.g. <code>GET /orgs/{org}</code>
-    </td>
-  </tr>
-  <tr>
-    <th align=left>
-      <code>options.baseUrl</code>
-    </th>
-    <td>
-      String
-    </td>
-    <td>
-      The base URL that <code>route</code> or <code>url</code> will be prefixed with, if they use relative paths. <em>Defaults to <code>https://api.github.com</code></em>.
-    </td>
-  </tr>
-    <th align=left>
-      <code>options.headers</code>
-    </th>
-    <td>
-      Object
-    </td>
-    <td>
-      Custom headers. Passed headers are merged with defaults:<br>
-      <em><code>headers['user-agent']</code> defaults to <code>octokit-rest.js/1.2.3</code> (where <code>1.2.3</code> is the released version)</em>.<br>
-      <em><code>headers['accept']</code> defaults to <code>application/vnd.github.v3+json</code>.<br> Use <code>options.mediaType.{format,previews}</code> to request API previews and custom media types.
-    </td>
-  </tr>
-  <tr>
-    <th align=left>
-      <code>options.method</code>
-    </th>
-    <td>
-      String
-    </td>
-    <td>
-      Any supported <a href="https://developer.github.com/v3/#http-verbs">http verb</a>, case insensitive. <em>Defaults to <code>Get</code></em>.
-    </td>
-  </tr>
-  <tr>
-    <th align=left>
-      <code>options.mediaType.format</code>
-    </th>
-    <td>
-      String
-    </td>
-    <td>
-      Media type param, such as `raw`, `html`, or `full`. See <a href="https://developer.github.com/v3/media/">Media Types</a>.
-    </td>
-  </tr>
-  <tr>
-    <th align=left>
-      <code>options.mediaType.previews</code>
-    </th>
-    <td>
-      Array of strings
-    </td>
-    <td>
-      Name of previews, such as `mercy`, `symmetra`, or `scarlet-witch`. See <a href="https://docs.github.com/graphql/overview/schema-previews">GraphQL Schema Previews</a>.
-      Note that these only apply to GraphQL requests and have no effect on REST routes.
-    </td>
-  </tr>
-  <tr>
-    <th align=left>
-      <code>options.url</code>
-    </th>
-    <td>
-      String
-    </td>
-    <td>
-      **Required**. A path or full URL which may contain <code>:variable</code> or <code>{variable}</code> placeholders,
-      e.g. <code>/orgs/{org}/repos</code>. The <code>url</code> is parsed using <a href="https://github.com/bramstein/url-template">url-template</a>.
-    </td>
-  </tr>
-  <tr>
-    <th align=left>
-      <code>options.data</code>
-    </th>
-    <td>
-      Any
-    </td>
-    <td>
-      Set request body directly instead of setting it to JSON based on additional parameters. See <a href="#data-parameter">"The `data` parameter"</a> below.
-    </td>
-  </tr>
-
-  <tr>
-    <th align=left>
-      <code>options.request.fetch</code>
-    </th>
-    <td>
-      Function
-    </td>
-    <td>
-     Custom replacement for <a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API">fetch</a>. Useful for testing or request hooks.
-    </td>
-  </tr>
-  <tr>
-    <th align=left>
-      <code>options.request.hook</code>
-    </th>
-    <td>
-      Function
-    </td>
-    <td>
-     Function with the signature <code>hook(request, endpointOptions)</code>, where <code>endpointOptions</code> are the parsed options as returned by <a href="https://github.com/octokit/endpoint.js#endpointmergeroute-options-or-endpointmergeoptions"><code>endpoint.merge()</code></a>, and <code>request</code> is <a href="https://github.com/octokit/request.js#request"><code>request()</code></a>. This option works great in conjuction with <a href="https://github.com/gr2m/before-after-hook">before-after-hook</a>.
-    </td>
-  </tr>
-  <tr>
-    <th align=left>
-      <a name="options-request-signal"></a><code>options.request.signal</code>
-    </th>
-    <td>
-      <a href="https://github.com/bitinn/node-fetch/tree/e996bdab73baf996cf2dbf25643c8fe2698c3249#request-cancellation-with-abortsignal">new AbortController().signal</a>
-    </td>
-    <td>
-      Use an <code>AbortController</code> instance to cancel a request. In node you can only cancel streamed requests.
-    </td>
-  </tr>
-    <th align=left>
-      <code>options.request.log</code>
-    </th>
-    <td>
-      <code>object</code>
-    </td>
-    <td>
-      Used for internal logging. Defaults to <a href="https://developer.mozilla.org/en-US/docs/Web/API/console"><code>console</code></a>.
-    </td>
-  </tr>
-  </tr>
-    <th align=left>
-      <code>options.request.parseSuccessResponseBody</code>
-    </th>
-    <td>
-      <code>boolean</code>
-    </td>
-    <td>
-      If set to <code>false</code> the returned `response` will be passed through from `fetch`. This is useful to stream response.body when downloading files from the GitHub API.
-    </td>
-  </tr>
-</table>
-
-All other options except `options.request.*` will be passed depending on the `method` and `url` options.
-
-1. If the option key is a placeholder in the `url`, it will be used as replacement. For example, if the passed options are `{url: '/orgs/{org}/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos`
-2. If the `method` is `GET` or `HEAD`, the option is passed as query parameter
-3. Otherwise the parameter is passed in the request body as JSON key.
-
-**Result**
-
-`request` returns a promise. If the request was successful, the promise resolves with an object containing 4 keys:
-
-<table>
-  <thead>
-    <tr>
-      <th align=left>
-        key
-      </th>
-      <th align=left>
-        type
-      </th>
-      <th align=left>
-        description
-      </th>
-    </tr>
-  </thead>
-  <tr>
-    <th align=left><code>status</code></th>
-    <td>Integer</td>
-    <td>Response status status</td>
-  </tr>
-  <tr>
-    <th align=left><code>url</code></th>
-    <td>String</td>
-    <td>URL of response. If a request results in redirects, this is the final URL. You can send a <code>HEAD</code> request to retrieve it without loading the full response body.</td>
-  </tr>
-  <tr>
-    <th align=left><code>headers</code></th>
-    <td>Object</td>
-    <td>All response headers</td>
-  </tr>
-  <tr>
-    <th align=left><code>data</code></th>
-    <td>Any</td>
-    <td>The response body as returned from server. If the response is JSON then it will be parsed into an object</td>
-  </tr>
-</table>
-
-If an error occurs, the promise is rejected with an `error` object containing 3 keys to help with debugging:
-
-- `error.status` The http response status code
-- `error.request` The request options such as `method`, `url` and `data`
-- `error.response` The http response object with `url`, `headers`, and `data`
-
-If the error is due to an `AbortSignal` being used, the resulting `AbortError` is bubbled up to the caller.
-
-## `request.defaults()`
-
-Override or set default options. Example:
-
-```js
-const myrequest = require("@octokit/request").defaults({
-  baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
-  headers: {
-    "user-agent": "myApp/1.2.3",
-    authorization: `token 0000000000000000000000000000000000000001`,
-  },
-  org: "my-project",
-  per_page: 100,
-});
-
-myrequest(`GET /orgs/{org}/repos`);
-```
-
-You can call `.defaults()` again on the returned method, the defaults will cascade.
-
-```js
-const myProjectRequest = request.defaults({
-  baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
-  headers: {
-    "user-agent": "myApp/1.2.3",
-  },
-  org: "my-project",
-});
-const myProjectRequestWithAuth = myProjectRequest.defaults({
-  headers: {
-    authorization: `token 0000000000000000000000000000000000000001`,
-  },
-});
-```
-
-`myProjectRequest` now defaults the `baseUrl`, `headers['user-agent']`,
-`org` and `headers['authorization']` on top of `headers['accept']` that is set
-by the global default.
-
-## `request.endpoint`
-
-See https://github.com/octokit/endpoint.js. Example
-
-```js
-const options = request.endpoint("GET /orgs/{org}/repos", {
-  org: "my-project",
-  type: "private",
-});
-
-// {
-//   method: 'GET',
-//   url: 'https://api.github.com/orgs/my-project/repos?type=private',
-//   headers: {
-//     accept: 'application/vnd.github.v3+json',
-//     authorization: 'token 0000000000000000000000000000000000000001',
-//     'user-agent': 'octokit/endpoint.js v1.2.3'
-//   }
-// }
-```
-
-All of the [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) API can be used:
-
-- [`octokitRequest.endpoint()`](#endpoint)
-- [`octokitRequest.endpoint.defaults()`](#endpointdefaults)
-- [`octokitRequest.endpoint.merge()`](#endpointdefaults)
-- [`octokitRequest.endpoint.parse()`](#endpointmerge)
-
-## Special cases
-
-<a name="data-parameter"></a>
-
-### The `data` parameter – set request body directly
-
-Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead the request body needs to be set directly. In these cases, set the `data` parameter.
-
-```js
-const response = await request("POST /markdown/raw", {
-  data: "Hello world github/linguist#1 **cool**, and #1!",
-  headers: {
-    accept: "text/html;charset=utf-8",
-    "content-type": "text/plain",
-  },
-});
-
-// Request is sent as
-//
-//     {
-//       method: 'post',
-//       url: 'https://api.github.com/markdown/raw',
-//       headers: {
-//         accept: 'text/html;charset=utf-8',
-//         'content-type': 'text/plain',
-//         'user-agent': userAgent
-//       },
-//       body: 'Hello world github/linguist#1 **cool**, and #1!'
-//     }
-//
-// not as
-//
-//     {
-//       ...
-//       body: '{"data": "Hello world github/linguist#1 **cool**, and #1!"}'
-//     }
-```
-
-### Set parameters for both the URL/query and the request body
-
-There are API endpoints that accept both query parameters as well as a body. In that case you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570).
-
-Example
-
-```js
-request(
-  "POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}",
-  {
-    name: "example.zip",
-    label: "short description",
-    headers: {
-      "content-type": "text/plain",
-      "content-length": 14,
-      authorization: `token 0000000000000000000000000000000000000001`,
-    },
-    data: "Hello, world!",
-  },
-);
-```
-
-### Set a custom Agent to your requests
-
-The way to pass a custom `Agent` to requests is by creating a custom `fetch` function and pass it as `options.request.fetch`. A good example can be [undici's `fetch` implementation](https://undici.nodejs.org/#/?id=undicifetchinput-init-promise).
-
-Example ([See example in CodeSandbox](https://codesandbox.io/p/sandbox/nifty-stitch-wdlwlf))
-
-```js
-import { request } from "@octokit/request";
-import { fetch as undiciFetch, Agent } from "undici";
-
-/** @type {typeof import("undici").fetch} */
-const myFetch = (url, options) => {
-  return undiciFetch(url, {
-    ...options,
-    dispatcher: new Agent({
-      keepAliveTimeout: 10,
-      keepAliveMaxTimeout: 10,
-    }),
-  });
-};
-
-const { data } = await request("GET /users/{username}", {
-  username: "octocat",
-  headers: {
-    "X-GitHub-Api-Version": "2022-11-28",
-  },
-  options: {
-    request: {
-      fetch: myFetch,
-    },
-  },
-});
-```
-
-## LICENSE
-
-[MIT](LICENSE)
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-node/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-node/index.js
deleted file mode 100644
index e322fea..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-node/index.js
+++ /dev/null
@@ -1,217 +0,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
-  if (from && typeof from === "object" || typeof from === "function") {
-    for (let key of __getOwnPropNames(from))
-      if (!__hasOwnProp.call(to, key) && key !== except)
-        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
-  }
-  return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
-  request: () => request
-});
-module.exports = __toCommonJS(dist_src_exports);
-var import_endpoint = require("@octokit/endpoint");
-var import_universal_user_agent = require("universal-user-agent");
-
-// pkg/dist-src/version.js
-var VERSION = "8.1.6";
-
-// pkg/dist-src/is-plain-object.js
-function isPlainObject(value) {
-  if (typeof value !== "object" || value === null)
-    return false;
-  if (Object.prototype.toString.call(value) !== "[object Object]")
-    return false;
-  const proto = Object.getPrototypeOf(value);
-  if (proto === null)
-    return true;
-  const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
-  return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
-}
-
-// pkg/dist-src/fetch-wrapper.js
-var import_request_error = require("@octokit/request-error");
-
-// pkg/dist-src/get-buffer-response.js
-function getBufferResponse(response) {
-  return response.arrayBuffer();
-}
-
-// pkg/dist-src/fetch-wrapper.js
-function fetchWrapper(requestOptions) {
-  var _a, _b, _c;
-  const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;
-  const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false;
-  if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
-    requestOptions.body = JSON.stringify(requestOptions.body);
-  }
-  let headers = {};
-  let status;
-  let url;
-  let { fetch } = globalThis;
-  if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) {
-    fetch = requestOptions.request.fetch;
-  }
-  if (!fetch) {
-    throw new Error(
-      "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing"
-    );
-  }
-  return fetch(requestOptions.url, {
-    method: requestOptions.method,
-    body: requestOptions.body,
-    headers: requestOptions.headers,
-    signal: (_c = requestOptions.request) == null ? void 0 : _c.signal,
-    // duplex must be set if request.body is ReadableStream or Async Iterables.
-    // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.
-    ...requestOptions.body && { duplex: "half" }
-  }).then(async (response) => {
-    url = response.url;
-    status = response.status;
-    for (const keyAndValue of response.headers) {
-      headers[keyAndValue[0]] = keyAndValue[1];
-    }
-    if ("deprecation" in headers) {
-      const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/);
-      const deprecationLink = matches && matches.pop();
-      log.warn(
-        `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`
-      );
-    }
-    if (status === 204 || status === 205) {
-      return;
-    }
-    if (requestOptions.method === "HEAD") {
-      if (status < 400) {
-        return;
-      }
-      throw new import_request_error.RequestError(response.statusText, status, {
-        response: {
-          url,
-          status,
-          headers,
-          data: void 0
-        },
-        request: requestOptions
-      });
-    }
-    if (status === 304) {
-      throw new import_request_error.RequestError("Not modified", status, {
-        response: {
-          url,
-          status,
-          headers,
-          data: await getResponseData(response)
-        },
-        request: requestOptions
-      });
-    }
-    if (status >= 400) {
-      const data = await getResponseData(response);
-      const error = new import_request_error.RequestError(toErrorMessage(data), status, {
-        response: {
-          url,
-          status,
-          headers,
-          data
-        },
-        request: requestOptions
-      });
-      throw error;
-    }
-    return parseSuccessResponseBody ? await getResponseData(response) : response.body;
-  }).then((data) => {
-    return {
-      status,
-      url,
-      headers,
-      data
-    };
-  }).catch((error) => {
-    if (error instanceof import_request_error.RequestError)
-      throw error;
-    else if (error.name === "AbortError")
-      throw error;
-    let message = error.message;
-    if (error.name === "TypeError" && "cause" in error) {
-      if (error.cause instanceof Error) {
-        message = error.cause.message;
-      } else if (typeof error.cause === "string") {
-        message = error.cause;
-      }
-    }
-    throw new import_request_error.RequestError(message, 500, {
-      request: requestOptions
-    });
-  });
-}
-async function getResponseData(response) {
-  const contentType = response.headers.get("content-type");
-  if (/application\/json/.test(contentType)) {
-    return response.json().catch(() => response.text()).catch(() => "");
-  }
-  if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
-    return response.text();
-  }
-  return getBufferResponse(response);
-}
-function toErrorMessage(data) {
-  if (typeof data === "string")
-    return data;
-  if ("message" in data) {
-    if (Array.isArray(data.errors)) {
-      return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`;
-    }
-    return data.message;
-  }
-  return `Unknown error: ${JSON.stringify(data)}`;
-}
-
-// pkg/dist-src/with-defaults.js
-function withDefaults(oldEndpoint, newDefaults) {
-  const endpoint2 = oldEndpoint.defaults(newDefaults);
-  const newApi = function(route, parameters) {
-    const endpointOptions = endpoint2.merge(route, parameters);
-    if (!endpointOptions.request || !endpointOptions.request.hook) {
-      return fetchWrapper(endpoint2.parse(endpointOptions));
-    }
-    const request2 = (route2, parameters2) => {
-      return fetchWrapper(
-        endpoint2.parse(endpoint2.merge(route2, parameters2))
-      );
-    };
-    Object.assign(request2, {
-      endpoint: endpoint2,
-      defaults: withDefaults.bind(null, endpoint2)
-    });
-    return endpointOptions.request.hook(request2, endpointOptions);
-  };
-  return Object.assign(newApi, {
-    endpoint: endpoint2,
-    defaults: withDefaults.bind(null, endpoint2)
-  });
-}
-
-// pkg/dist-src/index.js
-var request = withDefaults(import_endpoint.endpoint, {
-  headers: {
-    "user-agent": `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
-  }
-});
-// Annotate the CommonJS export names for ESM import in node:
-0 && (module.exports = {
-  request
-});
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-node/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-node/index.js.map
deleted file mode 100644
index b3f01d5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-node/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/index.js", "../dist-src/version.js", "../dist-src/is-plain-object.js", "../dist-src/fetch-wrapper.js", "../dist-src/get-buffer-response.js", "../dist-src/with-defaults.js"],
-  "sourcesContent": ["import { endpoint } from \"@octokit/endpoint\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport withDefaults from \"./with-defaults\";\nconst request = withDefaults(endpoint, {\n  headers: {\n    \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`\n  }\n});\nexport {\n  request\n};\n", "const VERSION = \"8.1.6\";\nexport {\n  VERSION\n};\n", "function isPlainObject(value) {\n  if (typeof value !== \"object\" || value === null)\n    return false;\n  if (Object.prototype.toString.call(value) !== \"[object Object]\")\n    return false;\n  const proto = Object.getPrototypeOf(value);\n  if (proto === null)\n    return true;\n  const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n  return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\nexport {\n  isPlainObject\n};\n", "import { isPlainObject } from \"./is-plain-object\";\nimport { RequestError } from \"@octokit/request-error\";\nimport getBuffer from \"./get-buffer-response\";\nfunction fetchWrapper(requestOptions) {\n  const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;\n  const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;\n  if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {\n    requestOptions.body = JSON.stringify(requestOptions.body);\n  }\n  let headers = {};\n  let status;\n  let url;\n  let { fetch } = globalThis;\n  if (requestOptions.request?.fetch) {\n    fetch = requestOptions.request.fetch;\n  }\n  if (!fetch) {\n    throw new Error(\n      \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n    );\n  }\n  return fetch(requestOptions.url, {\n    method: requestOptions.method,\n    body: requestOptions.body,\n    headers: requestOptions.headers,\n    signal: requestOptions.request?.signal,\n    // duplex must be set if request.body is ReadableStream or Async Iterables.\n    // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n    ...requestOptions.body && { duplex: \"half\" }\n  }).then(async (response) => {\n    url = response.url;\n    status = response.status;\n    for (const keyAndValue of response.headers) {\n      headers[keyAndValue[0]] = keyAndValue[1];\n    }\n    if (\"deprecation\" in headers) {\n      const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n      const deprecationLink = matches && matches.pop();\n      log.warn(\n        `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n      );\n    }\n    if (status === 204 || status === 205) {\n      return;\n    }\n    if (requestOptions.method === \"HEAD\") {\n      if (status < 400) {\n        return;\n      }\n      throw new RequestError(response.statusText, status, {\n        response: {\n          url,\n          status,\n          headers,\n          data: void 0\n        },\n        request: requestOptions\n      });\n    }\n    if (status === 304) {\n      throw new RequestError(\"Not modified\", status, {\n        response: {\n          url,\n          status,\n          headers,\n          data: await getResponseData(response)\n        },\n        request: requestOptions\n      });\n    }\n    if (status >= 400) {\n      const data = await getResponseData(response);\n      const error = new RequestError(toErrorMessage(data), status, {\n        response: {\n          url,\n          status,\n          headers,\n          data\n        },\n        request: requestOptions\n      });\n      throw error;\n    }\n    return parseSuccessResponseBody ? await getResponseData(response) : response.body;\n  }).then((data) => {\n    return {\n      status,\n      url,\n      headers,\n      data\n    };\n  }).catch((error) => {\n    if (error instanceof RequestError)\n      throw error;\n    else if (error.name === \"AbortError\")\n      throw error;\n    let message = error.message;\n    if (error.name === \"TypeError\" && \"cause\" in error) {\n      if (error.cause instanceof Error) {\n        message = error.cause.message;\n      } else if (typeof error.cause === \"string\") {\n        message = error.cause;\n      }\n    }\n    throw new RequestError(message, 500, {\n      request: requestOptions\n    });\n  });\n}\nasync function getResponseData(response) {\n  const contentType = response.headers.get(\"content-type\");\n  if (/application\\/json/.test(contentType)) {\n    return response.json().catch(() => response.text()).catch(() => \"\");\n  }\n  if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n    return response.text();\n  }\n  return getBuffer(response);\n}\nfunction toErrorMessage(data) {\n  if (typeof data === \"string\")\n    return data;\n  if (\"message\" in data) {\n    if (Array.isArray(data.errors)) {\n      return `${data.message}: ${data.errors.map(JSON.stringify).join(\", \")}`;\n    }\n    return data.message;\n  }\n  return `Unknown error: ${JSON.stringify(data)}`;\n}\nexport {\n  fetchWrapper as default\n};\n", "function getBufferResponse(response) {\n  return response.arrayBuffer();\n}\nexport {\n  getBufferResponse as default\n};\n", "import fetchWrapper from \"./fetch-wrapper\";\nfunction withDefaults(oldEndpoint, newDefaults) {\n  const endpoint = oldEndpoint.defaults(newDefaults);\n  const newApi = function(route, parameters) {\n    const endpointOptions = endpoint.merge(route, parameters);\n    if (!endpointOptions.request || !endpointOptions.request.hook) {\n      return fetchWrapper(endpoint.parse(endpointOptions));\n    }\n    const request = (route2, parameters2) => {\n      return fetchWrapper(\n        endpoint.parse(endpoint.merge(route2, parameters2))\n      );\n    };\n    Object.assign(request, {\n      endpoint,\n      defaults: withDefaults.bind(null, endpoint)\n    });\n    return endpointOptions.request.hook(request, endpointOptions);\n  };\n  return Object.assign(newApi, {\n    endpoint,\n    defaults: withDefaults.bind(null, endpoint)\n  });\n}\nexport {\n  withDefaults as default\n};\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAyB;AACzB,kCAA6B;;;ACD7B,IAAM,UAAU;;;ACAhB,SAAS,cAAc,OAAO;AAC5B,MAAI,OAAO,UAAU,YAAY,UAAU;AACzC,WAAO;AACT,MAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAC5C,WAAO;AACT,QAAM,QAAQ,OAAO,eAAe,KAAK;AACzC,MAAI,UAAU;AACZ,WAAO;AACT,QAAM,OAAO,OAAO,UAAU,eAAe,KAAK,OAAO,aAAa,KAAK,MAAM;AACjF,SAAO,OAAO,SAAS,cAAc,gBAAgB,QAAQ,SAAS,UAAU,KAAK,IAAI,MAAM,SAAS,UAAU,KAAK,KAAK;AAC9H;;;ACTA,2BAA6B;;;ACD7B,SAAS,kBAAkB,UAAU;AACnC,SAAO,SAAS,YAAY;AAC9B;;;ADCA,SAAS,aAAa,gBAAgB;AAHtC;AAIE,QAAM,MAAM,eAAe,WAAW,eAAe,QAAQ,MAAM,eAAe,QAAQ,MAAM;AAChG,QAAM,6BAA2B,oBAAe,YAAf,mBAAwB,8BAA6B;AACtF,MAAI,cAAc,eAAe,IAAI,KAAK,MAAM,QAAQ,eAAe,IAAI,GAAG;AAC5E,mBAAe,OAAO,KAAK,UAAU,eAAe,IAAI;AAAA,EAC1D;AACA,MAAI,UAAU,CAAC;AACf,MAAI;AACJ,MAAI;AACJ,MAAI,EAAE,MAAM,IAAI;AAChB,OAAI,oBAAe,YAAf,mBAAwB,OAAO;AACjC,YAAQ,eAAe,QAAQ;AAAA,EACjC;AACA,MAAI,CAAC,OAAO;AACV,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO,MAAM,eAAe,KAAK;AAAA,IAC/B,QAAQ,eAAe;AAAA,IACvB,MAAM,eAAe;AAAA,IACrB,SAAS,eAAe;AAAA,IACxB,SAAQ,oBAAe,YAAf,mBAAwB;AAAA;AAAA;AAAA,IAGhC,GAAG,eAAe,QAAQ,EAAE,QAAQ,OAAO;AAAA,EAC7C,CAAC,EAAE,KAAK,OAAO,aAAa;AAC1B,UAAM,SAAS;AACf,aAAS,SAAS;AAClB,eAAW,eAAe,SAAS,SAAS;AAC1C,cAAQ,YAAY,CAAC,CAAC,IAAI,YAAY,CAAC;AAAA,IACzC;AACA,QAAI,iBAAiB,SAAS;AAC5B,YAAM,UAAU,QAAQ,QAAQ,QAAQ,KAAK,MAAM,8BAA8B;AACjF,YAAM,kBAAkB,WAAW,QAAQ,IAAI;AAC/C,UAAI;AAAA,QACF,uBAAuB,eAAe,MAAM,IAAI,eAAe,GAAG,qDAAqD,QAAQ,MAAM,GAAG,kBAAkB,SAAS,eAAe,KAAK,EAAE;AAAA,MAC3L;AAAA,IACF;AACA,QAAI,WAAW,OAAO,WAAW,KAAK;AACpC;AAAA,IACF;AACA,QAAI,eAAe,WAAW,QAAQ;AACpC,UAAI,SAAS,KAAK;AAChB;AAAA,MACF;AACA,YAAM,IAAI,kCAAa,SAAS,YAAY,QAAQ;AAAA,QAClD,UAAU;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM;AAAA,QACR;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AACA,QAAI,WAAW,KAAK;AAClB,YAAM,IAAI,kCAAa,gBAAgB,QAAQ;AAAA,QAC7C,UAAU;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM,MAAM,gBAAgB,QAAQ;AAAA,QACtC;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AACA,QAAI,UAAU,KAAK;AACjB,YAAM,OAAO,MAAM,gBAAgB,QAAQ;AAC3C,YAAM,QAAQ,IAAI,kCAAa,eAAe,IAAI,GAAG,QAAQ;AAAA,QAC3D,UAAU;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AACD,YAAM;AAAA,IACR;AACA,WAAO,2BAA2B,MAAM,gBAAgB,QAAQ,IAAI,SAAS;AAAA,EAC/E,CAAC,EAAE,KAAK,CAAC,SAAS;AAChB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC,EAAE,MAAM,CAAC,UAAU;AAClB,QAAI,iBAAiB;AACnB,YAAM;AAAA,aACC,MAAM,SAAS;AACtB,YAAM;AACR,QAAI,UAAU,MAAM;AACpB,QAAI,MAAM,SAAS,eAAe,WAAW,OAAO;AAClD,UAAI,MAAM,iBAAiB,OAAO;AAChC,kBAAU,MAAM,MAAM;AAAA,MACxB,WAAW,OAAO,MAAM,UAAU,UAAU;AAC1C,kBAAU,MAAM;AAAA,MAClB;AAAA,IACF;AACA,UAAM,IAAI,kCAAa,SAAS,KAAK;AAAA,MACnC,SAAS;AAAA,IACX,CAAC;AAAA,EACH,CAAC;AACH;AACA,eAAe,gBAAgB,UAAU;AACvC,QAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,MAAI,oBAAoB,KAAK,WAAW,GAAG;AACzC,WAAO,SAAS,KAAK,EAAE,MAAM,MAAM,SAAS,KAAK,CAAC,EAAE,MAAM,MAAM,EAAE;AAAA,EACpE;AACA,MAAI,CAAC,eAAe,yBAAyB,KAAK,WAAW,GAAG;AAC9D,WAAO,SAAS,KAAK;AAAA,EACvB;AACA,SAAO,kBAAU,QAAQ;AAC3B;AACA,SAAS,eAAe,MAAM;AAC5B,MAAI,OAAO,SAAS;AAClB,WAAO;AACT,MAAI,aAAa,MAAM;AACrB,QAAI,MAAM,QAAQ,KAAK,MAAM,GAAG;AAC9B,aAAO,GAAG,KAAK,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,SAAS,EAAE,KAAK,IAAI,CAAC;AAAA,IACvE;AACA,WAAO,KAAK;AAAA,EACd;AACA,SAAO,kBAAkB,KAAK,UAAU,IAAI,CAAC;AAC/C;;;AEhIA,SAAS,aAAa,aAAa,aAAa;AAC9C,QAAMA,YAAW,YAAY,SAAS,WAAW;AACjD,QAAM,SAAS,SAAS,OAAO,YAAY;AACzC,UAAM,kBAAkBA,UAAS,MAAM,OAAO,UAAU;AACxD,QAAI,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,QAAQ,MAAM;AAC7D,aAAO,aAAaA,UAAS,MAAM,eAAe,CAAC;AAAA,IACrD;AACA,UAAMC,WAAU,CAAC,QAAQ,gBAAgB;AACvC,aAAO;AAAA,QACLD,UAAS,MAAMA,UAAS,MAAM,QAAQ,WAAW,CAAC;AAAA,MACpD;AAAA,IACF;AACA,WAAO,OAAOC,UAAS;AAAA,MACrB,UAAAD;AAAA,MACA,UAAU,aAAa,KAAK,MAAMA,SAAQ;AAAA,IAC5C,CAAC;AACD,WAAO,gBAAgB,QAAQ,KAAKC,UAAS,eAAe;AAAA,EAC9D;AACA,SAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B,UAAAD;AAAA,IACA,UAAU,aAAa,KAAK,MAAMA,SAAQ;AAAA,EAC5C,CAAC;AACH;;;ALnBA,IAAM,UAAU,aAAa,0BAAU;AAAA,EACrC,SAAS;AAAA,IACP,cAAc,sBAAsB,OAAO,QAAI,0CAAa,CAAC;AAAA,EAC/D;AACF,CAAC;",
-  "names": ["endpoint", "request"]
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/fetch-wrapper.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/fetch-wrapper.js
deleted file mode 100644
index d632122..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/fetch-wrapper.js
+++ /dev/null
@@ -1,133 +0,0 @@
-import { isPlainObject } from "./is-plain-object";
-import { RequestError } from "@octokit/request-error";
-import getBuffer from "./get-buffer-response";
-function fetchWrapper(requestOptions) {
-  const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;
-  const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;
-  if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
-    requestOptions.body = JSON.stringify(requestOptions.body);
-  }
-  let headers = {};
-  let status;
-  let url;
-  let { fetch } = globalThis;
-  if (requestOptions.request?.fetch) {
-    fetch = requestOptions.request.fetch;
-  }
-  if (!fetch) {
-    throw new Error(
-      "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing"
-    );
-  }
-  return fetch(requestOptions.url, {
-    method: requestOptions.method,
-    body: requestOptions.body,
-    headers: requestOptions.headers,
-    signal: requestOptions.request?.signal,
-    // duplex must be set if request.body is ReadableStream or Async Iterables.
-    // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.
-    ...requestOptions.body && { duplex: "half" }
-  }).then(async (response) => {
-    url = response.url;
-    status = response.status;
-    for (const keyAndValue of response.headers) {
-      headers[keyAndValue[0]] = keyAndValue[1];
-    }
-    if ("deprecation" in headers) {
-      const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/);
-      const deprecationLink = matches && matches.pop();
-      log.warn(
-        `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`
-      );
-    }
-    if (status === 204 || status === 205) {
-      return;
-    }
-    if (requestOptions.method === "HEAD") {
-      if (status < 400) {
-        return;
-      }
-      throw new RequestError(response.statusText, status, {
-        response: {
-          url,
-          status,
-          headers,
-          data: void 0
-        },
-        request: requestOptions
-      });
-    }
-    if (status === 304) {
-      throw new RequestError("Not modified", status, {
-        response: {
-          url,
-          status,
-          headers,
-          data: await getResponseData(response)
-        },
-        request: requestOptions
-      });
-    }
-    if (status >= 400) {
-      const data = await getResponseData(response);
-      const error = new RequestError(toErrorMessage(data), status, {
-        response: {
-          url,
-          status,
-          headers,
-          data
-        },
-        request: requestOptions
-      });
-      throw error;
-    }
-    return parseSuccessResponseBody ? await getResponseData(response) : response.body;
-  }).then((data) => {
-    return {
-      status,
-      url,
-      headers,
-      data
-    };
-  }).catch((error) => {
-    if (error instanceof RequestError)
-      throw error;
-    else if (error.name === "AbortError")
-      throw error;
-    let message = error.message;
-    if (error.name === "TypeError" && "cause" in error) {
-      if (error.cause instanceof Error) {
-        message = error.cause.message;
-      } else if (typeof error.cause === "string") {
-        message = error.cause;
-      }
-    }
-    throw new RequestError(message, 500, {
-      request: requestOptions
-    });
-  });
-}
-async function getResponseData(response) {
-  const contentType = response.headers.get("content-type");
-  if (/application\/json/.test(contentType)) {
-    return response.json().catch(() => response.text()).catch(() => "");
-  }
-  if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
-    return response.text();
-  }
-  return getBuffer(response);
-}
-function toErrorMessage(data) {
-  if (typeof data === "string")
-    return data;
-  if ("message" in data) {
-    if (Array.isArray(data.errors)) {
-      return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`;
-    }
-    return data.message;
-  }
-  return `Unknown error: ${JSON.stringify(data)}`;
-}
-export {
-  fetchWrapper as default
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/get-buffer-response.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/get-buffer-response.js
deleted file mode 100644
index 792c895..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/get-buffer-response.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function getBufferResponse(response) {
-  return response.arrayBuffer();
-}
-export {
-  getBufferResponse as default
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/index.js
deleted file mode 100644
index 1b3e12a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { endpoint } from "@octokit/endpoint";
-import { getUserAgent } from "universal-user-agent";
-import { VERSION } from "./version";
-import withDefaults from "./with-defaults";
-const request = withDefaults(endpoint, {
-  headers: {
-    "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`
-  }
-});
-export {
-  request
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/is-plain-object.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/is-plain-object.js
deleted file mode 100644
index 44b5eb2..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/is-plain-object.js
+++ /dev/null
@@ -1,14 +0,0 @@
-function isPlainObject(value) {
-  if (typeof value !== "object" || value === null)
-    return false;
-  if (Object.prototype.toString.call(value) !== "[object Object]")
-    return false;
-  const proto = Object.getPrototypeOf(value);
-  if (proto === null)
-    return true;
-  const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
-  return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
-}
-export {
-  isPlainObject
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/version.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/version.js
deleted file mode 100644
index 91c45b0..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/version.js
+++ /dev/null
@@ -1,4 +0,0 @@
-const VERSION = "8.1.6";
-export {
-  VERSION
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/with-defaults.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/with-defaults.js
deleted file mode 100644
index 0ee34b5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-src/with-defaults.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import fetchWrapper from "./fetch-wrapper";
-function withDefaults(oldEndpoint, newDefaults) {
-  const endpoint = oldEndpoint.defaults(newDefaults);
-  const newApi = function(route, parameters) {
-    const endpointOptions = endpoint.merge(route, parameters);
-    if (!endpointOptions.request || !endpointOptions.request.hook) {
-      return fetchWrapper(endpoint.parse(endpointOptions));
-    }
-    const request = (route2, parameters2) => {
-      return fetchWrapper(
-        endpoint.parse(endpoint.merge(route2, parameters2))
-      );
-    };
-    Object.assign(request, {
-      endpoint,
-      defaults: withDefaults.bind(null, endpoint)
-    });
-    return endpointOptions.request.hook(request, endpointOptions);
-  };
-  return Object.assign(newApi, {
-    endpoint,
-    defaults: withDefaults.bind(null, endpoint)
-  });
-}
-export {
-  withDefaults as default
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts
deleted file mode 100644
index eaa77c4..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import type { EndpointInterface } from "@octokit/types";
-export default function fetchWrapper(requestOptions: ReturnType<EndpointInterface>): Promise<{
-    status: number;
-    url: string;
-    headers: {
-        [header: string]: string;
-    };
-    data: any;
-}>;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts
deleted file mode 100644
index 26f1852..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default function getBufferResponse(response: Response): Promise<ArrayBuffer>;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/index.d.ts
deleted file mode 100644
index 1030809..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare const request: import("@octokit/types").RequestInterface<object>;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/is-plain-object.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/is-plain-object.d.ts
deleted file mode 100644
index 004fa4b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/is-plain-object.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare function isPlainObject(value: unknown): value is Object;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/version.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/version.d.ts
deleted file mode 100644
index f27d04a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/version.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare const VERSION = "8.1.6";
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/with-defaults.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/with-defaults.d.ts
deleted file mode 100644
index 4300682..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-types/with-defaults.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import type { EndpointInterface, RequestInterface, RequestParameters } from "@octokit/types";
-export default function withDefaults(oldEndpoint: EndpointInterface, newDefaults: RequestParameters): RequestInterface;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-web/index.js b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-web/index.js
deleted file mode 100644
index cbc897d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-web/index.js
+++ /dev/null
@@ -1,191 +0,0 @@
-// pkg/dist-src/index.js
-import { endpoint } from "@octokit/endpoint";
-import { getUserAgent } from "universal-user-agent";
-
-// pkg/dist-src/version.js
-var VERSION = "8.1.6";
-
-// pkg/dist-src/is-plain-object.js
-function isPlainObject(value) {
-  if (typeof value !== "object" || value === null)
-    return false;
-  if (Object.prototype.toString.call(value) !== "[object Object]")
-    return false;
-  const proto = Object.getPrototypeOf(value);
-  if (proto === null)
-    return true;
-  const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
-  return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
-}
-
-// pkg/dist-src/fetch-wrapper.js
-import { RequestError } from "@octokit/request-error";
-
-// pkg/dist-src/get-buffer-response.js
-function getBufferResponse(response) {
-  return response.arrayBuffer();
-}
-
-// pkg/dist-src/fetch-wrapper.js
-function fetchWrapper(requestOptions) {
-  const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;
-  const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;
-  if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
-    requestOptions.body = JSON.stringify(requestOptions.body);
-  }
-  let headers = {};
-  let status;
-  let url;
-  let { fetch } = globalThis;
-  if (requestOptions.request?.fetch) {
-    fetch = requestOptions.request.fetch;
-  }
-  if (!fetch) {
-    throw new Error(
-      "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing"
-    );
-  }
-  return fetch(requestOptions.url, {
-    method: requestOptions.method,
-    body: requestOptions.body,
-    headers: requestOptions.headers,
-    signal: requestOptions.request?.signal,
-    // duplex must be set if request.body is ReadableStream or Async Iterables.
-    // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.
-    ...requestOptions.body && { duplex: "half" }
-  }).then(async (response) => {
-    url = response.url;
-    status = response.status;
-    for (const keyAndValue of response.headers) {
-      headers[keyAndValue[0]] = keyAndValue[1];
-    }
-    if ("deprecation" in headers) {
-      const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/);
-      const deprecationLink = matches && matches.pop();
-      log.warn(
-        `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`
-      );
-    }
-    if (status === 204 || status === 205) {
-      return;
-    }
-    if (requestOptions.method === "HEAD") {
-      if (status < 400) {
-        return;
-      }
-      throw new RequestError(response.statusText, status, {
-        response: {
-          url,
-          status,
-          headers,
-          data: void 0
-        },
-        request: requestOptions
-      });
-    }
-    if (status === 304) {
-      throw new RequestError("Not modified", status, {
-        response: {
-          url,
-          status,
-          headers,
-          data: await getResponseData(response)
-        },
-        request: requestOptions
-      });
-    }
-    if (status >= 400) {
-      const data = await getResponseData(response);
-      const error = new RequestError(toErrorMessage(data), status, {
-        response: {
-          url,
-          status,
-          headers,
-          data
-        },
-        request: requestOptions
-      });
-      throw error;
-    }
-    return parseSuccessResponseBody ? await getResponseData(response) : response.body;
-  }).then((data) => {
-    return {
-      status,
-      url,
-      headers,
-      data
-    };
-  }).catch((error) => {
-    if (error instanceof RequestError)
-      throw error;
-    else if (error.name === "AbortError")
-      throw error;
-    let message = error.message;
-    if (error.name === "TypeError" && "cause" in error) {
-      if (error.cause instanceof Error) {
-        message = error.cause.message;
-      } else if (typeof error.cause === "string") {
-        message = error.cause;
-      }
-    }
-    throw new RequestError(message, 500, {
-      request: requestOptions
-    });
-  });
-}
-async function getResponseData(response) {
-  const contentType = response.headers.get("content-type");
-  if (/application\/json/.test(contentType)) {
-    return response.json().catch(() => response.text()).catch(() => "");
-  }
-  if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
-    return response.text();
-  }
-  return getBufferResponse(response);
-}
-function toErrorMessage(data) {
-  if (typeof data === "string")
-    return data;
-  if ("message" in data) {
-    if (Array.isArray(data.errors)) {
-      return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`;
-    }
-    return data.message;
-  }
-  return `Unknown error: ${JSON.stringify(data)}`;
-}
-
-// pkg/dist-src/with-defaults.js
-function withDefaults(oldEndpoint, newDefaults) {
-  const endpoint2 = oldEndpoint.defaults(newDefaults);
-  const newApi = function(route, parameters) {
-    const endpointOptions = endpoint2.merge(route, parameters);
-    if (!endpointOptions.request || !endpointOptions.request.hook) {
-      return fetchWrapper(endpoint2.parse(endpointOptions));
-    }
-    const request2 = (route2, parameters2) => {
-      return fetchWrapper(
-        endpoint2.parse(endpoint2.merge(route2, parameters2))
-      );
-    };
-    Object.assign(request2, {
-      endpoint: endpoint2,
-      defaults: withDefaults.bind(null, endpoint2)
-    });
-    return endpointOptions.request.hook(request2, endpointOptions);
-  };
-  return Object.assign(newApi, {
-    endpoint: endpoint2,
-    defaults: withDefaults.bind(null, endpoint2)
-  });
-}
-
-// pkg/dist-src/index.js
-var request = withDefaults(endpoint, {
-  headers: {
-    "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`
-  }
-});
-export {
-  request
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-web/index.js.map b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-web/index.js.map
deleted file mode 100644
index 0a67aa5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/dist-web/index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["../dist-src/index.js", "../dist-src/version.js", "../dist-src/is-plain-object.js", "../dist-src/fetch-wrapper.js", "../dist-src/get-buffer-response.js", "../dist-src/with-defaults.js"],
-  "sourcesContent": ["import { endpoint } from \"@octokit/endpoint\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport withDefaults from \"./with-defaults\";\nconst request = withDefaults(endpoint, {\n  headers: {\n    \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`\n  }\n});\nexport {\n  request\n};\n", "const VERSION = \"8.1.6\";\nexport {\n  VERSION\n};\n", "function isPlainObject(value) {\n  if (typeof value !== \"object\" || value === null)\n    return false;\n  if (Object.prototype.toString.call(value) !== \"[object Object]\")\n    return false;\n  const proto = Object.getPrototypeOf(value);\n  if (proto === null)\n    return true;\n  const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n  return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\nexport {\n  isPlainObject\n};\n", "import { isPlainObject } from \"./is-plain-object\";\nimport { RequestError } from \"@octokit/request-error\";\nimport getBuffer from \"./get-buffer-response\";\nfunction fetchWrapper(requestOptions) {\n  const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;\n  const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;\n  if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {\n    requestOptions.body = JSON.stringify(requestOptions.body);\n  }\n  let headers = {};\n  let status;\n  let url;\n  let { fetch } = globalThis;\n  if (requestOptions.request?.fetch) {\n    fetch = requestOptions.request.fetch;\n  }\n  if (!fetch) {\n    throw new Error(\n      \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n    );\n  }\n  return fetch(requestOptions.url, {\n    method: requestOptions.method,\n    body: requestOptions.body,\n    headers: requestOptions.headers,\n    signal: requestOptions.request?.signal,\n    // duplex must be set if request.body is ReadableStream or Async Iterables.\n    // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n    ...requestOptions.body && { duplex: \"half\" }\n  }).then(async (response) => {\n    url = response.url;\n    status = response.status;\n    for (const keyAndValue of response.headers) {\n      headers[keyAndValue[0]] = keyAndValue[1];\n    }\n    if (\"deprecation\" in headers) {\n      const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n      const deprecationLink = matches && matches.pop();\n      log.warn(\n        `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n      );\n    }\n    if (status === 204 || status === 205) {\n      return;\n    }\n    if (requestOptions.method === \"HEAD\") {\n      if (status < 400) {\n        return;\n      }\n      throw new RequestError(response.statusText, status, {\n        response: {\n          url,\n          status,\n          headers,\n          data: void 0\n        },\n        request: requestOptions\n      });\n    }\n    if (status === 304) {\n      throw new RequestError(\"Not modified\", status, {\n        response: {\n          url,\n          status,\n          headers,\n          data: await getResponseData(response)\n        },\n        request: requestOptions\n      });\n    }\n    if (status >= 400) {\n      const data = await getResponseData(response);\n      const error = new RequestError(toErrorMessage(data), status, {\n        response: {\n          url,\n          status,\n          headers,\n          data\n        },\n        request: requestOptions\n      });\n      throw error;\n    }\n    return parseSuccessResponseBody ? await getResponseData(response) : response.body;\n  }).then((data) => {\n    return {\n      status,\n      url,\n      headers,\n      data\n    };\n  }).catch((error) => {\n    if (error instanceof RequestError)\n      throw error;\n    else if (error.name === \"AbortError\")\n      throw error;\n    let message = error.message;\n    if (error.name === \"TypeError\" && \"cause\" in error) {\n      if (error.cause instanceof Error) {\n        message = error.cause.message;\n      } else if (typeof error.cause === \"string\") {\n        message = error.cause;\n      }\n    }\n    throw new RequestError(message, 500, {\n      request: requestOptions\n    });\n  });\n}\nasync function getResponseData(response) {\n  const contentType = response.headers.get(\"content-type\");\n  if (/application\\/json/.test(contentType)) {\n    return response.json().catch(() => response.text()).catch(() => \"\");\n  }\n  if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n    return response.text();\n  }\n  return getBuffer(response);\n}\nfunction toErrorMessage(data) {\n  if (typeof data === \"string\")\n    return data;\n  if (\"message\" in data) {\n    if (Array.isArray(data.errors)) {\n      return `${data.message}: ${data.errors.map(JSON.stringify).join(\", \")}`;\n    }\n    return data.message;\n  }\n  return `Unknown error: ${JSON.stringify(data)}`;\n}\nexport {\n  fetchWrapper as default\n};\n", "function getBufferResponse(response) {\n  return response.arrayBuffer();\n}\nexport {\n  getBufferResponse as default\n};\n", "import fetchWrapper from \"./fetch-wrapper\";\nfunction withDefaults(oldEndpoint, newDefaults) {\n  const endpoint = oldEndpoint.defaults(newDefaults);\n  const newApi = function(route, parameters) {\n    const endpointOptions = endpoint.merge(route, parameters);\n    if (!endpointOptions.request || !endpointOptions.request.hook) {\n      return fetchWrapper(endpoint.parse(endpointOptions));\n    }\n    const request = (route2, parameters2) => {\n      return fetchWrapper(\n        endpoint.parse(endpoint.merge(route2, parameters2))\n      );\n    };\n    Object.assign(request, {\n      endpoint,\n      defaults: withDefaults.bind(null, endpoint)\n    });\n    return endpointOptions.request.hook(request, endpointOptions);\n  };\n  return Object.assign(newApi, {\n    endpoint,\n    defaults: withDefaults.bind(null, endpoint)\n  });\n}\nexport {\n  withDefaults as default\n};\n"],
-  "mappings": ";AAAA,SAAS,gBAAgB;AACzB,SAAS,oBAAoB;;;ACD7B,IAAM,UAAU;;;ACAhB,SAAS,cAAc,OAAO;AAC5B,MAAI,OAAO,UAAU,YAAY,UAAU;AACzC,WAAO;AACT,MAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAC5C,WAAO;AACT,QAAM,QAAQ,OAAO,eAAe,KAAK;AACzC,MAAI,UAAU;AACZ,WAAO;AACT,QAAM,OAAO,OAAO,UAAU,eAAe,KAAK,OAAO,aAAa,KAAK,MAAM;AACjF,SAAO,OAAO,SAAS,cAAc,gBAAgB,QAAQ,SAAS,UAAU,KAAK,IAAI,MAAM,SAAS,UAAU,KAAK,KAAK;AAC9H;;;ACTA,SAAS,oBAAoB;;;ACD7B,SAAS,kBAAkB,UAAU;AACnC,SAAO,SAAS,YAAY;AAC9B;;;ADCA,SAAS,aAAa,gBAAgB;AACpC,QAAM,MAAM,eAAe,WAAW,eAAe,QAAQ,MAAM,eAAe,QAAQ,MAAM;AAChG,QAAM,2BAA2B,eAAe,SAAS,6BAA6B;AACtF,MAAI,cAAc,eAAe,IAAI,KAAK,MAAM,QAAQ,eAAe,IAAI,GAAG;AAC5E,mBAAe,OAAO,KAAK,UAAU,eAAe,IAAI;AAAA,EAC1D;AACA,MAAI,UAAU,CAAC;AACf,MAAI;AACJ,MAAI;AACJ,MAAI,EAAE,MAAM,IAAI;AAChB,MAAI,eAAe,SAAS,OAAO;AACjC,YAAQ,eAAe,QAAQ;AAAA,EACjC;AACA,MAAI,CAAC,OAAO;AACV,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO,MAAM,eAAe,KAAK;AAAA,IAC/B,QAAQ,eAAe;AAAA,IACvB,MAAM,eAAe;AAAA,IACrB,SAAS,eAAe;AAAA,IACxB,QAAQ,eAAe,SAAS;AAAA;AAAA;AAAA,IAGhC,GAAG,eAAe,QAAQ,EAAE,QAAQ,OAAO;AAAA,EAC7C,CAAC,EAAE,KAAK,OAAO,aAAa;AAC1B,UAAM,SAAS;AACf,aAAS,SAAS;AAClB,eAAW,eAAe,SAAS,SAAS;AAC1C,cAAQ,YAAY,CAAC,CAAC,IAAI,YAAY,CAAC;AAAA,IACzC;AACA,QAAI,iBAAiB,SAAS;AAC5B,YAAM,UAAU,QAAQ,QAAQ,QAAQ,KAAK,MAAM,8BAA8B;AACjF,YAAM,kBAAkB,WAAW,QAAQ,IAAI;AAC/C,UAAI;AAAA,QACF,uBAAuB,eAAe,MAAM,IAAI,eAAe,GAAG,qDAAqD,QAAQ,MAAM,GAAG,kBAAkB,SAAS,eAAe,KAAK,EAAE;AAAA,MAC3L;AAAA,IACF;AACA,QAAI,WAAW,OAAO,WAAW,KAAK;AACpC;AAAA,IACF;AACA,QAAI,eAAe,WAAW,QAAQ;AACpC,UAAI,SAAS,KAAK;AAChB;AAAA,MACF;AACA,YAAM,IAAI,aAAa,SAAS,YAAY,QAAQ;AAAA,QAClD,UAAU;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM;AAAA,QACR;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AACA,QAAI,WAAW,KAAK;AAClB,YAAM,IAAI,aAAa,gBAAgB,QAAQ;AAAA,QAC7C,UAAU;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM,MAAM,gBAAgB,QAAQ;AAAA,QACtC;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AACA,QAAI,UAAU,KAAK;AACjB,YAAM,OAAO,MAAM,gBAAgB,QAAQ;AAC3C,YAAM,QAAQ,IAAI,aAAa,eAAe,IAAI,GAAG,QAAQ;AAAA,QAC3D,UAAU;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AACD,YAAM;AAAA,IACR;AACA,WAAO,2BAA2B,MAAM,gBAAgB,QAAQ,IAAI,SAAS;AAAA,EAC/E,CAAC,EAAE,KAAK,CAAC,SAAS;AAChB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC,EAAE,MAAM,CAAC,UAAU;AAClB,QAAI,iBAAiB;AACnB,YAAM;AAAA,aACC,MAAM,SAAS;AACtB,YAAM;AACR,QAAI,UAAU,MAAM;AACpB,QAAI,MAAM,SAAS,eAAe,WAAW,OAAO;AAClD,UAAI,MAAM,iBAAiB,OAAO;AAChC,kBAAU,MAAM,MAAM;AAAA,MACxB,WAAW,OAAO,MAAM,UAAU,UAAU;AAC1C,kBAAU,MAAM;AAAA,MAClB;AAAA,IACF;AACA,UAAM,IAAI,aAAa,SAAS,KAAK;AAAA,MACnC,SAAS;AAAA,IACX,CAAC;AAAA,EACH,CAAC;AACH;AACA,eAAe,gBAAgB,UAAU;AACvC,QAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,MAAI,oBAAoB,KAAK,WAAW,GAAG;AACzC,WAAO,SAAS,KAAK,EAAE,MAAM,MAAM,SAAS,KAAK,CAAC,EAAE,MAAM,MAAM,EAAE;AAAA,EACpE;AACA,MAAI,CAAC,eAAe,yBAAyB,KAAK,WAAW,GAAG;AAC9D,WAAO,SAAS,KAAK;AAAA,EACvB;AACA,SAAO,kBAAU,QAAQ;AAC3B;AACA,SAAS,eAAe,MAAM;AAC5B,MAAI,OAAO,SAAS;AAClB,WAAO;AACT,MAAI,aAAa,MAAM;AACrB,QAAI,MAAM,QAAQ,KAAK,MAAM,GAAG;AAC9B,aAAO,GAAG,KAAK,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,SAAS,EAAE,KAAK,IAAI,CAAC;AAAA,IACvE;AACA,WAAO,KAAK;AAAA,EACd;AACA,SAAO,kBAAkB,KAAK,UAAU,IAAI,CAAC;AAC/C;;;AEhIA,SAAS,aAAa,aAAa,aAAa;AAC9C,QAAMA,YAAW,YAAY,SAAS,WAAW;AACjD,QAAM,SAAS,SAAS,OAAO,YAAY;AACzC,UAAM,kBAAkBA,UAAS,MAAM,OAAO,UAAU;AACxD,QAAI,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,QAAQ,MAAM;AAC7D,aAAO,aAAaA,UAAS,MAAM,eAAe,CAAC;AAAA,IACrD;AACA,UAAMC,WAAU,CAAC,QAAQ,gBAAgB;AACvC,aAAO;AAAA,QACLD,UAAS,MAAMA,UAAS,MAAM,QAAQ,WAAW,CAAC;AAAA,MACpD;AAAA,IACF;AACA,WAAO,OAAOC,UAAS;AAAA,MACrB,UAAAD;AAAA,MACA,UAAU,aAAa,KAAK,MAAMA,SAAQ;AAAA,IAC5C,CAAC;AACD,WAAO,gBAAgB,QAAQ,KAAKC,UAAS,eAAe;AAAA,EAC9D;AACA,SAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B,UAAAD;AAAA,IACA,UAAU,aAAa,KAAK,MAAMA,SAAQ;AAAA,EAC5C,CAAC;AACH;;;ALnBA,IAAM,UAAU,aAAa,UAAU;AAAA,EACrC,SAAS;AAAA,IACP,cAAc,sBAAsB,OAAO,IAAI,aAAa,CAAC;AAAA,EAC/D;AACF,CAAC;",
-  "names": ["endpoint", "request"]
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/package.json b/actions/bcr-pr-review-notifier/node_modules/@octokit/request/package.json
deleted file mode 100644
index c629d0b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/request/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-  "name": "@octokit/request",
-  "version": "8.1.6",
-  "publishConfig": {
-    "access": "public"
-  },
-  "description": "Send parameterized requests to GitHub's APIs with sensible defaults in browsers and Node",
-  "repository": "github:octokit/request.js",
-  "keywords": [
-    "octokit",
-    "github",
-    "api",
-    "request"
-  ],
-  "author": "Gregor Martynus (https://github.com/gr2m)",
-  "license": "MIT",
-  "dependencies": {
-    "@octokit/endpoint": "^9.0.0",
-    "@octokit/request-error": "^5.0.0",
-    "@octokit/types": "^12.0.0",
-    "universal-user-agent": "^6.0.0"
-  },
-  "devDependencies": {
-    "@octokit/auth-app": "^6.0.0",
-    "@octokit/tsconfig": "^2.0.0",
-    "@types/fetch-mock": "^7.2.4",
-    "@types/jest": "^29.0.0",
-    "@types/lolex": "^5.1.0",
-    "@types/node": "^20.0.0",
-    "@types/once": "^1.4.0",
-    "esbuild": "^0.19.0",
-    "fetch-mock": "^9.3.1",
-    "glob": "^10.2.4",
-    "jest": "^29.0.0",
-    "lolex": "^6.0.0",
-    "prettier": "3.1.0",
-    "semantic-release-plugin-update-version-in-files": "^1.0.0",
-    "string-to-arraybuffer": "^1.0.2",
-    "ts-jest": "^29.0.0",
-    "typescript": "^5.0.0"
-  },
-  "engines": {
-    "node": ">= 18"
-  },
-  "files": [
-    "dist-*/**",
-    "bin/**"
-  ],
-  "main": "dist-node/index.js",
-  "browser": "dist-web/index.js",
-  "types": "dist-types/index.d.ts",
-  "module": "dist-src/index.js",
-  "sideEffects": false
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/LICENSE b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/LICENSE
deleted file mode 100644
index 57bee5f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/LICENSE
+++ /dev/null
@@ -1,7 +0,0 @@
-MIT License Copyright (c) 2019 Octokit contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/README.md b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/README.md
deleted file mode 100644
index 7ebe154..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# types.ts
-
-> Shared TypeScript definitions for Octokit projects
-
-[![@latest](https://img.shields.io/npm/v/@octokit/types.svg)](https://www.npmjs.com/package/@octokit/types)
-[![Build Status](https://github.com/octokit/types.ts/workflows/Test/badge.svg)](https://github.com/octokit/types.ts/actions?workflow=Test)
-
-<!-- toc -->
-
-- [Usage](#usage)
-- [Examples](#examples)
-  - [Get parameter and response data types for a REST API endpoint](#get-parameter-and-response-data-types-for-a-rest-api-endpoint)
-  - [Get response types from endpoint methods](#get-response-types-from-endpoint-methods)
-- [Contributing](#contributing)
-- [License](#license)
-
-<!-- tocstop -->
-
-## Usage
-
-See all exported types at https://octokit.github.io/types.ts
-
-## Examples
-
-### Get parameter and response data types for a REST API endpoint
-
-```ts
-import { Endpoints } from "@octokit/types";
-
-type listUserReposParameters =
-  Endpoints["GET /repos/{owner}/{repo}"]["parameters"];
-type listUserReposResponse = Endpoints["GET /repos/{owner}/{repo}"]["response"];
-
-async function listRepos(
-  options: listUserReposParameters,
-): listUserReposResponse["data"] {
-  // ...
-}
-```
-
-### Get response types from endpoint methods
-
-```ts
-import {
-  GetResponseTypeFromEndpointMethod,
-  GetResponseDataTypeFromEndpointMethod,
-} from "@octokit/types";
-import { Octokit } from "@octokit/rest";
-
-const octokit = new Octokit();
-type CreateLabelResponseType = GetResponseTypeFromEndpointMethod<
-  typeof octokit.issues.createLabel
->;
-type CreateLabelResponseDataType = GetResponseDataTypeFromEndpointMethod<
-  typeof octokit.issues.createLabel
->;
-```
-
-## Contributing
-
-See [CONTRIBUTING.md](CONTRIBUTING.md)
-
-## License
-
-[MIT](LICENSE)
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/AuthInterface.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/AuthInterface.d.ts
deleted file mode 100644
index 616d6d5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/AuthInterface.d.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { EndpointOptions } from "./EndpointOptions";
-import type { OctokitResponse } from "./OctokitResponse";
-import type { RequestInterface } from "./RequestInterface";
-import type { RequestParameters } from "./RequestParameters";
-import type { Route } from "./Route";
-/**
- * Interface to implement complex authentication strategies for Octokit.
- * An object Implementing the AuthInterface can directly be passed as the
- * `auth` option in the Octokit constructor.
- *
- * For the official implementations of the most common authentication
- * strategies, see https://github.com/octokit/auth.js
- */
-export interface AuthInterface<AuthOptions extends any[], Authentication extends any> {
-    (...args: AuthOptions): Promise<Authentication>;
-    hook: {
-        /**
-         * Sends a request using the passed `request` instance
-         *
-         * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
-         */
-        <T = any>(request: RequestInterface, options: EndpointOptions): Promise<OctokitResponse<T>>;
-        /**
-         * Sends a request using the passed `request` instance
-         *
-         * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-         * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
-         */
-        <T = any>(request: RequestInterface, route: Route, parameters?: RequestParameters): Promise<OctokitResponse<T>>;
-    };
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts
deleted file mode 100644
index 3bbc388..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import type { RequestHeaders } from "./RequestHeaders";
-import type { RequestMethod } from "./RequestMethod";
-import type { RequestParameters } from "./RequestParameters";
-import type { Url } from "./Url";
-/**
- * The `.endpoint()` method is guaranteed to set all keys defined by RequestParameters
- * as well as the method property.
- */
-export type EndpointDefaults = RequestParameters & {
-    baseUrl: Url;
-    method: RequestMethod;
-    url?: Url;
-    headers: RequestHeaders & {
-        accept: string;
-        "user-agent": string;
-    };
-    mediaType: {
-        format: string;
-        previews?: string[];
-    };
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts
deleted file mode 100644
index 184bf73..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import type { EndpointDefaults } from "./EndpointDefaults";
-import type { RequestOptions } from "./RequestOptions";
-import type { RequestParameters } from "./RequestParameters";
-import type { Route } from "./Route";
-import type { Endpoints } from "./generated/Endpoints";
-export interface EndpointInterface<D extends object = object> {
-    /**
-     * Transforms a GitHub REST API endpoint into generic request options
-     *
-     * @param {object} endpoint Must set `url` unless it's set defaults. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
-     */
-    <O extends RequestParameters = RequestParameters>(options: O & {
-        method?: string;
-    } & ("url" extends keyof D ? {
-        url?: string;
-    } : {
-        url: string;
-    })): RequestOptions & Pick<D & O, keyof RequestOptions>;
-    /**
-     * Transforms a GitHub REST API endpoint into generic request options
-     *
-     * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-     * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
-     */
-    <R extends Route, P extends RequestParameters = R extends keyof Endpoints ? Endpoints[R]["parameters"] & RequestParameters : RequestParameters>(route: keyof Endpoints | R, parameters?: P): (R extends keyof Endpoints ? Endpoints[R]["request"] : RequestOptions) & Pick<P, keyof RequestOptions>;
-    /**
-     * Object with current default route and parameters
-     */
-    DEFAULTS: D & EndpointDefaults;
-    /**
-     * Returns a new `endpoint` interface with new defaults
-     */
-    defaults: <O extends RequestParameters = RequestParameters>(newDefaults: O) => EndpointInterface<D & O>;
-    merge: {
-        /**
-         * Merges current endpoint defaults with passed route and parameters,
-         * without transforming them into request options.
-         *
-         * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-         * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
-         *
-         */
-        <R extends Route, P extends RequestParameters = R extends keyof Endpoints ? Endpoints[R]["parameters"] & RequestParameters : RequestParameters>(route: keyof Endpoints | R, parameters?: P): D & (R extends keyof Endpoints ? Endpoints[R]["request"] & Endpoints[R]["parameters"] : EndpointDefaults) & P;
-        /**
-         * Merges current endpoint defaults with passed route and parameters,
-         * without transforming them into request options.
-         *
-         * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
-         */
-        <P extends RequestParameters = RequestParameters>(options: P): EndpointDefaults & D & P;
-        /**
-         * Returns current default options.
-         *
-         * @deprecated use endpoint.DEFAULTS instead
-         */
-        (): D & EndpointDefaults;
-    };
-    /**
-     * Stateless method to turn endpoint options into request options.
-     * Calling `endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`.
-     *
-     * @param {object} options `method`, `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
-     */
-    parse: <O extends EndpointDefaults = EndpointDefaults>(options: O) => RequestOptions & Pick<O, keyof RequestOptions>;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts
deleted file mode 100644
index e77168e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import type { RequestMethod } from "./RequestMethod";
-import type { Url } from "./Url";
-import type { RequestParameters } from "./RequestParameters";
-export type EndpointOptions = RequestParameters & {
-    method: RequestMethod;
-    url: Url;
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/Fetch.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/Fetch.d.ts
deleted file mode 100644
index 983c79b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/Fetch.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * Browser's fetch method (or compatible such as fetch-mock)
- */
-export type Fetch = any;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts
deleted file mode 100644
index 2daaf34..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-type Unwrap<T> = T extends Promise<infer U> ? U : T;
-type AnyFunction = (...args: any[]) => any;
-export type GetResponseTypeFromEndpointMethod<T extends AnyFunction> = Unwrap<ReturnType<T>>;
-export type GetResponseDataTypeFromEndpointMethod<T extends AnyFunction> = Unwrap<ReturnType<T>>["data"];
-export {};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts
deleted file mode 100644
index bc6ab10..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import type { ResponseHeaders } from "./ResponseHeaders";
-import type { Url } from "./Url";
-export interface OctokitResponse<T, S extends number = number> {
-    headers: ResponseHeaders;
-    /**
-     * http response code
-     */
-    status: S;
-    /**
-     * URL of response after all redirects
-     */
-    url: Url;
-    /**
-     * Response data as documented in the REST API reference documentation at https://docs.github.com/rest/reference
-     */
-    data: T;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestError.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestError.d.ts
deleted file mode 100644
index 4608392..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestError.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-export type RequestError = {
-    name: string;
-    status: number;
-    documentation_url: string;
-    errors?: Array<{
-        resource: string;
-        code: string;
-        field: string;
-        message?: string;
-    }>;
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts
deleted file mode 100644
index 4231159..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-export type RequestHeaders = {
-    /**
-     * Avoid setting `headers.accept`, use `mediaType.{format|previews}` option instead.
-     */
-    accept?: string;
-    /**
-     * Use `authorization` to send authenticated request, remember `token ` / `bearer ` prefixes. Example: `token 1234567890abcdef1234567890abcdef12345678`
-     */
-    authorization?: string;
-    /**
-     * `user-agent` is set do a default and can be overwritten as needed.
-     */
-    "user-agent"?: string;
-    [header: string]: string | number | undefined;
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestInterface.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestInterface.d.ts
deleted file mode 100644
index cc757e4..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestInterface.d.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import type { EndpointInterface } from "./EndpointInterface";
-import type { OctokitResponse } from "./OctokitResponse";
-import type { RequestParameters } from "./RequestParameters";
-import type { Route } from "./Route";
-import type { Endpoints } from "./generated/Endpoints";
-export interface RequestInterface<D extends object = object> {
-    /**
-     * Sends a request based on endpoint options
-     *
-     * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
-     */
-    <T = any, O extends RequestParameters = RequestParameters>(options: O & {
-        method?: string;
-    } & ("url" extends keyof D ? {
-        url?: string;
-    } : {
-        url: string;
-    })): Promise<OctokitResponse<T>>;
-    /**
-     * Sends a request based on endpoint options
-     *
-     * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
-     * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
-     */
-    <R extends Route>(route: keyof Endpoints | R, options?: R extends keyof Endpoints ? Endpoints[R]["parameters"] & RequestParameters : RequestParameters): R extends keyof Endpoints ? Promise<Endpoints[R]["response"]> : Promise<OctokitResponse<any>>;
-    /**
-     * Returns a new `request` with updated route and parameters
-     */
-    defaults: <O extends RequestParameters = RequestParameters>(newDefaults: O) => RequestInterface<D & O>;
-    /**
-     * Octokit endpoint API, see {@link https://github.com/octokit/endpoint.js|@octokit/endpoint}
-     */
-    endpoint: EndpointInterface<D>;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestMethod.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestMethod.d.ts
deleted file mode 100644
index 4cdfe61..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestMethod.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * HTTP Verb supported by GitHub's REST API
- */
-export type RequestMethod = "DELETE" | "GET" | "HEAD" | "PATCH" | "POST" | "PUT";
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestOptions.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestOptions.d.ts
deleted file mode 100644
index b799c0f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestOptions.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import type { RequestHeaders } from "./RequestHeaders";
-import type { RequestMethod } from "./RequestMethod";
-import type { RequestRequestOptions } from "./RequestRequestOptions";
-import type { Url } from "./Url";
-/**
- * Generic request options as they are returned by the `endpoint()` method
- */
-export type RequestOptions = {
-    method: RequestMethod;
-    url: Url;
-    headers: RequestHeaders;
-    body?: any;
-    request?: RequestRequestOptions;
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestParameters.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestParameters.d.ts
deleted file mode 100644
index e212478..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestParameters.d.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import type { RequestRequestOptions } from "./RequestRequestOptions";
-import type { RequestHeaders } from "./RequestHeaders";
-import type { Url } from "./Url";
-/**
- * Parameters that can be passed into `request(route, parameters)` or `endpoint(route, parameters)` methods
- */
-export type RequestParameters = {
-    /**
-     * Base URL to be used when a relative URL is passed, such as `/orgs/{org}`.
-     * If `baseUrl` is `https://enterprise.acme-inc.com/api/v3`, then the request
-     * will be sent to `https://enterprise.acme-inc.com/api/v3/orgs/{org}`.
-     */
-    baseUrl?: Url;
-    /**
-     * HTTP headers. Use lowercase keys.
-     */
-    headers?: RequestHeaders;
-    /**
-     * Media type options, see {@link https://developer.github.com/v3/media/|GitHub Developer Guide}
-     */
-    mediaType?: {
-        /**
-         * `json` by default. Can be `raw`, `text`, `html`, `full`, `diff`, `patch`, `sha`, `base64`. Depending on endpoint
-         */
-        format?: string;
-        /**
-         * Custom media type names of {@link https://docs.github.com/en/graphql/overview/schema-previews|GraphQL API Previews} without the `-preview` suffix.
-         * Example for single preview: `['squirrel-girl']`.
-         * Example for multiple previews: `['squirrel-girl', 'mister-fantastic']`.
-         */
-        previews?: string[];
-    };
-    /**
-     * Pass custom meta information for the request. The `request` object will be returned as is.
-     */
-    request?: RequestRequestOptions;
-    /**
-     * Any additional parameter will be passed as follows
-     * 1. URL parameter if `':parameter'` or `{parameter}` is part of `url`
-     * 2. Query parameter if `method` is `'GET'` or `'HEAD'`
-     * 3. Request body if `parameter` is `'data'`
-     * 4. JSON in the request body in the form of `body[parameter]` unless `parameter` key is `'data'`
-     */
-    [parameter: string]: unknown;
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts
deleted file mode 100644
index 0e4d269..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import type { Fetch } from "./Fetch";
-import type { Signal } from "./Signal";
-/**
- * Octokit-specific request options which are ignored for the actual request, but can be used by Octokit or plugins to manipulate how the request is sent or how a response is handled
- */
-export type RequestRequestOptions = {
-    /**
-     * Custom replacement for built-in fetch method. Useful for testing or request hooks.
-     */
-    fetch?: Fetch;
-    /**
-     * Use an `AbortController` instance to cancel a request. In node you can only cancel streamed requests.
-     */
-    signal?: Signal;
-    /**
-     * If set to `false`, the response body will not be parsed and will be returned as a stream.
-     */
-    parseSuccessResponseBody?: boolean;
-    [option: string]: any;
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts
deleted file mode 100644
index ff7af38..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-export type ResponseHeaders = {
-    "cache-control"?: string;
-    "content-length"?: number;
-    "content-type"?: string;
-    date?: string;
-    etag?: string;
-    "last-modified"?: string;
-    link?: string;
-    location?: string;
-    server?: string;
-    status?: string;
-    vary?: string;
-    "x-github-mediatype"?: string;
-    "x-github-request-id"?: string;
-    "x-oauth-scopes"?: string;
-    "x-ratelimit-limit"?: string;
-    "x-ratelimit-remaining"?: string;
-    "x-ratelimit-reset"?: string;
-    [header: string]: string | number | undefined;
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/Route.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/Route.d.ts
deleted file mode 100644
index 808991e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/Route.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * String consisting of an optional HTTP method and relative path or absolute URL. Examples: `'/orgs/{org}'`, `'PUT /orgs/{org}'`, `GET https://example.com/foo/bar`
- */
-export type Route = string;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/Signal.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/Signal.d.ts
deleted file mode 100644
index bdf9700..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/Signal.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Abort signal
- *
- * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
- */
-export type Signal = any;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts
deleted file mode 100644
index 6b213ab..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import type { AuthInterface } from "./AuthInterface";
-export interface StrategyInterface<StrategyOptions extends any[], AuthOptions extends any[], Authentication extends object> {
-    (...args: StrategyOptions): AuthInterface<AuthOptions, Authentication>;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/Url.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/Url.d.ts
deleted file mode 100644
index 521f5ad..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/Url.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * Relative or absolute URL. Examples: `'/orgs/{org}'`, `https://example.com/foo/bar`
- */
-export type Url = string;
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/VERSION.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/VERSION.d.ts
deleted file mode 100644
index 033b518..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/VERSION.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare const VERSION = "12.4.0";
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts
deleted file mode 100644
index 6181d49..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts
+++ /dev/null
@@ -1,3721 +0,0 @@
-import type { paths } from "@octokit/openapi-types";
-import type { OctokitResponse } from "../OctokitResponse";
-import type { RequestHeaders } from "../RequestHeaders";
-import type { RequestRequestOptions } from "../RequestRequestOptions";
-/**
- * @license (MIT OR CC0-1.0)
- * @source https://github.com/sindresorhus/type-fest/blob/570e27f8fdaee37ef5d5e0fbf241e0212ff8fc1a/source/simplify.d.ts
- */
-export type Simplify<T> = {
-    [KeyType in keyof T]: T[KeyType];
-} & {};
-type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
-type ExtractParameters<T> = "parameters" extends keyof T ? UnionToIntersection<{
-    [K in keyof T["parameters"]]-?: T["parameters"][K];
-}[keyof T["parameters"]]> : {};
-type ExtractRequestBody<T> = "requestBody" extends keyof T ? "content" extends keyof T["requestBody"] ? "application/json" extends keyof T["requestBody"]["content"] ? T["requestBody"]["content"]["application/json"] : {
-    data: {
-        [K in keyof T["requestBody"]["content"]]: T["requestBody"]["content"][K];
-    }[keyof T["requestBody"]["content"]];
-} : "application/json" extends keyof T["requestBody"] ? T["requestBody"]["application/json"] : {
-    data: {
-        [K in keyof T["requestBody"]]: T["requestBody"][K];
-    }[keyof T["requestBody"]];
-} : {};
-type ToOctokitParameters<T> = ExtractParameters<T> & ExtractRequestBody<Required<T>>;
-type Operation<Url extends keyof paths, Method extends keyof paths[Url]> = {
-    parameters: Simplify<ToOctokitParameters<paths[Url][Method]>>;
-    request: Method extends ReadOnlyMethods ? {
-        method: Method extends string ? Uppercase<Method> : never;
-        url: Url;
-        headers: RequestHeaders;
-        request: RequestRequestOptions;
-    } : {
-        method: Method extends string ? Uppercase<Method> : never;
-        url: Url;
-        headers: RequestHeaders;
-        request: RequestRequestOptions;
-        data: ExtractRequestBody<paths[Url][Method]>;
-    };
-    response: ExtractOctokitResponse<paths[Url][Method]>;
-};
-type ReadOnlyMethods = "get" | "head";
-type SuccessStatuses = 200 | 201 | 202 | 204 | 205;
-type RedirectStatuses = 301 | 302;
-type EmptyResponseStatuses = 201 | 204 | 205;
-type KnownJsonResponseTypes = "application/json" | "application/octocat-stream" | "application/scim+json" | "text/html" | "text/plain";
-type SuccessResponseDataType<Responses> = {
-    [K in SuccessStatuses & keyof Responses]: GetContentKeyIfPresent<Responses[K]> extends never ? never : OctokitResponse<GetContentKeyIfPresent<Responses[K]>, K>;
-}[SuccessStatuses & keyof Responses];
-type RedirectResponseDataType<Responses> = {
-    [K in RedirectStatuses & keyof Responses]: OctokitResponse<unknown, K>;
-}[RedirectStatuses & keyof Responses];
-type EmptyResponseDataType<Responses> = {
-    [K in EmptyResponseStatuses & keyof Responses]: OctokitResponse<never, K>;
-}[EmptyResponseStatuses & keyof Responses];
-type GetContentKeyIfPresent<T> = "content" extends keyof T ? DataType<T["content"]> : DataType<T>;
-type DataType<T> = {
-    [K in KnownJsonResponseTypes & keyof T]: T[K];
-}[KnownJsonResponseTypes & keyof T];
-type ExtractOctokitResponse<R> = "responses" extends keyof R ? SuccessResponseDataType<R["responses"]> extends never ? RedirectResponseDataType<R["responses"]> extends never ? EmptyResponseDataType<R["responses"]> : RedirectResponseDataType<R["responses"]> : SuccessResponseDataType<R["responses"]> : unknown;
-export interface Endpoints {
-    /**
-     * @see https://docs.github.com/rest/apps/apps#delete-an-installation-for-the-authenticated-app
-     */
-    "DELETE /app/installations/{installation_id}": Operation<"/app/installations/{installation_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/apps/apps#unsuspend-an-app-installation
-     */
-    "DELETE /app/installations/{installation_id}/suspended": Operation<"/app/installations/{installation_id}/suspended", "delete">;
-    /**
-     * @see https://docs.github.com/rest/apps/oauth-applications#delete-an-app-authorization
-     */
-    "DELETE /applications/{client_id}/grant": Operation<"/applications/{client_id}/grant", "delete">;
-    /**
-     * @see https://docs.github.com/rest/apps/oauth-applications#delete-an-app-token
-     */
-    "DELETE /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "delete">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#delete-a-gist
-     */
-    "DELETE /gists/{gist_id}": Operation<"/gists/{gist_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/gists/comments#delete-a-gist-comment
-     */
-    "DELETE /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#unstar-a-gist
-     */
-    "DELETE /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "delete">;
-    /**
-     * @see https://docs.github.com/rest/apps/installations#revoke-an-installation-access-token
-     */
-    "DELETE /installation/token": Operation<"/installation/token", "delete">;
-    /**
-     * @see https://docs.github.com/rest/activity/notifications#delete-a-thread-subscription
-     */
-    "DELETE /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "delete">;
-    /**
-     * @see https://docs.github.com/rest/orgs/orgs#delete-an-organization
-     */
-    "DELETE /orgs/{org}": Operation<"/orgs/{org}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#disable-a-selected-repository-for-github-actions-in-an-organization
-     */
-    "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}": Operation<"/orgs/{org}/actions/permissions/repositories/{repository_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#delete-a-self-hosted-runner-from-an-organization
-     */
-    "DELETE /orgs/{org}/actions/runners/{runner_id}": Operation<"/orgs/{org}/actions/runners/{runner_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#remove-all-custom-labels-from-a-self-hosted-runner-for-an-organization
-     */
-    "DELETE /orgs/{org}/actions/runners/{runner_id}/labels": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#remove-a-custom-label-from-a-self-hosted-runner-for-an-organization
-     */
-    "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels/{name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#delete-an-organization-secret
-     */
-    "DELETE /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#remove-selected-repository-from-an-organization-secret
-     */
-    "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#delete-an-organization-variable
-     */
-    "DELETE /orgs/{org}/actions/variables/{name}": Operation<"/orgs/{org}/actions/variables/{name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#remove-selected-repository-from-an-organization-variable
-     */
-    "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/variables/{name}/repositories/{repository_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/orgs/blocking#unblock-a-user-from-an-organization
-     */
-    "DELETE /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organizations#remove-users-from-codespaces-access-for-an-organization
-     */
-    "DELETE /orgs/{org}/codespaces/access/selected_users": Operation<"/orgs/{org}/codespaces/access/selected_users", "delete">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organization-secrets#delete-an-organization-secret
-     */
-    "DELETE /orgs/{org}/codespaces/secrets/{secret_name}": Operation<"/orgs/{org}/codespaces/secrets/{secret_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organization-secrets#remove-selected-repository-from-an-organization-secret
-     */
-    "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/copilot/copilot-for-business#remove-teams-from-the-copilot-for-business-subscription-for-an-organization
-     */
-    "DELETE /orgs/{org}/copilot/billing/selected_teams": Operation<"/orgs/{org}/copilot/billing/selected_teams", "delete">;
-    /**
-     * @see https://docs.github.com/rest/copilot/copilot-for-business#remove-users-from-the-copilot-for-business-subscription-for-an-organization
-     */
-    "DELETE /orgs/{org}/copilot/billing/selected_users": Operation<"/orgs/{org}/copilot/billing/selected_users", "delete">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#delete-an-organization-secret
-     */
-    "DELETE /orgs/{org}/dependabot/secrets/{secret_name}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#remove-selected-repository-from-an-organization-secret
-     */
-    "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#delete-an-organization-webhook
-     */
-    "DELETE /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/interactions/orgs#remove-interaction-restrictions-for-an-organization
-     */
-    "DELETE /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "delete">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#cancel-an-organization-invitation
-     */
-    "DELETE /orgs/{org}/invitations/{invitation_id}": Operation<"/orgs/{org}/invitations/{invitation_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#remove-an-organization-member
-     */
-    "DELETE /orgs/{org}/members/{username}": Operation<"/orgs/{org}/members/{username}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organizations#delete-a-codespace-from-the-organization
-     */
-    "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}": Operation<"/orgs/{org}/members/{username}/codespaces/{codespace_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#remove-organization-membership-for-a-user
-     */
-    "DELETE /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/migrations/orgs#delete-an-organization-migration-archive
-     */
-    "DELETE /orgs/{org}/migrations/{migration_id}/archive": Operation<"/orgs/{org}/migrations/{migration_id}/archive", "delete">;
-    /**
-     * @see https://docs.github.com/rest/migrations/orgs#unlock-an-organization-repository
-     */
-    "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock": Operation<"/orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock", "delete">;
-    /**
-     * @see https://docs.github.com/rest/orgs/outside-collaborators#remove-outside-collaborator-from-an-organization
-     */
-    "DELETE /orgs/{org}/outside_collaborators/{username}": Operation<"/orgs/{org}/outside_collaborators/{username}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#delete-a-package-for-an-organization
-     */
-    "DELETE /orgs/{org}/packages/{package_type}/{package_name}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#delete-package-version-for-an-organization
-     */
-    "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/orgs/custom-properties#remove-a-custom-property-for-an-organization
-     */
-    "DELETE /orgs/{org}/properties/schema/{custom_property_name}": Operation<"/orgs/{org}/properties/schema/{custom_property_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#remove-public-organization-membership-for-the-authenticated-user
-     */
-    "DELETE /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/orgs/rules#delete-an-organization-repository-ruleset
-     */
-    "DELETE /orgs/{org}/rulesets/{ruleset_id}": Operation<"/orgs/{org}/rulesets/{ruleset_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team
-     */
-    "DELETE /orgs/{org}/security-managers/teams/{team_slug}": Operation<"/orgs/{org}/security-managers/teams/{team_slug}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#delete-a-team
-     */
-    "DELETE /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussions#delete-a-discussion
-     */
-    "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussion-comments#delete-a-discussion-comment
-     */
-    "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#delete-team-discussion-comment-reaction
-     */
-    "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#delete-team-discussion-reaction
-     */
-    "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user
-     */
-    "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#remove-a-project-from-a-team
-     */
-    "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#remove-a-repository-from-a-team
-     */
-    "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/projects/cards#delete-a-project-card
-     */
-    "DELETE /projects/columns/cards/{card_id}": Operation<"/projects/columns/cards/{card_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/projects/columns#delete-a-project-column
-     */
-    "DELETE /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/projects/projects#delete-a-project
-     */
-    "DELETE /projects/{project_id}": Operation<"/projects/{project_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/projects/collaborators#remove-user-as-a-collaborator
-     */
-    "DELETE /projects/{project_id}/collaborators/{username}": Operation<"/projects/{project_id}/collaborators/{username}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#delete-a-repository
-     */
-    "DELETE /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/artifacts#delete-an-artifact
-     */
-    "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/cache#delete-a-github-actions-cache-for-a-repository-using-a-cache-id
-     */
-    "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}": Operation<"/repos/{owner}/{repo}/actions/caches/{cache_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/cache#delete-github-actions-caches-for-a-repository-using-a-cache-key
-     */
-    "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}": Operation<"/repos/{owner}/{repo}/actions/caches", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#delete-a-self-hosted-runner-from-a-repository
-     */
-    "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#remove-all-custom-labels-from-a-self-hosted-runner-for-a-repository
-     */
-    "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#remove-a-custom-label-from-a-self-hosted-runner-for-a-repository
-     */
-    "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#delete-a-workflow-run
-     */
-    "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#delete-workflow-run-logs
-     */
-    "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/logs", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#delete-a-repository-secret
-     */
-    "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#delete-a-repository-variable
-     */
-    "DELETE /repos/{owner}/{repo}/actions/variables/{name}": Operation<"/repos/{owner}/{repo}/actions/variables/{name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/repos/autolinks#delete-an-autolink-reference-from-a-repository
-     */
-    "DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}": Operation<"/repos/{owner}/{repo}/autolinks/{autolink_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#disable-automated-security-fixes
-     */
-    "DELETE /repos/{owner}/{repo}/automated-security-fixes": Operation<"/repos/{owner}/{repo}/automated-security-fixes", "delete">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#delete-branch-protection
-     */
-    "DELETE /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "delete">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#delete-admin-branch-protection
-     */
-    "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "delete">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#delete-pull-request-review-protection
-     */
-    "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "delete">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#delete-commit-signature-protection
-     */
-    "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "delete">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#remove-status-check-protection
-     */
-    "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "delete">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#remove-status-check-contexts
-     */
-    "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "delete">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#delete-access-restrictions
-     */
-    "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions", "delete">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#remove-app-access-restrictions
-     */
-    "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "delete">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#remove-team-access-restrictions
-     */
-    "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "delete">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#remove-user-access-restrictions
-     */
-    "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "delete">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#delete-a-code-scanning-analysis-from-a-repository
-     */
-    "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}": Operation<"/repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/repository-secrets#delete-a-repository-secret
-     */
-    "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/codespaces/secrets/{secret_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/collaborators/collaborators#remove-a-repository-collaborator
-     */
-    "DELETE /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/commits/comments#delete-a-commit-comment
-     */
-    "DELETE /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#delete-a-commit-comment-reaction
-     */
-    "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/repos/contents#delete-a-file
-     */
-    "DELETE /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#delete-a-repository-secret
-     */
-    "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/dependabot/secrets/{secret_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/deployments/deployments#delete-a-deployment
-     */
-    "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/deployments/environments#delete-an-environment
-     */
-    "DELETE /repos/{owner}/{repo}/environments/{environment_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/deployments/branch-policies#delete-a-deployment-branch-policy
-     */
-    "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/deployments/protection-rules#disable-a-custom-protection-rule-for-an-environment
-     */
-    "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/git/refs#delete-a-reference
-     */
-    "DELETE /repos/{owner}/{repo}/git/refs/{ref}": Operation<"/repos/{owner}/{repo}/git/refs/{ref}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#delete-a-repository-webhook
-     */
-    "DELETE /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/migrations/source-imports#cancel-an-import
-     */
-    "DELETE /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "delete">;
-    /**
-     * @see https://docs.github.com/rest/interactions/repos#remove-interaction-restrictions-for-a-repository
-     */
-    "DELETE /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "delete">;
-    /**
-     * @see https://docs.github.com/rest/collaborators/invitations#delete-a-repository-invitation
-     */
-    "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}": Operation<"/repos/{owner}/{repo}/invitations/{invitation_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/issues/comments#delete-an-issue-comment
-     */
-    "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#delete-an-issue-comment-reaction
-     */
-    "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/reference/issues#remove-assignees-from-an-issue
-     */
-    "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/assignees", "delete">;
-    /**
-     * @see https://docs.github.com/rest/issues/labels#remove-all-labels-from-an-issue
-     */
-    "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "delete">;
-    /**
-     * @see https://docs.github.com/rest/issues/labels#remove-a-label-from-an-issue
-     */
-    "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels/{name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/issues/issues#unlock-an-issue
-     */
-    "DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/lock", "delete">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#delete-an-issue-reaction
-     */
-    "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/deploy-keys/deploy-keys#delete-a-deploy-key
-     */
-    "DELETE /repos/{owner}/{repo}/keys/{key_id}": Operation<"/repos/{owner}/{repo}/keys/{key_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/issues/labels#delete-a-label
-     */
-    "DELETE /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/issues/milestones#delete-a-milestone
-     */
-    "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/pages/pages#delete-a-apiname-pages-site
-     */
-    "DELETE /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "delete">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#disable-private-vulnerability-reporting-for-a-repository
-     */
-    "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting": Operation<"/repos/{owner}/{repo}/private-vulnerability-reporting", "delete">;
-    /**
-     * @see https://docs.github.com/rest/pulls/comments#delete-a-review-comment-for-a-pull-request
-     */
-    "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#delete-a-pull-request-comment-reaction
-     */
-    "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/pulls/review-requests#remove-requested-reviewers-from-a-pull-request
-     */
-    "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "delete">;
-    /**
-     * @see https://docs.github.com/rest/pulls/reviews#delete-a-pending-review-for-a-pull-request
-     */
-    "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/releases/assets#delete-a-release-asset
-     */
-    "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/releases/releases#delete-a-release
-     */
-    "DELETE /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#delete-a-release-reaction
-     */
-    "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/repos/rules#delete-a-repository-ruleset
-     */
-    "DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}": Operation<"/repos/{owner}/{repo}/rulesets/{ruleset_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/activity/watching#delete-a-repository-subscription
-     */
-    "DELETE /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "delete">;
-    /**
-     * @see https://docs.github.com/rest/repos/tags#delete-a-tag-protection-state-for-a-repository
-     */
-    "DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}": Operation<"/repos/{owner}/{repo}/tags/protection/{tag_protection_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#disable-vulnerability-alerts
-     */
-    "DELETE /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#delete-an-environment-secret
-     */
-    "DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#delete-an-environment-variable
-     */
-    "DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}": Operation<"/repositories/{repository_id}/environments/{environment_name}/variables/{name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#delete-a-team-legacy
-     */
-    "DELETE /teams/{team_id}": Operation<"/teams/{team_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussions#delete-a-discussion-legacy
-     */
-    "DELETE /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussion-comments#delete-a-discussion-comment-legacy
-     */
-    "DELETE /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#remove-team-member-legacy
-     */
-    "DELETE /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user-legacy
-     */
-    "DELETE /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#remove-a-project-from-a-team-legacy
-     */
-    "DELETE /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#remove-a-repository-from-a-team-legacy
-     */
-    "DELETE /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/users/blocking#unblock-a-user
-     */
-    "DELETE /user/blocks/{username}": Operation<"/user/blocks/{username}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/secrets#delete-a-secret-for-the-authenticated-user
-     */
-    "DELETE /user/codespaces/secrets/{secret_name}": Operation<"/user/codespaces/secrets/{secret_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/secrets#remove-a-selected-repository-from-a-user-secret
-     */
-    "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}": Operation<"/user/codespaces/secrets/{secret_name}/repositories/{repository_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#delete-a-codespace-for-the-authenticated-user
-     */
-    "DELETE /user/codespaces/{codespace_name}": Operation<"/user/codespaces/{codespace_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/users/emails#delete-an-email-address-for-the-authenticated-user
-     */
-    "DELETE /user/emails": Operation<"/user/emails", "delete">;
-    /**
-     * @see https://docs.github.com/rest/users/followers#unfollow-a-user
-     */
-    "DELETE /user/following/{username}": Operation<"/user/following/{username}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/users/gpg-keys#delete-a-gpg-key-for-the-authenticated-user
-     */
-    "DELETE /user/gpg_keys/{gpg_key_id}": Operation<"/user/gpg_keys/{gpg_key_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/apps/installations#remove-a-repository-from-an-app-installation
-     */
-    "DELETE /user/installations/{installation_id}/repositories/{repository_id}": Operation<"/user/installations/{installation_id}/repositories/{repository_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/interactions/user#remove-interaction-restrictions-from-your-public-repositories
-     */
-    "DELETE /user/interaction-limits": Operation<"/user/interaction-limits", "delete">;
-    /**
-     * @see https://docs.github.com/rest/users/keys#delete-a-public-ssh-key-for-the-authenticated-user
-     */
-    "DELETE /user/keys/{key_id}": Operation<"/user/keys/{key_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/migrations/users#delete-a-user-migration-archive
-     */
-    "DELETE /user/migrations/{migration_id}/archive": Operation<"/user/migrations/{migration_id}/archive", "delete">;
-    /**
-     * @see https://docs.github.com/rest/migrations/users#unlock-a-user-repository
-     */
-    "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock": Operation<"/user/migrations/{migration_id}/repos/{repo_name}/lock", "delete">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#delete-a-package-for-the-authenticated-user
-     */
-    "DELETE /user/packages/{package_type}/{package_name}": Operation<"/user/packages/{package_type}/{package_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#delete-a-package-version-for-the-authenticated-user
-     */
-    "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/user/packages/{package_type}/{package_name}/versions/{package_version_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/collaborators/invitations#decline-a-repository-invitation
-     */
-    "DELETE /user/repository_invitations/{invitation_id}": Operation<"/user/repository_invitations/{invitation_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/users/social-accounts#delete-social-accounts-for-the-authenticated-user
-     */
-    "DELETE /user/social_accounts": Operation<"/user/social_accounts", "delete">;
-    /**
-     * @see https://docs.github.com/rest/users/ssh-signing-keys#delete-an-ssh-signing-key-for-the-authenticated-user
-     */
-    "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}": Operation<"/user/ssh_signing_keys/{ssh_signing_key_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/activity/starring#unstar-a-repository-for-the-authenticated-user
-     */
-    "DELETE /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#delete-a-package-for-a-user
-     */
-    "DELETE /users/{username}/packages/{package_type}/{package_name}": Operation<"/users/{username}/packages/{package_type}/{package_name}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#delete-package-version-for-a-user
-     */
-    "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}", "delete">;
-    /**
-     * @see https://docs.github.com/rest/meta/meta#github-api-root
-     */
-    "GET /": Operation<"/", "get">;
-    /**
-     * @see https://docs.github.com/rest/security-advisories/global-advisories#list-global-security-advisories
-     */
-    "GET /advisories": Operation<"/advisories", "get">;
-    /**
-     * @see https://docs.github.com/rest/security-advisories/global-advisories#get-a-global-security-advisory
-     */
-    "GET /advisories/{ghsa_id}": Operation<"/advisories/{ghsa_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/apps#get-the-authenticated-app
-     */
-    "GET /app": Operation<"/app", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/webhooks#get-a-webhook-configuration-for-an-app
-     */
-    "GET /app/hook/config": Operation<"/app/hook/config", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/webhooks#list-deliveries-for-an-app-webhook
-     */
-    "GET /app/hook/deliveries": Operation<"/app/hook/deliveries", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/webhooks#get-a-delivery-for-an-app-webhook
-     */
-    "GET /app/hook/deliveries/{delivery_id}": Operation<"/app/hook/deliveries/{delivery_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/apps#list-installation-requests-for-the-authenticated-app
-     */
-    "GET /app/installation-requests": Operation<"/app/installation-requests", "get">;
-    /**
-     * @see https://docs.github.com/enterprise-server@3.9/rest/apps/apps#list-installations-for-the-authenticated-app
-     */
-    "GET /app/installations": Operation<"/app/installations", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/apps#get-an-installation-for-the-authenticated-app
-     */
-    "GET /app/installations/{installation_id}": Operation<"/app/installations/{installation_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/apps#get-an-app
-     */
-    "GET /apps/{app_slug}": Operation<"/apps/{app_slug}", "get">;
-    /**
-     * @see https://docs.github.com/rest/classroom/classroom#get-an-assignment
-     */
-    "GET /assignments/{assignment_id}": Operation<"/assignments/{assignment_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/classroom/classroom#list-accepted-assignments-for-an-assignment
-     */
-    "GET /assignments/{assignment_id}/accepted_assignments": Operation<"/assignments/{assignment_id}/accepted_assignments", "get">;
-    /**
-     * @see https://docs.github.com/rest/classroom/classroom#get-assignment-grades
-     */
-    "GET /assignments/{assignment_id}/grades": Operation<"/assignments/{assignment_id}/grades", "get">;
-    /**
-     * @see https://docs.github.com/rest/classroom/classroom#list-classrooms
-     */
-    "GET /classrooms": Operation<"/classrooms", "get">;
-    /**
-     * @see https://docs.github.com/rest/classroom/classroom#get-a-classroom
-     */
-    "GET /classrooms/{classroom_id}": Operation<"/classrooms/{classroom_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/classroom/classroom#list-assignments-for-a-classroom
-     */
-    "GET /classrooms/{classroom_id}/assignments": Operation<"/classrooms/{classroom_id}/assignments", "get">;
-    /**
-     * @see https://docs.github.com/rest/codes-of-conduct/codes-of-conduct#get-all-codes-of-conduct
-     */
-    "GET /codes_of_conduct": Operation<"/codes_of_conduct", "get">;
-    /**
-     * @see https://docs.github.com/rest/codes-of-conduct/codes-of-conduct#get-a-code-of-conduct
-     */
-    "GET /codes_of_conduct/{key}": Operation<"/codes_of_conduct/{key}", "get">;
-    /**
-     * @see https://docs.github.com/rest/emojis/emojis#get-emojis
-     */
-    "GET /emojis": Operation<"/emojis", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-enterprise
-     */
-    "GET /enterprises/{enterprise}/dependabot/alerts": Operation<"/enterprises/{enterprise}/dependabot/alerts", "get">;
-    /**
-     * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-an-enterprise
-     */
-    "GET /enterprises/{enterprise}/secret-scanning/alerts": Operation<"/enterprises/{enterprise}/secret-scanning/alerts", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-public-events
-     */
-    "GET /events": Operation<"/events", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/feeds#get-feeds
-     */
-    "GET /feeds": Operation<"/feeds", "get">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#list-gists-for-the-authenticated-user
-     */
-    "GET /gists": Operation<"/gists", "get">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#list-public-gists
-     */
-    "GET /gists/public": Operation<"/gists/public", "get">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#list-starred-gists
-     */
-    "GET /gists/starred": Operation<"/gists/starred", "get">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#get-a-gist
-     */
-    "GET /gists/{gist_id}": Operation<"/gists/{gist_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/gists/comments#list-gist-comments
-     */
-    "GET /gists/{gist_id}/comments": Operation<"/gists/{gist_id}/comments", "get">;
-    /**
-     * @see https://docs.github.com/rest/gists/comments#get-a-gist-comment
-     */
-    "GET /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#list-gist-commits
-     */
-    "GET /gists/{gist_id}/commits": Operation<"/gists/{gist_id}/commits", "get">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#list-gist-forks
-     */
-    "GET /gists/{gist_id}/forks": Operation<"/gists/{gist_id}/forks", "get">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#check-if-a-gist-is-starred
-     */
-    "GET /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "get">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#get-a-gist-revision
-     */
-    "GET /gists/{gist_id}/{sha}": Operation<"/gists/{gist_id}/{sha}", "get">;
-    /**
-     * @see https://docs.github.com/rest/gitignore/gitignore#get-all-gitignore-templates
-     */
-    "GET /gitignore/templates": Operation<"/gitignore/templates", "get">;
-    /**
-     * @see https://docs.github.com/rest/gitignore/gitignore#get-a-gitignore-template
-     */
-    "GET /gitignore/templates/{name}": Operation<"/gitignore/templates/{name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/installations#list-repositories-accessible-to-the-app-installation
-     */
-    "GET /installation/repositories": Operation<"/installation/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/issues#list-issues-assigned-to-the-authenticated-user
-     */
-    "GET /issues": Operation<"/issues", "get">;
-    /**
-     * @see https://docs.github.com/rest/licenses/licenses#get-all-commonly-used-licenses
-     */
-    "GET /licenses": Operation<"/licenses", "get">;
-    /**
-     * @see https://docs.github.com/rest/licenses/licenses#get-a-license
-     */
-    "GET /licenses/{license}": Operation<"/licenses/{license}", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#get-a-subscription-plan-for-an-account
-     */
-    "GET /marketplace_listing/accounts/{account_id}": Operation<"/marketplace_listing/accounts/{account_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#list-plans
-     */
-    "GET /marketplace_listing/plans": Operation<"/marketplace_listing/plans", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#list-accounts-for-a-plan
-     */
-    "GET /marketplace_listing/plans/{plan_id}/accounts": Operation<"/marketplace_listing/plans/{plan_id}/accounts", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#get-a-subscription-plan-for-an-account-stubbed
-     */
-    "GET /marketplace_listing/stubbed/accounts/{account_id}": Operation<"/marketplace_listing/stubbed/accounts/{account_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#list-plans-stubbed
-     */
-    "GET /marketplace_listing/stubbed/plans": Operation<"/marketplace_listing/stubbed/plans", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#list-accounts-for-a-plan-stubbed
-     */
-    "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts": Operation<"/marketplace_listing/stubbed/plans/{plan_id}/accounts", "get">;
-    /**
-     * @see https://docs.github.com/rest/meta/meta#get-apiname-meta-information
-     */
-    "GET /meta": Operation<"/meta", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-public-events-for-a-network-of-repositories
-     */
-    "GET /networks/{owner}/{repo}/events": Operation<"/networks/{owner}/{repo}/events", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user
-     */
-    "GET /notifications": Operation<"/notifications", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/notifications#get-a-thread
-     */
-    "GET /notifications/threads/{thread_id}": Operation<"/notifications/threads/{thread_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/notifications#get-a-thread-subscription-for-the-authenticated-user
-     */
-    "GET /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "get">;
-    /**
-     * @see https://docs.github.com/rest/meta/meta#get-octocat
-     */
-    "GET /octocat": Operation<"/octocat", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/orgs#list-organizations
-     */
-    "GET /organizations": Operation<"/organizations", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organizations#list-codespaces-for-the-organization
-     * @deprecated "org_id" is now "org"
-     */
-    "GET /orgs/{org_id}/codespaces": Operation<"/orgs/{org}/codespaces", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/orgs#get-an-organization
-     */
-    "GET /orgs/{org}": Operation<"/orgs/{org}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/cache#get-github-actions-cache-usage-for-an-organization
-     */
-    "GET /orgs/{org}/actions/cache/usage": Operation<"/orgs/{org}/actions/cache/usage", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/cache#list-repositories-with-github-actions-cache-usage-for-an-organization
-     */
-    "GET /orgs/{org}/actions/cache/usage-by-repository": Operation<"/orgs/{org}/actions/cache/usage-by-repository", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/oidc#get-the-customization-template-for-an-oidc-subject-claim-for-an-organization
-     */
-    "GET /orgs/{org}/actions/oidc/customization/sub": Operation<"/orgs/{org}/actions/oidc/customization/sub", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#get-github-actions-permissions-for-an-organization
-     */
-    "GET /orgs/{org}/actions/permissions": Operation<"/orgs/{org}/actions/permissions", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization
-     */
-    "GET /orgs/{org}/actions/permissions/repositories": Operation<"/orgs/{org}/actions/permissions/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-an-organization
-     */
-    "GET /orgs/{org}/actions/permissions/selected-actions": Operation<"/orgs/{org}/actions/permissions/selected-actions", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#get-default-workflow-permissions-for-an-organization
-     */
-    "GET /orgs/{org}/actions/permissions/workflow": Operation<"/orgs/{org}/actions/permissions/workflow", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#list-self-hosted-runners-for-an-organization
-     */
-    "GET /orgs/{org}/actions/runners": Operation<"/orgs/{org}/actions/runners", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#list-runner-applications-for-an-organization
-     */
-    "GET /orgs/{org}/actions/runners/downloads": Operation<"/orgs/{org}/actions/runners/downloads", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#get-a-self-hosted-runner-for-an-organization
-     */
-    "GET /orgs/{org}/actions/runners/{runner_id}": Operation<"/orgs/{org}/actions/runners/{runner_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#list-labels-for-a-self-hosted-runner-for-an-organization
-     */
-    "GET /orgs/{org}/actions/runners/{runner_id}/labels": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#list-organization-secrets
-     */
-    "GET /orgs/{org}/actions/secrets": Operation<"/orgs/{org}/actions/secrets", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#get-an-organization-public-key
-     */
-    "GET /orgs/{org}/actions/secrets/public-key": Operation<"/orgs/{org}/actions/secrets/public-key", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#get-an-organization-secret
-     */
-    "GET /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#list-selected-repositories-for-an-organization-secret
-     */
-    "GET /orgs/{org}/actions/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#list-organization-variables
-     */
-    "GET /orgs/{org}/actions/variables": Operation<"/orgs/{org}/actions/variables", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#get-an-organization-variable
-     */
-    "GET /orgs/{org}/actions/variables/{name}": Operation<"/orgs/{org}/actions/variables/{name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#list-selected-repositories-for-an-organization-variable
-     */
-    "GET /orgs/{org}/actions/variables/{name}/repositories": Operation<"/orgs/{org}/actions/variables/{name}/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/blocking#list-users-blocked-by-an-organization
-     */
-    "GET /orgs/{org}/blocks": Operation<"/orgs/{org}/blocks", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/blocking#check-if-a-user-is-blocked-by-an-organization
-     */
-    "GET /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "get">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-alerts-for-an-organization
-     */
-    "GET /orgs/{org}/code-scanning/alerts": Operation<"/orgs/{org}/code-scanning/alerts", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organizations#list-codespaces-for-the-organization
-     */
-    "GET /orgs/{org}/codespaces": Operation<"/orgs/{org}/codespaces", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organization-secrets#list-organization-secrets
-     */
-    "GET /orgs/{org}/codespaces/secrets": Operation<"/orgs/{org}/codespaces/secrets", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organization-secrets#get-an-organization-public-key
-     */
-    "GET /orgs/{org}/codespaces/secrets/public-key": Operation<"/orgs/{org}/codespaces/secrets/public-key", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organization-secrets#get-an-organization-secret
-     */
-    "GET /orgs/{org}/codespaces/secrets/{secret_name}": Operation<"/orgs/{org}/codespaces/secrets/{secret_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organization-secrets#list-selected-repositories-for-an-organization-secret
-     */
-    "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/codespaces/secrets/{secret_name}/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/copilot/copilot-for-business#get-copilot-for-business-seat-information-and-settings-for-an-organization
-     */
-    "GET /orgs/{org}/copilot/billing": Operation<"/orgs/{org}/copilot/billing", "get">;
-    /**
-     * @see https://docs.github.com/rest/copilot/copilot-for-business#list-all-copilot-for-business-seat-assignments-for-an-organization
-     */
-    "GET /orgs/{org}/copilot/billing/seats": Operation<"/orgs/{org}/copilot/billing/seats", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-organization
-     */
-    "GET /orgs/{org}/dependabot/alerts": Operation<"/orgs/{org}/dependabot/alerts", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#list-organization-secrets
-     */
-    "GET /orgs/{org}/dependabot/secrets": Operation<"/orgs/{org}/dependabot/secrets", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#get-an-organization-public-key
-     */
-    "GET /orgs/{org}/dependabot/secrets/public-key": Operation<"/orgs/{org}/dependabot/secrets/public-key", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#get-an-organization-secret
-     */
-    "GET /orgs/{org}/dependabot/secrets/{secret_name}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#list-selected-repositories-for-an-organization-secret
-     */
-    "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#get-list-of-conflicting-packages-during-docker-migration-for-organization
-     */
-    "GET /orgs/{org}/docker/conflicts": Operation<"/orgs/{org}/docker/conflicts", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-public-organization-events
-     */
-    "GET /orgs/{org}/events": Operation<"/orgs/{org}/events", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#list-failed-organization-invitations
-     */
-    "GET /orgs/{org}/failed_invitations": Operation<"/orgs/{org}/failed_invitations", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#list-organization-webhooks
-     */
-    "GET /orgs/{org}/hooks": Operation<"/orgs/{org}/hooks", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#get-an-organization-webhook
-     */
-    "GET /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#get-a-webhook-configuration-for-an-organization
-     */
-    "GET /orgs/{org}/hooks/{hook_id}/config": Operation<"/orgs/{org}/hooks/{hook_id}/config", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#list-deliveries-for-an-organization-webhook
-     */
-    "GET /orgs/{org}/hooks/{hook_id}/deliveries": Operation<"/orgs/{org}/hooks/{hook_id}/deliveries", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#get-a-webhook-delivery-for-an-organization-webhook
-     */
-    "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}": Operation<"/orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/apps#get-an-organization-installation-for-the-authenticated-app
-     */
-    "GET /orgs/{org}/installation": Operation<"/orgs/{org}/installation", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/orgs#list-app-installations-for-an-organization
-     */
-    "GET /orgs/{org}/installations": Operation<"/orgs/{org}/installations", "get">;
-    /**
-     * @see https://docs.github.com/rest/interactions/orgs#get-interaction-restrictions-for-an-organization
-     */
-    "GET /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#list-pending-organization-invitations
-     */
-    "GET /orgs/{org}/invitations": Operation<"/orgs/{org}/invitations", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#list-organization-invitation-teams
-     */
-    "GET /orgs/{org}/invitations/{invitation_id}/teams": Operation<"/orgs/{org}/invitations/{invitation_id}/teams", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/issues#list-organization-issues-assigned-to-the-authenticated-user
-     */
-    "GET /orgs/{org}/issues": Operation<"/orgs/{org}/issues", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#list-organization-members
-     */
-    "GET /orgs/{org}/members": Operation<"/orgs/{org}/members", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#check-organization-membership-for-a-user
-     */
-    "GET /orgs/{org}/members/{username}": Operation<"/orgs/{org}/members/{username}", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organizations#list-codespaces-for-a-user-in-organization
-     */
-    "GET /orgs/{org}/members/{username}/codespaces": Operation<"/orgs/{org}/members/{username}/codespaces", "get">;
-    /**
-     * @see https://docs.github.com/rest/copilot/copilot-for-business#get-copilot-for-business-seat-assignment-details-for-a-user
-     */
-    "GET /orgs/{org}/members/{username}/copilot": Operation<"/orgs/{org}/members/{username}/copilot", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#get-organization-membership-for-a-user
-     */
-    "GET /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "get">;
-    /**
-     * @see https://docs.github.com/rest/migrations/orgs#list-organization-migrations
-     */
-    "GET /orgs/{org}/migrations": Operation<"/orgs/{org}/migrations", "get">;
-    /**
-     * @see https://docs.github.com/rest/migrations/orgs#get-an-organization-migration-status
-     */
-    "GET /orgs/{org}/migrations/{migration_id}": Operation<"/orgs/{org}/migrations/{migration_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/migrations/orgs#download-an-organization-migration-archive
-     */
-    "GET /orgs/{org}/migrations/{migration_id}/archive": Operation<"/orgs/{org}/migrations/{migration_id}/archive", "get">;
-    /**
-     * @see https://docs.github.com/rest/migrations/orgs#list-repositories-in-an-organization-migration
-     */
-    "GET /orgs/{org}/migrations/{migration_id}/repositories": Operation<"/orgs/{org}/migrations/{migration_id}/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/outside-collaborators#list-outside-collaborators-for-an-organization
-     */
-    "GET /orgs/{org}/outside_collaborators": Operation<"/orgs/{org}/outside_collaborators", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#list-packages-for-an-organization
-     */
-    "GET /orgs/{org}/packages": Operation<"/orgs/{org}/packages", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#get-a-package-for-an-organization
-     */
-    "GET /orgs/{org}/packages/{package_type}/{package_name}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-an-organization
-     */
-    "GET /orgs/{org}/packages/{package_type}/{package_name}/versions": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#get-a-package-version-for-an-organization
-     */
-    "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-requests-to-access-organization-resources-with-fine-grained-personal-access-tokens
-     */
-    "GET /orgs/{org}/personal-access-token-requests": Operation<"/orgs/{org}/personal-access-token-requests", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-repositories-requested-to-be-accessed-by-a-fine-grained-personal-access-token
-     */
-    "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories": Operation<"/orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-fine-grained-personal-access-tokens-with-access-to-organization-resources
-     */
-    "GET /orgs/{org}/personal-access-tokens": Operation<"/orgs/{org}/personal-access-tokens", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-repositories-a-fine-grained-personal-access-token-has-access-to
-     */
-    "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories": Operation<"/orgs/{org}/personal-access-tokens/{pat_id}/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/projects/projects#list-organization-projects
-     */
-    "GET /orgs/{org}/projects": Operation<"/orgs/{org}/projects", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/custom-properties#get-all-custom-properties-for-an-organization
-     */
-    "GET /orgs/{org}/properties/schema": Operation<"/orgs/{org}/properties/schema", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/custom-properties#get-a-custom-property-for-an-organization
-     */
-    "GET /orgs/{org}/properties/schema/{custom_property_name}": Operation<"/orgs/{org}/properties/schema/{custom_property_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/custom-properties#list-custom-property-values-for-organization-repositories
-     */
-    "GET /orgs/{org}/properties/values": Operation<"/orgs/{org}/properties/values", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#list-public-organization-members
-     */
-    "GET /orgs/{org}/public_members": Operation<"/orgs/{org}/public_members", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#check-public-organization-membership-for-a-user
-     */
-    "GET /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-organization-repositories
-     */
-    "GET /orgs/{org}/repos": Operation<"/orgs/{org}/repos", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/rules#get-all-organization-repository-rulesets
-     */
-    "GET /orgs/{org}/rulesets": Operation<"/orgs/{org}/rulesets", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/rule-suites#list-organization-rule-suites
-     */
-    "GET /orgs/{org}/rulesets/rule-suites": Operation<"/orgs/{org}/rulesets/rule-suites", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/rule-suites#get-an-organization-rule-suite
-     */
-    "GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}": Operation<"/orgs/{org}/rulesets/rule-suites/{rule_suite_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/rules#get-an-organization-repository-ruleset
-     */
-    "GET /orgs/{org}/rulesets/{ruleset_id}": Operation<"/orgs/{org}/rulesets/{ruleset_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-an-organization
-     */
-    "GET /orgs/{org}/secret-scanning/alerts": Operation<"/orgs/{org}/secret-scanning/alerts", "get">;
-    /**
-     * @see https://docs.github.com/rest/security-advisories/repository-advisories#list-repository-security-advisories-for-an-organization
-     */
-    "GET /orgs/{org}/security-advisories": Operation<"/orgs/{org}/security-advisories", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams
-     */
-    "GET /orgs/{org}/security-managers": Operation<"/orgs/{org}/security-managers", "get">;
-    /**
-     * @see https://docs.github.com/rest/billing/billing#get-github-actions-billing-for-an-organization
-     */
-    "GET /orgs/{org}/settings/billing/actions": Operation<"/orgs/{org}/settings/billing/actions", "get">;
-    /**
-     * @see https://docs.github.com/rest/billing/billing#get-github-packages-billing-for-an-organization
-     */
-    "GET /orgs/{org}/settings/billing/packages": Operation<"/orgs/{org}/settings/billing/packages", "get">;
-    /**
-     * @see https://docs.github.com/rest/billing/billing#get-shared-storage-billing-for-an-organization
-     */
-    "GET /orgs/{org}/settings/billing/shared-storage": Operation<"/orgs/{org}/settings/billing/shared-storage", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-teams
-     */
-    "GET /orgs/{org}/teams": Operation<"/orgs/{org}/teams", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#get-a-team-by-name
-     */
-    "GET /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussions#list-discussions
-     */
-    "GET /orgs/{org}/teams/{team_slug}/discussions": Operation<"/orgs/{org}/teams/{team_slug}/discussions", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussions#get-a-discussion
-     */
-    "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments
-     */
-    "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment
-     */
-    "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "get">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment
-     */
-    "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "get">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion
-     */
-    "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#list-pending-team-invitations
-     */
-    "GET /orgs/{org}/teams/{team_slug}/invitations": Operation<"/orgs/{org}/teams/{team_slug}/invitations", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#list-team-members
-     */
-    "GET /orgs/{org}/teams/{team_slug}/members": Operation<"/orgs/{org}/teams/{team_slug}/members", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#get-team-membership-for-a-user
-     */
-    "GET /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-team-projects
-     */
-    "GET /orgs/{org}/teams/{team_slug}/projects": Operation<"/orgs/{org}/teams/{team_slug}/projects", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-project
-     */
-    "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-team-repositories
-     */
-    "GET /orgs/{org}/teams/{team_slug}/repos": Operation<"/orgs/{org}/teams/{team_slug}/repos", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-repository
-     */
-    "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-child-teams
-     */
-    "GET /orgs/{org}/teams/{team_slug}/teams": Operation<"/orgs/{org}/teams/{team_slug}/teams", "get">;
-    /**
-     * @see https://docs.github.com/rest/projects/cards#get-a-project-card
-     */
-    "GET /projects/columns/cards/{card_id}": Operation<"/projects/columns/cards/{card_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/projects/columns#get-a-project-column
-     */
-    "GET /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/projects/cards#list-project-cards
-     */
-    "GET /projects/columns/{column_id}/cards": Operation<"/projects/columns/{column_id}/cards", "get">;
-    /**
-     * @see https://docs.github.com/rest/projects/projects#get-a-project
-     */
-    "GET /projects/{project_id}": Operation<"/projects/{project_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/projects/collaborators#list-project-collaborators
-     */
-    "GET /projects/{project_id}/collaborators": Operation<"/projects/{project_id}/collaborators", "get">;
-    /**
-     * @see https://docs.github.com/rest/projects/collaborators#get-project-permission-for-a-user
-     */
-    "GET /projects/{project_id}/collaborators/{username}/permission": Operation<"/projects/{project_id}/collaborators/{username}/permission", "get">;
-    /**
-     * @see https://docs.github.com/rest/projects/columns#list-project-columns
-     */
-    "GET /projects/{project_id}/columns": Operation<"/projects/{project_id}/columns", "get">;
-    /**
-     * @see https://docs.github.com/rest/rate-limit/rate-limit#get-rate-limit-status-for-the-authenticated-user
-     */
-    "GET /rate_limit": Operation<"/rate_limit", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#get-a-repository
-     */
-    "GET /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/artifacts#list-artifacts-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/artifacts": Operation<"/repos/{owner}/{repo}/actions/artifacts", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/artifacts#get-an-artifact
-     */
-    "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/artifacts#download-an-artifact
-     */
-    "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/cache#get-github-actions-cache-usage-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/cache/usage": Operation<"/repos/{owner}/{repo}/actions/cache/usage", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/cache#list-github-actions-caches-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/caches": Operation<"/repos/{owner}/{repo}/actions/caches", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-jobs#get-a-job-for-a-workflow-run
-     */
-    "GET /repos/{owner}/{repo}/actions/jobs/{job_id}": Operation<"/repos/{owner}/{repo}/actions/jobs/{job_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-jobs#download-job-logs-for-a-workflow-run
-     */
-    "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs": Operation<"/repos/{owner}/{repo}/actions/jobs/{job_id}/logs", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/oidc#get-the-customization-template-for-an-oidc-subject-claim-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/oidc/customization/sub": Operation<"/repos/{owner}/{repo}/actions/oidc/customization/sub", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#list-repository-organization-secrets
-     */
-    "GET /repos/{owner}/{repo}/actions/organization-secrets": Operation<"/repos/{owner}/{repo}/actions/organization-secrets", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#list-repository-organization-variables
-     */
-    "GET /repos/{owner}/{repo}/actions/organization-variables": Operation<"/repos/{owner}/{repo}/actions/organization-variables", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#get-github-actions-permissions-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/permissions": Operation<"/repos/{owner}/{repo}/actions/permissions", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#get-the-level-of-access-for-workflows-outside-of-the-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/permissions/access": Operation<"/repos/{owner}/{repo}/actions/permissions/access", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/permissions/selected-actions": Operation<"/repos/{owner}/{repo}/actions/permissions/selected-actions", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#get-default-workflow-permissions-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/permissions/workflow": Operation<"/repos/{owner}/{repo}/actions/permissions/workflow", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#list-self-hosted-runners-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/runners": Operation<"/repos/{owner}/{repo}/actions/runners", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#list-runner-applications-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/runners/downloads": Operation<"/repos/{owner}/{repo}/actions/runners/downloads", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#get-a-self-hosted-runner-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/runners/{runner_id}": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#list-labels-for-a-self-hosted-runner-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/actions/runs": Operation<"/repos/{owner}/{repo}/actions/runs", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#get-a-workflow-run
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#get-the-review-history-for-a-workflow-run
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/approvals", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/artifacts#list-workflow-run-artifacts
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#get-a-workflow-run-attempt
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run-attempt
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#download-workflow-run-attempt-logs
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#download-workflow-run-logs
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/logs", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#get-pending-deployments-for-a-workflow-run
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#get-workflow-run-usage
-     */
-    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/timing", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#list-repository-secrets
-     */
-    "GET /repos/{owner}/{repo}/actions/secrets": Operation<"/repos/{owner}/{repo}/actions/secrets", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#get-a-repository-public-key
-     */
-    "GET /repos/{owner}/{repo}/actions/secrets/public-key": Operation<"/repos/{owner}/{repo}/actions/secrets/public-key", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#get-a-repository-secret
-     */
-    "GET /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#list-repository-variables
-     */
-    "GET /repos/{owner}/{repo}/actions/variables": Operation<"/repos/{owner}/{repo}/actions/variables", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#get-a-repository-variable
-     */
-    "GET /repos/{owner}/{repo}/actions/variables/{name}": Operation<"/repos/{owner}/{repo}/actions/variables/{name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflows#list-repository-workflows
-     */
-    "GET /repos/{owner}/{repo}/actions/workflows": Operation<"/repos/{owner}/{repo}/actions/workflows", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflows#get-a-workflow
-     */
-    "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-workflow
-     */
-    "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflows#get-workflow-usage
-     */
-    "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repository-activities
-     */
-    "GET /repos/{owner}/{repo}/activity": Operation<"/repos/{owner}/{repo}/activity", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/assignees#list-assignees
-     */
-    "GET /repos/{owner}/{repo}/assignees": Operation<"/repos/{owner}/{repo}/assignees", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/assignees#check-if-a-user-can-be-assigned
-     */
-    "GET /repos/{owner}/{repo}/assignees/{assignee}": Operation<"/repos/{owner}/{repo}/assignees/{assignee}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/autolinks#list-all-autolinks-of-a-repository
-     */
-    "GET /repos/{owner}/{repo}/autolinks": Operation<"/repos/{owner}/{repo}/autolinks", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/autolinks#get-an-autolink-reference-of-a-repository
-     */
-    "GET /repos/{owner}/{repo}/autolinks/{autolink_id}": Operation<"/repos/{owner}/{repo}/autolinks/{autolink_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#check-if-automated-security-fixes-are-enabled-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/automated-security-fixes": Operation<"/repos/{owner}/{repo}/automated-security-fixes", "get">;
-    /**
-     * @see https://docs.github.com/rest/branches/branches#list-branches
-     */
-    "GET /repos/{owner}/{repo}/branches": Operation<"/repos/{owner}/{repo}/branches", "get">;
-    /**
-     * @see https://docs.github.com/rest/branches/branches#get-a-branch
-     */
-    "GET /repos/{owner}/{repo}/branches/{branch}": Operation<"/repos/{owner}/{repo}/branches/{branch}", "get">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#get-branch-protection
-     */
-    "GET /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "get">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#get-admin-branch-protection
-     */
-    "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "get">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#get-pull-request-review-protection
-     */
-    "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "get">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#get-commit-signature-protection
-     */
-    "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "get">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#get-status-checks-protection
-     */
-    "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "get">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#get-all-status-check-contexts
-     */
-    "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "get">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#get-access-restrictions
-     */
-    "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions", "get">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#get-apps-with-access-to-the-protected-branch
-     */
-    "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "get">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#get-teams-with-access-to-the-protected-branch
-     */
-    "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "get">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#get-users-with-access-to-the-protected-branch
-     */
-    "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "get">;
-    /**
-     * @see https://docs.github.com/rest/checks/runs#get-a-check-run
-     */
-    "GET /repos/{owner}/{repo}/check-runs/{check_run_id}": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/checks/runs#list-check-run-annotations
-     */
-    "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "get">;
-    /**
-     * @see https://docs.github.com/rest/checks/suites#get-a-check-suite
-     */
-    "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/checks/runs#list-check-runs-in-a-check-suite
-     */
-    "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "get">;
-    /**
-     * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-alerts-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/alerts": Operation<"/repos/{owner}/{repo}/code-scanning/alerts", "get">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#get-a-code-scanning-alert
-     * @deprecated "alert_id" is now "alert_number"
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_id}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "get">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#get-a-code-scanning-alert
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "get">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#list-instances-of-a-code-scanning-alert
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "get">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-analyses-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/analyses": Operation<"/repos/{owner}/{repo}/code-scanning/analyses", "get">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#get-a-code-scanning-analysis-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}": Operation<"/repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#list-codeql-databases-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/codeql/databases": Operation<"/repos/{owner}/{repo}/code-scanning/codeql/databases", "get">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#get-a-codeql-database-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}": Operation<"/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}", "get">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#get-a-code-scanning-default-setup-configuration
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/default-setup": Operation<"/repos/{owner}/{repo}/code-scanning/default-setup", "get">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#get-information-about-a-sarif-upload
-     */
-    "GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}": Operation<"/repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-codeowners-errors
-     */
-    "GET /repos/{owner}/{repo}/codeowners/errors": Operation<"/repos/{owner}/{repo}/codeowners/errors", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#list-codespaces-in-a-repository-for-the-authenticated-user
-     */
-    "GET /repos/{owner}/{repo}/codespaces": Operation<"/repos/{owner}/{repo}/codespaces", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#list-devcontainer-configurations-in-a-repository-for-the-authenticated-user
-     */
-    "GET /repos/{owner}/{repo}/codespaces/devcontainers": Operation<"/repos/{owner}/{repo}/codespaces/devcontainers", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/machines#list-available-machine-types-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/codespaces/machines": Operation<"/repos/{owner}/{repo}/codespaces/machines", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#get-default-attributes-for-a-codespace
-     */
-    "GET /repos/{owner}/{repo}/codespaces/new": Operation<"/repos/{owner}/{repo}/codespaces/new", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#check-if-permissions-defined-by-a-devcontainer-have-been-accepted-by-the-authenticated-user
-     */
-    "GET /repos/{owner}/{repo}/codespaces/permissions_check": Operation<"/repos/{owner}/{repo}/codespaces/permissions_check", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/repository-secrets#list-repository-secrets
-     */
-    "GET /repos/{owner}/{repo}/codespaces/secrets": Operation<"/repos/{owner}/{repo}/codespaces/secrets", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/repository-secrets#get-a-repository-public-key
-     */
-    "GET /repos/{owner}/{repo}/codespaces/secrets/public-key": Operation<"/repos/{owner}/{repo}/codespaces/secrets/public-key", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/repository-secrets#get-a-repository-secret
-     */
-    "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/codespaces/secrets/{secret_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/collaborators/collaborators#list-repository-collaborators
-     */
-    "GET /repos/{owner}/{repo}/collaborators": Operation<"/repos/{owner}/{repo}/collaborators", "get">;
-    /**
-     * @see https://docs.github.com/rest/collaborators/collaborators#check-if-a-user-is-a-repository-collaborator
-     */
-    "GET /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "get">;
-    /**
-     * @see https://docs.github.com/rest/collaborators/collaborators#get-repository-permissions-for-a-user
-     */
-    "GET /repos/{owner}/{repo}/collaborators/{username}/permission": Operation<"/repos/{owner}/{repo}/collaborators/{username}/permission", "get">;
-    /**
-     * @see https://docs.github.com/rest/commits/comments#list-commit-comments-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/comments": Operation<"/repos/{owner}/{repo}/comments", "get">;
-    /**
-     * @see https://docs.github.com/rest/commits/comments#get-a-commit-comment
-     */
-    "GET /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-commit-comment
-     */
-    "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions", "get">;
-    /**
-     * @see https://docs.github.com/rest/commits/commits#list-commits
-     */
-    "GET /repos/{owner}/{repo}/commits": Operation<"/repos/{owner}/{repo}/commits", "get">;
-    /**
-     * @see https://docs.github.com/rest/commits/commits#list-branches-for-head-commit
-     */
-    "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", "get">;
-    /**
-     * @see https://docs.github.com/rest/commits/comments#list-commit-comments
-     */
-    "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/comments", "get">;
-    /**
-     * @see https://docs.github.com/rest/commits/commits#list-pull-requests-associated-with-a-commit
-     */
-    "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/pulls", "get">;
-    /**
-     * @see https://docs.github.com/rest/commits/commits#get-a-commit
-     */
-    "GET /repos/{owner}/{repo}/commits/{ref}": Operation<"/repos/{owner}/{repo}/commits/{ref}", "get">;
-    /**
-     * @see https://docs.github.com/rest/checks/runs#list-check-runs-for-a-git-reference
-     */
-    "GET /repos/{owner}/{repo}/commits/{ref}/check-runs": Operation<"/repos/{owner}/{repo}/commits/{ref}/check-runs", "get">;
-    /**
-     * @see https://docs.github.com/rest/checks/suites#list-check-suites-for-a-git-reference
-     */
-    "GET /repos/{owner}/{repo}/commits/{ref}/check-suites": Operation<"/repos/{owner}/{repo}/commits/{ref}/check-suites", "get">;
-    /**
-     * @see https://docs.github.com/rest/commits/statuses#get-the-combined-status-for-a-specific-reference
-     */
-    "GET /repos/{owner}/{repo}/commits/{ref}/status": Operation<"/repos/{owner}/{repo}/commits/{ref}/status", "get">;
-    /**
-     * @see https://docs.github.com/rest/commits/statuses#list-commit-statuses-for-a-reference
-     */
-    "GET /repos/{owner}/{repo}/commits/{ref}/statuses": Operation<"/repos/{owner}/{repo}/commits/{ref}/statuses", "get">;
-    /**
-     * @see https://docs.github.com/rest/metrics/community#get-community-profile-metrics
-     */
-    "GET /repos/{owner}/{repo}/community/profile": Operation<"/repos/{owner}/{repo}/community/profile", "get">;
-    /**
-     * @see https://docs.github.com/rest/commits/commits#compare-two-commits
-     */
-    "GET /repos/{owner}/{repo}/compare/{basehead}": Operation<"/repos/{owner}/{repo}/compare/{basehead}", "get">;
-    /**
-     * @see https://docs.github.com/rest/reference/repos#compare-two-commits
-     */
-    "GET /repos/{owner}/{repo}/compare/{base}...{head}": Operation<"/repos/{owner}/{repo}/compare/{base}...{head}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/contents#get-repository-content
-     */
-    "GET /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repository-contributors
-     */
-    "GET /repos/{owner}/{repo}/contributors": Operation<"/repos/{owner}/{repo}/contributors", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/dependabot/alerts": Operation<"/repos/{owner}/{repo}/dependabot/alerts", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/alerts#get-a-dependabot-alert
-     */
-    "GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/dependabot/alerts/{alert_number}", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#list-repository-secrets
-     */
-    "GET /repos/{owner}/{repo}/dependabot/secrets": Operation<"/repos/{owner}/{repo}/dependabot/secrets", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#get-a-repository-public-key
-     */
-    "GET /repos/{owner}/{repo}/dependabot/secrets/public-key": Operation<"/repos/{owner}/{repo}/dependabot/secrets/public-key", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#get-a-repository-secret
-     */
-    "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/dependabot/secrets/{secret_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependency-graph/dependency-review#get-a-diff-of-the-dependencies-between-commits
-     */
-    "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}": Operation<"/repos/{owner}/{repo}/dependency-graph/compare/{basehead}", "get">;
-    /**
-     * @see https://docs.github.com/rest/dependency-graph/sboms#export-a-software-bill-of-materials-sbom-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/dependency-graph/sbom": Operation<"/repos/{owner}/{repo}/dependency-graph/sbom", "get">;
-    /**
-     * @see https://docs.github.com/rest/deployments/deployments#list-deployments
-     */
-    "GET /repos/{owner}/{repo}/deployments": Operation<"/repos/{owner}/{repo}/deployments", "get">;
-    /**
-     * @see https://docs.github.com/rest/deployments/deployments#get-a-deployment
-     */
-    "GET /repos/{owner}/{repo}/deployments/{deployment_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/deployments/statuses#list-deployment-statuses
-     */
-    "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "get">;
-    /**
-     * @see https://docs.github.com/rest/deployments/statuses#get-a-deployment-status
-     */
-    "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/deployments/environments#list-environments
-     */
-    "GET /repos/{owner}/{repo}/environments": Operation<"/repos/{owner}/{repo}/environments", "get">;
-    /**
-     * @see https://docs.github.com/rest/deployments/environments#get-an-environment
-     */
-    "GET /repos/{owner}/{repo}/environments/{environment_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/deployments/branch-policies#list-deployment-branch-policies
-     */
-    "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", "get">;
-    /**
-     * @see https://docs.github.com/rest/deployments/branch-policies#get-a-deployment-branch-policy
-     */
-    "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/deployments/protection-rules#get-all-deployment-protection-rules-for-an-environment
-     */
-    "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules", "get">;
-    /**
-     * @see https://docs.github.com/rest/deployments/protection-rules#list-custom-deployment-rule-integrations-available-for-an-environment
-     */
-    "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps", "get">;
-    /**
-     * @see https://docs.github.com/rest/deployments/protection-rules#get-a-custom-deployment-protection-rule
-     */
-    "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-repository-events
-     */
-    "GET /repos/{owner}/{repo}/events": Operation<"/repos/{owner}/{repo}/events", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/forks#list-forks
-     */
-    "GET /repos/{owner}/{repo}/forks": Operation<"/repos/{owner}/{repo}/forks", "get">;
-    /**
-     * @see https://docs.github.com/rest/git/blobs#get-a-blob
-     */
-    "GET /repos/{owner}/{repo}/git/blobs/{file_sha}": Operation<"/repos/{owner}/{repo}/git/blobs/{file_sha}", "get">;
-    /**
-     * @see https://docs.github.com/rest/git/commits#get-a-commit-object
-     */
-    "GET /repos/{owner}/{repo}/git/commits/{commit_sha}": Operation<"/repos/{owner}/{repo}/git/commits/{commit_sha}", "get">;
-    /**
-     * @see https://docs.github.com/rest/git/refs#list-matching-references
-     */
-    "GET /repos/{owner}/{repo}/git/matching-refs/{ref}": Operation<"/repos/{owner}/{repo}/git/matching-refs/{ref}", "get">;
-    /**
-     * @see https://docs.github.com/rest/git/refs#get-a-reference
-     */
-    "GET /repos/{owner}/{repo}/git/ref/{ref}": Operation<"/repos/{owner}/{repo}/git/ref/{ref}", "get">;
-    /**
-     * @see https://docs.github.com/rest/git/tags#get-a-tag
-     */
-    "GET /repos/{owner}/{repo}/git/tags/{tag_sha}": Operation<"/repos/{owner}/{repo}/git/tags/{tag_sha}", "get">;
-    /**
-     * @see https://docs.github.com/rest/git/trees#get-a-tree
-     */
-    "GET /repos/{owner}/{repo}/git/trees/{tree_sha}": Operation<"/repos/{owner}/{repo}/git/trees/{tree_sha}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#list-repository-webhooks
-     */
-    "GET /repos/{owner}/{repo}/hooks": Operation<"/repos/{owner}/{repo}/hooks", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#get-a-repository-webhook
-     */
-    "GET /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#get-a-webhook-configuration-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/hooks/{hook_id}/config": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/config", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#list-deliveries-for-a-repository-webhook
-     */
-    "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#get-a-delivery-for-a-repository-webhook
-     */
-    "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/migrations/source-imports#get-an-import-status
-     */
-    "GET /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "get">;
-    /**
-     * @see https://docs.github.com/rest/migrations/source-imports#get-commit-authors
-     */
-    "GET /repos/{owner}/{repo}/import/authors": Operation<"/repos/{owner}/{repo}/import/authors", "get">;
-    /**
-     * @see https://docs.github.com/rest/migrations/source-imports#get-large-files
-     */
-    "GET /repos/{owner}/{repo}/import/large_files": Operation<"/repos/{owner}/{repo}/import/large_files", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/apps#get-a-repository-installation-for-the-authenticated-app
-     */
-    "GET /repos/{owner}/{repo}/installation": Operation<"/repos/{owner}/{repo}/installation", "get">;
-    /**
-     * @see https://docs.github.com/rest/interactions/repos#get-interaction-restrictions-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "get">;
-    /**
-     * @see https://docs.github.com/rest/collaborators/invitations#list-repository-invitations
-     */
-    "GET /repos/{owner}/{repo}/invitations": Operation<"/repos/{owner}/{repo}/invitations", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/issues#list-repository-issues
-     */
-    "GET /repos/{owner}/{repo}/issues": Operation<"/repos/{owner}/{repo}/issues", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/comments#list-issue-comments-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/issues/comments": Operation<"/repos/{owner}/{repo}/issues/comments", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/comments#get-an-issue-comment
-     */
-    "GET /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-an-issue-comment
-     */
-    "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/events#list-issue-events-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/issues/events": Operation<"/repos/{owner}/{repo}/issues/events", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/events#get-an-issue-event
-     */
-    "GET /repos/{owner}/{repo}/issues/events/{event_id}": Operation<"/repos/{owner}/{repo}/issues/events/{event_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/issues#get-an-issue
-     */
-    "GET /repos/{owner}/{repo}/issues/{issue_number}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/assignees#check-if-a-user-can-be-assigned-to-a-issue
-     */
-    "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/comments#list-issue-comments
-     */
-    "GET /repos/{owner}/{repo}/issues/{issue_number}/comments": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/comments", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/events#list-issue-events
-     */
-    "GET /repos/{owner}/{repo}/issues/{issue_number}/events": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/events", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/labels#list-labels-for-an-issue
-     */
-    "GET /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "get">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-an-issue
-     */
-    "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/timeline#list-timeline-events-for-an-issue
-     */
-    "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/timeline", "get">;
-    /**
-     * @see https://docs.github.com/rest/deploy-keys/deploy-keys#list-deploy-keys
-     */
-    "GET /repos/{owner}/{repo}/keys": Operation<"/repos/{owner}/{repo}/keys", "get">;
-    /**
-     * @see https://docs.github.com/rest/deploy-keys/deploy-keys#get-a-deploy-key
-     */
-    "GET /repos/{owner}/{repo}/keys/{key_id}": Operation<"/repos/{owner}/{repo}/keys/{key_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/labels#list-labels-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/labels": Operation<"/repos/{owner}/{repo}/labels", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/labels#get-a-label
-     */
-    "GET /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repository-languages
-     */
-    "GET /repos/{owner}/{repo}/languages": Operation<"/repos/{owner}/{repo}/languages", "get">;
-    /**
-     * @see https://docs.github.com/rest/licenses/licenses#get-the-license-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/license": Operation<"/repos/{owner}/{repo}/license", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/milestones#list-milestones
-     */
-    "GET /repos/{owner}/{repo}/milestones": Operation<"/repos/{owner}/{repo}/milestones", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/milestones#get-a-milestone
-     */
-    "GET /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/labels#list-labels-for-issues-in-a-milestone
-     */
-    "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}/labels", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/notifications#list-repository-notifications-for-the-authenticated-user
-     */
-    "GET /repos/{owner}/{repo}/notifications": Operation<"/repos/{owner}/{repo}/notifications", "get">;
-    /**
-     * @see https://docs.github.com/rest/pages/pages#get-a-apiname-pages-site
-     */
-    "GET /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "get">;
-    /**
-     * @see https://docs.github.com/rest/pages/pages#list-apiname-pages-builds
-     */
-    "GET /repos/{owner}/{repo}/pages/builds": Operation<"/repos/{owner}/{repo}/pages/builds", "get">;
-    /**
-     * @see https://docs.github.com/rest/pages/pages#get-latest-pages-build
-     */
-    "GET /repos/{owner}/{repo}/pages/builds/latest": Operation<"/repos/{owner}/{repo}/pages/builds/latest", "get">;
-    /**
-     * @see https://docs.github.com/rest/pages/pages#get-apiname-pages-build
-     */
-    "GET /repos/{owner}/{repo}/pages/builds/{build_id}": Operation<"/repos/{owner}/{repo}/pages/builds/{build_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/pages/pages#get-a-dns-health-check-for-github-pages
-     */
-    "GET /repos/{owner}/{repo}/pages/health": Operation<"/repos/{owner}/{repo}/pages/health", "get">;
-    /**
-     * @see https://docs.github.com/rest/projects/projects#list-repository-projects
-     */
-    "GET /repos/{owner}/{repo}/projects": Operation<"/repos/{owner}/{repo}/projects", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/custom-properties#get-all-custom-property-values-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/properties/values": Operation<"/repos/{owner}/{repo}/properties/values", "get">;
-    /**
-     * @see https://docs.github.com/rest/pulls/pulls#list-pull-requests
-     */
-    "GET /repos/{owner}/{repo}/pulls": Operation<"/repos/{owner}/{repo}/pulls", "get">;
-    /**
-     * @see https://docs.github.com/rest/pulls/comments#list-review-comments-in-a-repository
-     */
-    "GET /repos/{owner}/{repo}/pulls/comments": Operation<"/repos/{owner}/{repo}/pulls/comments", "get">;
-    /**
-     * @see https://docs.github.com/rest/pulls/comments#get-a-review-comment-for-a-pull-request
-     */
-    "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-pull-request-review-comment
-     */
-    "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "get">;
-    /**
-     * @see https://docs.github.com/rest/pulls/pulls#get-a-pull-request
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}", "get">;
-    /**
-     * @see https://docs.github.com/rest/pulls/comments#list-review-comments-on-a-pull-request
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments", "get">;
-    /**
-     * @see https://docs.github.com/rest/pulls/pulls#list-commits-on-a-pull-request
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/commits", "get">;
-    /**
-     * @see https://docs.github.com/rest/pulls/pulls#list-pull-requests-files
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/files": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/files", "get">;
-    /**
-     * @see https://docs.github.com/rest/pulls/pulls#check-if-a-pull-request-has-been-merged
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/merge": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/merge", "get">;
-    /**
-     * @see https://docs.github.com/rest/pulls/review-requests#get-all-requested-reviewers-for-a-pull-request
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "get">;
-    /**
-     * @see https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews", "get">;
-    /**
-     * @see https://docs.github.com/rest/pulls/reviews#get-a-review-for-a-pull-request
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/pulls/reviews#list-comments-for-a-pull-request-review
-     */
-    "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/contents#get-a-repository-readme
-     */
-    "GET /repos/{owner}/{repo}/readme": Operation<"/repos/{owner}/{repo}/readme", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/contents#get-a-repository-readme-for-a-directory
-     */
-    "GET /repos/{owner}/{repo}/readme/{dir}": Operation<"/repos/{owner}/{repo}/readme/{dir}", "get">;
-    /**
-     * @see https://docs.github.com/rest/releases/releases#list-releases
-     */
-    "GET /repos/{owner}/{repo}/releases": Operation<"/repos/{owner}/{repo}/releases", "get">;
-    /**
-     * @see https://docs.github.com/rest/releases/assets#get-a-release-asset
-     */
-    "GET /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/releases/releases#get-the-latest-release
-     */
-    "GET /repos/{owner}/{repo}/releases/latest": Operation<"/repos/{owner}/{repo}/releases/latest", "get">;
-    /**
-     * @see https://docs.github.com/rest/releases/releases#get-a-release-by-tag-name
-     */
-    "GET /repos/{owner}/{repo}/releases/tags/{tag}": Operation<"/repos/{owner}/{repo}/releases/tags/{tag}", "get">;
-    /**
-     * @see https://docs.github.com/rest/releases/releases#get-a-release
-     */
-    "GET /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/releases/assets#list-release-assets
-     */
-    "GET /repos/{owner}/{repo}/releases/{release_id}/assets": Operation<"/repos/{owner}/{repo}/releases/{release_id}/assets", "get">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-release
-     */
-    "GET /repos/{owner}/{repo}/releases/{release_id}/reactions": Operation<"/repos/{owner}/{repo}/releases/{release_id}/reactions", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/rules#get-rules-for-a-branch
-     */
-    "GET /repos/{owner}/{repo}/rules/branches/{branch}": Operation<"/repos/{owner}/{repo}/rules/branches/{branch}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/rules#get-all-repository-rulesets
-     */
-    "GET /repos/{owner}/{repo}/rulesets": Operation<"/repos/{owner}/{repo}/rulesets", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/rule-suites#list-repository-rule-suites
-     */
-    "GET /repos/{owner}/{repo}/rulesets/rule-suites": Operation<"/repos/{owner}/{repo}/rulesets/rule-suites", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/rule-suites#get-a-repository-rule-suite
-     */
-    "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}": Operation<"/repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/rules#get-a-repository-ruleset
-     */
-    "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}": Operation<"/repos/{owner}/{repo}/rulesets/{ruleset_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/secret-scanning/alerts": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts", "get">;
-    /**
-     * @see https://docs.github.com/rest/secret-scanning/secret-scanning#get-a-secret-scanning-alert
-     */
-    "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", "get">;
-    /**
-     * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-locations-for-a-secret-scanning-alert
-     */
-    "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "get">;
-    /**
-     * @see https://docs.github.com/rest/security-advisories/repository-advisories#list-repository-security-advisories
-     */
-    "GET /repos/{owner}/{repo}/security-advisories": Operation<"/repos/{owner}/{repo}/security-advisories", "get">;
-    /**
-     * @see https://docs.github.com/rest/security-advisories/repository-advisories#get-a-repository-security-advisory
-     */
-    "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}": Operation<"/repos/{owner}/{repo}/security-advisories/{ghsa_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/starring#list-stargazers
-     */
-    "GET /repos/{owner}/{repo}/stargazers": Operation<"/repos/{owner}/{repo}/stargazers", "get">;
-    /**
-     * @see https://docs.github.com/rest/metrics/statistics#get-the-weekly-commit-activity
-     */
-    "GET /repos/{owner}/{repo}/stats/code_frequency": Operation<"/repos/{owner}/{repo}/stats/code_frequency", "get">;
-    /**
-     * @see https://docs.github.com/rest/metrics/statistics#get-the-last-year-of-commit-activity
-     */
-    "GET /repos/{owner}/{repo}/stats/commit_activity": Operation<"/repos/{owner}/{repo}/stats/commit_activity", "get">;
-    /**
-     * @see https://docs.github.com/rest/metrics/statistics#get-all-contributor-commit-activity
-     */
-    "GET /repos/{owner}/{repo}/stats/contributors": Operation<"/repos/{owner}/{repo}/stats/contributors", "get">;
-    /**
-     * @see https://docs.github.com/rest/metrics/statistics#get-the-weekly-commit-count
-     */
-    "GET /repos/{owner}/{repo}/stats/participation": Operation<"/repos/{owner}/{repo}/stats/participation", "get">;
-    /**
-     * @see https://docs.github.com/rest/metrics/statistics#get-the-hourly-commit-count-for-each-day
-     */
-    "GET /repos/{owner}/{repo}/stats/punch_card": Operation<"/repos/{owner}/{repo}/stats/punch_card", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/watching#list-watchers
-     */
-    "GET /repos/{owner}/{repo}/subscribers": Operation<"/repos/{owner}/{repo}/subscribers", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/watching#get-a-repository-subscription
-     */
-    "GET /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repository-tags
-     */
-    "GET /repos/{owner}/{repo}/tags": Operation<"/repos/{owner}/{repo}/tags", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/tags#list-tag-protection-states-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/tags/protection": Operation<"/repos/{owner}/{repo}/tags/protection", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/contents#download-a-repository-archive-tar
-     */
-    "GET /repos/{owner}/{repo}/tarball/{ref}": Operation<"/repos/{owner}/{repo}/tarball/{ref}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repository-teams
-     */
-    "GET /repos/{owner}/{repo}/teams": Operation<"/repos/{owner}/{repo}/teams", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#get-all-repository-topics
-     */
-    "GET /repos/{owner}/{repo}/topics": Operation<"/repos/{owner}/{repo}/topics", "get">;
-    /**
-     * @see https://docs.github.com/rest/metrics/traffic#get-repository-clones
-     */
-    "GET /repos/{owner}/{repo}/traffic/clones": Operation<"/repos/{owner}/{repo}/traffic/clones", "get">;
-    /**
-     * @see https://docs.github.com/rest/metrics/traffic#get-top-referral-paths
-     */
-    "GET /repos/{owner}/{repo}/traffic/popular/paths": Operation<"/repos/{owner}/{repo}/traffic/popular/paths", "get">;
-    /**
-     * @see https://docs.github.com/rest/metrics/traffic#get-top-referral-sources
-     */
-    "GET /repos/{owner}/{repo}/traffic/popular/referrers": Operation<"/repos/{owner}/{repo}/traffic/popular/referrers", "get">;
-    /**
-     * @see https://docs.github.com/rest/metrics/traffic#get-page-views
-     */
-    "GET /repos/{owner}/{repo}/traffic/views": Operation<"/repos/{owner}/{repo}/traffic/views", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#check-if-vulnerability-alerts-are-enabled-for-a-repository
-     */
-    "GET /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/contents#download-a-repository-archive-zip
-     */
-    "GET /repos/{owner}/{repo}/zipball/{ref}": Operation<"/repos/{owner}/{repo}/zipball/{ref}", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-public-repositories
-     */
-    "GET /repositories": Operation<"/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#list-environment-secrets
-     */
-    "GET /repositories/{repository_id}/environments/{environment_name}/secrets": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#get-an-environment-public-key
-     */
-    "GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets/public-key", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#get-an-environment-secret
-     */
-    "GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#list-environment-variables
-     */
-    "GET /repositories/{repository_id}/environments/{environment_name}/variables": Operation<"/repositories/{repository_id}/environments/{environment_name}/variables", "get">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#get-an-environment-variable
-     */
-    "GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}": Operation<"/repositories/{repository_id}/environments/{environment_name}/variables/{name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/search/search#search-code
-     */
-    "GET /search/code": Operation<"/search/code", "get">;
-    /**
-     * @see https://docs.github.com/rest/search/search#search-commits
-     */
-    "GET /search/commits": Operation<"/search/commits", "get">;
-    /**
-     * @see https://docs.github.com/rest/search/search#search-issues-and-pull-requests
-     */
-    "GET /search/issues": Operation<"/search/issues", "get">;
-    /**
-     * @see https://docs.github.com/rest/search/search#search-labels
-     */
-    "GET /search/labels": Operation<"/search/labels", "get">;
-    /**
-     * @see https://docs.github.com/rest/search/search#search-repositories
-     */
-    "GET /search/repositories": Operation<"/search/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/search/search#search-topics
-     */
-    "GET /search/topics": Operation<"/search/topics", "get">;
-    /**
-     * @see https://docs.github.com/rest/search/search#search-users
-     */
-    "GET /search/users": Operation<"/search/users", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#get-a-team-legacy
-     */
-    "GET /teams/{team_id}": Operation<"/teams/{team_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussions#list-discussions-legacy
-     */
-    "GET /teams/{team_id}/discussions": Operation<"/teams/{team_id}/discussions", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussions#get-a-discussion-legacy
-     */
-    "GET /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments-legacy
-     */
-    "GET /teams/{team_id}/discussions/{discussion_number}/comments": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussion-comments#get-a-discussion-comment-legacy
-     */
-    "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "get">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment-legacy
-     */
-    "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "get">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-legacy
-     */
-    "GET /teams/{team_id}/discussions/{discussion_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/reactions", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#list-pending-team-invitations-legacy
-     */
-    "GET /teams/{team_id}/invitations": Operation<"/teams/{team_id}/invitations", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#list-team-members-legacy
-     */
-    "GET /teams/{team_id}/members": Operation<"/teams/{team_id}/members", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#get-team-member-legacy
-     */
-    "GET /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#get-team-membership-for-a-user-legacy
-     */
-    "GET /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-team-projects-legacy
-     */
-    "GET /teams/{team_id}/projects": Operation<"/teams/{team_id}/projects", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-project-legacy
-     */
-    "GET /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-team-repositories-legacy
-     */
-    "GET /teams/{team_id}/repos": Operation<"/teams/{team_id}/repos", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#check-team-permissions-for-a-repository-legacy
-     */
-    "GET /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-child-teams-legacy
-     */
-    "GET /teams/{team_id}/teams": Operation<"/teams/{team_id}/teams", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/users#get-the-authenticated-user
-     */
-    "GET /user": Operation<"/user", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/blocking#list-users-blocked-by-the-authenticated-user
-     */
-    "GET /user/blocks": Operation<"/user/blocks", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/blocking#check-if-a-user-is-blocked-by-the-authenticated-user
-     */
-    "GET /user/blocks/{username}": Operation<"/user/blocks/{username}", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#list-codespaces-for-the-authenticated-user
-     */
-    "GET /user/codespaces": Operation<"/user/codespaces", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/secrets#list-secrets-for-the-authenticated-user
-     */
-    "GET /user/codespaces/secrets": Operation<"/user/codespaces/secrets", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/secrets#get-public-key-for-the-authenticated-user
-     */
-    "GET /user/codespaces/secrets/public-key": Operation<"/user/codespaces/secrets/public-key", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/secrets#get-a-secret-for-the-authenticated-user
-     */
-    "GET /user/codespaces/secrets/{secret_name}": Operation<"/user/codespaces/secrets/{secret_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/secrets#list-selected-repositories-for-a-user-secret
-     */
-    "GET /user/codespaces/secrets/{secret_name}/repositories": Operation<"/user/codespaces/secrets/{secret_name}/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#get-a-codespace-for-the-authenticated-user
-     */
-    "GET /user/codespaces/{codespace_name}": Operation<"/user/codespaces/{codespace_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#get-details-about-a-codespace-export
-     */
-    "GET /user/codespaces/{codespace_name}/exports/{export_id}": Operation<"/user/codespaces/{codespace_name}/exports/{export_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/machines#list-machine-types-for-a-codespace
-     */
-    "GET /user/codespaces/{codespace_name}/machines": Operation<"/user/codespaces/{codespace_name}/machines", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#get-list-of-conflicting-packages-during-docker-migration-for-authenticated-user
-     */
-    "GET /user/docker/conflicts": Operation<"/user/docker/conflicts", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/emails#list-email-addresses-for-the-authenticated-user
-     */
-    "GET /user/emails": Operation<"/user/emails", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/followers#list-followers-of-the-authenticated-user
-     */
-    "GET /user/followers": Operation<"/user/followers", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/followers#list-the-people-the-authenticated-user-follows
-     */
-    "GET /user/following": Operation<"/user/following", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/followers#check-if-a-person-is-followed-by-the-authenticated-user
-     */
-    "GET /user/following/{username}": Operation<"/user/following/{username}", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/gpg-keys#list-gpg-keys-for-the-authenticated-user
-     */
-    "GET /user/gpg_keys": Operation<"/user/gpg_keys", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/gpg-keys#get-a-gpg-key-for-the-authenticated-user
-     */
-    "GET /user/gpg_keys/{gpg_key_id}": Operation<"/user/gpg_keys/{gpg_key_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/installations#list-app-installations-accessible-to-the-user-access-token
-     */
-    "GET /user/installations": Operation<"/user/installations", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/installations#list-repositories-accessible-to-the-user-access-token
-     */
-    "GET /user/installations/{installation_id}/repositories": Operation<"/user/installations/{installation_id}/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/interactions/user#get-interaction-restrictions-for-your-public-repositories
-     */
-    "GET /user/interaction-limits": Operation<"/user/interaction-limits", "get">;
-    /**
-     * @see https://docs.github.com/rest/issues/issues#list-user-account-issues-assigned-to-the-authenticated-user
-     */
-    "GET /user/issues": Operation<"/user/issues", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/keys#list-public-ssh-keys-for-the-authenticated-user
-     */
-    "GET /user/keys": Operation<"/user/keys", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/keys#get-a-public-ssh-key-for-the-authenticated-user
-     */
-    "GET /user/keys/{key_id}": Operation<"/user/keys/{key_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#list-subscriptions-for-the-authenticated-user
-     */
-    "GET /user/marketplace_purchases": Operation<"/user/marketplace_purchases", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/marketplace#list-subscriptions-for-the-authenticated-user-stubbed
-     */
-    "GET /user/marketplace_purchases/stubbed": Operation<"/user/marketplace_purchases/stubbed", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#list-organization-memberships-for-the-authenticated-user
-     */
-    "GET /user/memberships/orgs": Operation<"/user/memberships/orgs", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#get-an-organization-membership-for-the-authenticated-user
-     */
-    "GET /user/memberships/orgs/{org}": Operation<"/user/memberships/orgs/{org}", "get">;
-    /**
-     * @see https://docs.github.com/rest/migrations/users#list-user-migrations
-     */
-    "GET /user/migrations": Operation<"/user/migrations", "get">;
-    /**
-     * @see https://docs.github.com/rest/migrations/users#get-a-user-migration-status
-     */
-    "GET /user/migrations/{migration_id}": Operation<"/user/migrations/{migration_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/migrations/users#download-a-user-migration-archive
-     */
-    "GET /user/migrations/{migration_id}/archive": Operation<"/user/migrations/{migration_id}/archive", "get">;
-    /**
-     * @see https://docs.github.com/rest/migrations/users#list-repositories-for-a-user-migration
-     */
-    "GET /user/migrations/{migration_id}/repositories": Operation<"/user/migrations/{migration_id}/repositories", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/orgs#list-organizations-for-the-authenticated-user
-     */
-    "GET /user/orgs": Operation<"/user/orgs", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#list-packages-for-the-authenticated-users-namespace
-     */
-    "GET /user/packages": Operation<"/user/packages", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#get-a-package-for-the-authenticated-user
-     */
-    "GET /user/packages/{package_type}/{package_name}": Operation<"/user/packages/{package_type}/{package_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-the-authenticated-user
-     */
-    "GET /user/packages/{package_type}/{package_name}/versions": Operation<"/user/packages/{package_type}/{package_name}/versions", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#get-a-package-version-for-the-authenticated-user
-     */
-    "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/user/packages/{package_type}/{package_name}/versions/{package_version_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/emails#list-public-email-addresses-for-the-authenticated-user
-     */
-    "GET /user/public_emails": Operation<"/user/public_emails", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repositories-for-the-authenticated-user
-     */
-    "GET /user/repos": Operation<"/user/repos", "get">;
-    /**
-     * @see https://docs.github.com/rest/collaborators/invitations#list-repository-invitations-for-the-authenticated-user
-     */
-    "GET /user/repository_invitations": Operation<"/user/repository_invitations", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/social-accounts#list-social-accounts-for-the-authenticated-user
-     */
-    "GET /user/social_accounts": Operation<"/user/social_accounts", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/ssh-signing-keys#list-ssh-signing-keys-for-the-authenticated-user
-     */
-    "GET /user/ssh_signing_keys": Operation<"/user/ssh_signing_keys", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/ssh-signing-keys#get-an-ssh-signing-key-for-the-authenticated-user
-     */
-    "GET /user/ssh_signing_keys/{ssh_signing_key_id}": Operation<"/user/ssh_signing_keys/{ssh_signing_key_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/starring#list-repositories-starred-by-the-authenticated-user
-     */
-    "GET /user/starred": Operation<"/user/starred", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/starring#check-if-a-repository-is-starred-by-the-authenticated-user
-     */
-    "GET /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/watching#list-repositories-watched-by-the-authenticated-user
-     */
-    "GET /user/subscriptions": Operation<"/user/subscriptions", "get">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#list-teams-for-the-authenticated-user
-     */
-    "GET /user/teams": Operation<"/user/teams", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/users#list-users
-     */
-    "GET /users": Operation<"/users", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/users#get-a-user
-     */
-    "GET /users/{username}": Operation<"/users/{username}", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#get-list-of-conflicting-packages-during-docker-migration-for-user
-     */
-    "GET /users/{username}/docker/conflicts": Operation<"/users/{username}/docker/conflicts", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-events-for-the-authenticated-user
-     */
-    "GET /users/{username}/events": Operation<"/users/{username}/events", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-organization-events-for-the-authenticated-user
-     */
-    "GET /users/{username}/events/orgs/{org}": Operation<"/users/{username}/events/orgs/{org}", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-public-events-for-a-user
-     */
-    "GET /users/{username}/events/public": Operation<"/users/{username}/events/public", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/followers#list-followers-of-a-user
-     */
-    "GET /users/{username}/followers": Operation<"/users/{username}/followers", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/followers#list-the-people-a-user-follows
-     */
-    "GET /users/{username}/following": Operation<"/users/{username}/following", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/followers#check-if-a-user-follows-another-user
-     */
-    "GET /users/{username}/following/{target_user}": Operation<"/users/{username}/following/{target_user}", "get">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#list-gists-for-a-user
-     */
-    "GET /users/{username}/gists": Operation<"/users/{username}/gists", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/gpg-keys#list-gpg-keys-for-a-user
-     */
-    "GET /users/{username}/gpg_keys": Operation<"/users/{username}/gpg_keys", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/users#get-contextual-information-for-a-user
-     */
-    "GET /users/{username}/hovercard": Operation<"/users/{username}/hovercard", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/apps#get-a-user-installation-for-the-authenticated-app
-     */
-    "GET /users/{username}/installation": Operation<"/users/{username}/installation", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/keys#list-public-keys-for-a-user
-     */
-    "GET /users/{username}/keys": Operation<"/users/{username}/keys", "get">;
-    /**
-     * @see https://docs.github.com/rest/orgs/orgs#list-organizations-for-a-user
-     */
-    "GET /users/{username}/orgs": Operation<"/users/{username}/orgs", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#list-packages-for-a-user
-     */
-    "GET /users/{username}/packages": Operation<"/users/{username}/packages", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#get-a-package-for-a-user
-     */
-    "GET /users/{username}/packages/{package_type}/{package_name}": Operation<"/users/{username}/packages/{package_type}/{package_name}", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-a-user
-     */
-    "GET /users/{username}/packages/{package_type}/{package_name}/versions": Operation<"/users/{username}/packages/{package_type}/{package_name}/versions", "get">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#get-a-package-version-for-a-user
-     */
-    "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}", "get">;
-    /**
-     * @see https://docs.github.com/rest/projects/projects#list-user-projects
-     */
-    "GET /users/{username}/projects": Operation<"/users/{username}/projects", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-events-received-by-the-authenticated-user
-     */
-    "GET /users/{username}/received_events": Operation<"/users/{username}/received_events", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/events#list-public-events-received-by-a-user
-     */
-    "GET /users/{username}/received_events/public": Operation<"/users/{username}/received_events/public", "get">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#list-repositories-for-a-user
-     */
-    "GET /users/{username}/repos": Operation<"/users/{username}/repos", "get">;
-    /**
-     * @see https://docs.github.com/rest/billing/billing#get-github-actions-billing-for-a-user
-     */
-    "GET /users/{username}/settings/billing/actions": Operation<"/users/{username}/settings/billing/actions", "get">;
-    /**
-     * @see https://docs.github.com/rest/billing/billing#get-github-packages-billing-for-a-user
-     */
-    "GET /users/{username}/settings/billing/packages": Operation<"/users/{username}/settings/billing/packages", "get">;
-    /**
-     * @see https://docs.github.com/rest/billing/billing#get-shared-storage-billing-for-a-user
-     */
-    "GET /users/{username}/settings/billing/shared-storage": Operation<"/users/{username}/settings/billing/shared-storage", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/social-accounts#list-social-accounts-for-a-user
-     */
-    "GET /users/{username}/social_accounts": Operation<"/users/{username}/social_accounts", "get">;
-    /**
-     * @see https://docs.github.com/rest/users/ssh-signing-keys#list-ssh-signing-keys-for-a-user
-     */
-    "GET /users/{username}/ssh_signing_keys": Operation<"/users/{username}/ssh_signing_keys", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/starring#list-repositories-starred-by-a-user
-     */
-    "GET /users/{username}/starred": Operation<"/users/{username}/starred", "get">;
-    /**
-     * @see https://docs.github.com/rest/activity/watching#list-repositories-watched-by-a-user
-     */
-    "GET /users/{username}/subscriptions": Operation<"/users/{username}/subscriptions", "get">;
-    /**
-     * @see https://docs.github.com/rest/meta/meta#get-all-api-versions
-     */
-    "GET /versions": Operation<"/versions", "get">;
-    /**
-     * @see https://docs.github.com/rest/meta/meta#get-the-zen-of-github
-     */
-    "GET /zen": Operation<"/zen", "get">;
-    /**
-     * @see https://docs.github.com/rest/apps/webhooks#update-a-webhook-configuration-for-an-app
-     */
-    "PATCH /app/hook/config": Operation<"/app/hook/config", "patch">;
-    /**
-     * @see https://docs.github.com/rest/apps/oauth-applications#reset-a-token
-     */
-    "PATCH /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "patch">;
-    /**
-     * @see https://docs.github.com/rest/reference/gists/#update-a-gist
-     */
-    "PATCH /gists/{gist_id}": Operation<"/gists/{gist_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/gists/comments#update-a-gist-comment
-     */
-    "PATCH /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/activity/notifications#mark-a-thread-as-read
-     */
-    "PATCH /notifications/threads/{thread_id}": Operation<"/notifications/threads/{thread_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/orgs/orgs#update-an-organization
-     */
-    "PATCH /orgs/{org}": Operation<"/orgs/{org}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#update-an-organization-variable
-     */
-    "PATCH /orgs/{org}/actions/variables/{name}": Operation<"/orgs/{org}/actions/variables/{name}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#update-an-organization-webhook
-     */
-    "PATCH /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#update-a-webhook-configuration-for-an-organization
-     */
-    "PATCH /orgs/{org}/hooks/{hook_id}/config": Operation<"/orgs/{org}/hooks/{hook_id}/config", "patch">;
-    /**
-     * @see https://docs.github.com/rest/orgs/custom-properties#create-or-update-custom-properties-for-an-organization
-     */
-    "PATCH /orgs/{org}/properties/schema": Operation<"/orgs/{org}/properties/schema", "patch">;
-    /**
-     * @see https://docs.github.com/rest/orgs/custom-properties#create-or-update-custom-property-values-for-organization-repositories
-     */
-    "PATCH /orgs/{org}/properties/values": Operation<"/orgs/{org}/properties/values", "patch">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#update-a-team
-     */
-    "PATCH /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussions#update-a-discussion
-     */
-    "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussion-comments#update-a-discussion-comment
-     */
-    "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/projects/cards#update-an-existing-project-card
-     */
-    "PATCH /projects/columns/cards/{card_id}": Operation<"/projects/columns/cards/{card_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/projects/columns#update-an-existing-project-column
-     */
-    "PATCH /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/projects/projects#update-a-project
-     */
-    "PATCH /projects/{project_id}": Operation<"/projects/{project_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#update-a-repository
-     */
-    "PATCH /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#update-a-repository-variable
-     */
-    "PATCH /repos/{owner}/{repo}/actions/variables/{name}": Operation<"/repos/{owner}/{repo}/actions/variables/{name}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#update-pull-request-review-protection
-     */
-    "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "patch">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#update-status-check-protection
-     */
-    "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "patch">;
-    /**
-     * @see https://docs.github.com/rest/checks/runs#update-a-check-run
-     */
-    "PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/checks/suites#update-repository-preferences-for-check-suites
-     */
-    "PATCH /repos/{owner}/{repo}/check-suites/preferences": Operation<"/repos/{owner}/{repo}/check-suites/preferences", "patch">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#update-a-code-scanning-alert
-     */
-    "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#update-a-code-scanning-default-setup-configuration
-     */
-    "PATCH /repos/{owner}/{repo}/code-scanning/default-setup": Operation<"/repos/{owner}/{repo}/code-scanning/default-setup", "patch">;
-    /**
-     * @see https://docs.github.com/rest/commits/comments#update-a-commit-comment
-     */
-    "PATCH /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/alerts#update-a-dependabot-alert
-     */
-    "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/dependabot/alerts/{alert_number}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/git/refs#update-a-reference
-     */
-    "PATCH /repos/{owner}/{repo}/git/refs/{ref}": Operation<"/repos/{owner}/{repo}/git/refs/{ref}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#update-a-repository-webhook
-     */
-    "PATCH /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#update-a-webhook-configuration-for-a-repository
-     */
-    "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/config", "patch">;
-    /**
-     * @see https://docs.github.com/rest/migrations/source-imports#update-an-import
-     */
-    "PATCH /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "patch">;
-    /**
-     * @see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author
-     */
-    "PATCH /repos/{owner}/{repo}/import/authors/{author_id}": Operation<"/repos/{owner}/{repo}/import/authors/{author_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference
-     */
-    "PATCH /repos/{owner}/{repo}/import/lfs": Operation<"/repos/{owner}/{repo}/import/lfs", "patch">;
-    /**
-     * @see https://docs.github.com/rest/collaborators/invitations#update-a-repository-invitation
-     */
-    "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}": Operation<"/repos/{owner}/{repo}/invitations/{invitation_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/issues/comments#update-an-issue-comment
-     */
-    "PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/issues/issues#update-an-issue
-     */
-    "PATCH /repos/{owner}/{repo}/issues/{issue_number}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/issues/labels#update-a-label
-     */
-    "PATCH /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/issues/milestones#update-a-milestone
-     */
-    "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/pulls/comments#update-a-review-comment-for-a-pull-request
-     */
-    "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/pulls/pulls#update-a-pull-request
-     */
-    "PATCH /repos/{owner}/{repo}/pulls/{pull_number}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/releases/assets#update-a-release-asset
-     */
-    "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/releases/releases#update-a-release
-     */
-    "PATCH /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/secret-scanning/secret-scanning#update-a-secret-scanning-alert
-     */
-    "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/security-advisories/repository-advisories#update-a-repository-security-advisory
-     */
-    "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}": Operation<"/repos/{owner}/{repo}/security-advisories/{ghsa_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#update-an-environment-variable
-     */
-    "PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}": Operation<"/repositories/{repository_id}/environments/{environment_name}/variables/{name}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#update-a-team-legacy
-     */
-    "PATCH /teams/{team_id}": Operation<"/teams/{team_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussions#update-a-discussion-legacy
-     */
-    "PATCH /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussion-comments#update-a-discussion-comment-legacy
-     */
-    "PATCH /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/users/users#update-the-authenticated-user
-     */
-    "PATCH /user": Operation<"/user", "patch">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#update-a-codespace-for-the-authenticated-user
-     */
-    "PATCH /user/codespaces/{codespace_name}": Operation<"/user/codespaces/{codespace_name}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user
-     */
-    "PATCH /user/email/visibility": Operation<"/user/email/visibility", "patch">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#update-an-organization-membership-for-the-authenticated-user
-     */
-    "PATCH /user/memberships/orgs/{org}": Operation<"/user/memberships/orgs/{org}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/collaborators/invitations#accept-a-repository-invitation
-     */
-    "PATCH /user/repository_invitations/{invitation_id}": Operation<"/user/repository_invitations/{invitation_id}", "patch">;
-    /**
-     * @see https://docs.github.com/rest/apps/apps#create-a-github-app-from-a-manifest
-     */
-    "POST /app-manifests/{code}/conversions": Operation<"/app-manifests/{code}/conversions", "post">;
-    /**
-     * @see https://docs.github.com/rest/apps/webhooks#redeliver-a-delivery-for-an-app-webhook
-     */
-    "POST /app/hook/deliveries/{delivery_id}/attempts": Operation<"/app/hook/deliveries/{delivery_id}/attempts", "post">;
-    /**
-     * @see https://docs.github.com/rest/apps/apps#create-an-installation-access-token-for-an-app
-     */
-    "POST /app/installations/{installation_id}/access_tokens": Operation<"/app/installations/{installation_id}/access_tokens", "post">;
-    /**
-     * @see https://docs.github.com/rest/apps/oauth-applications#check-a-token
-     */
-    "POST /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "post">;
-    /**
-     * @see https://docs.github.com/rest/apps/apps#create-a-scoped-access-token
-     */
-    "POST /applications/{client_id}/token/scoped": Operation<"/applications/{client_id}/token/scoped", "post">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#create-a-gist
-     */
-    "POST /gists": Operation<"/gists", "post">;
-    /**
-     * @see https://docs.github.com/rest/gists/comments#create-a-gist-comment
-     */
-    "POST /gists/{gist_id}/comments": Operation<"/gists/{gist_id}/comments", "post">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#fork-a-gist
-     */
-    "POST /gists/{gist_id}/forks": Operation<"/gists/{gist_id}/forks", "post">;
-    /**
-     * @see https://docs.github.com/rest/markdown/markdown#render-a-markdown-document
-     */
-    "POST /markdown": Operation<"/markdown", "post">;
-    /**
-     * @see https://docs.github.com/rest/markdown/markdown#render-a-markdown-document-in-raw-mode
-     */
-    "POST /markdown/raw": Operation<"/markdown/raw", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#create-configuration-for-a-just-in-time-runner-for-an-organization
-     */
-    "POST /orgs/{org}/actions/runners/generate-jitconfig": Operation<"/orgs/{org}/actions/runners/generate-jitconfig", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#create-a-registration-token-for-an-organization
-     */
-    "POST /orgs/{org}/actions/runners/registration-token": Operation<"/orgs/{org}/actions/runners/registration-token", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#create-a-remove-token-for-an-organization
-     */
-    "POST /orgs/{org}/actions/runners/remove-token": Operation<"/orgs/{org}/actions/runners/remove-token", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#add-custom-labels-to-a-self-hosted-runner-for-an-organization
-     */
-    "POST /orgs/{org}/actions/runners/{runner_id}/labels": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#create-an-organization-variable
-     */
-    "POST /orgs/{org}/actions/variables": Operation<"/orgs/{org}/actions/variables", "post">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organizations#add-users-to-codespaces-access-for-an-organization
-     */
-    "POST /orgs/{org}/codespaces/access/selected_users": Operation<"/orgs/{org}/codespaces/access/selected_users", "post">;
-    /**
-     * @see https://docs.github.com/rest/copilot/copilot-for-business#add-teams-to-the-copilot-for-business-subscription-for-an-organization
-     */
-    "POST /orgs/{org}/copilot/billing/selected_teams": Operation<"/orgs/{org}/copilot/billing/selected_teams", "post">;
-    /**
-     * @see https://docs.github.com/rest/copilot/copilot-for-business#add-users-to-the-copilot-for-business-subscription-for-an-organization
-     */
-    "POST /orgs/{org}/copilot/billing/selected_users": Operation<"/orgs/{org}/copilot/billing/selected_users", "post">;
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#create-an-organization-webhook
-     */
-    "POST /orgs/{org}/hooks": Operation<"/orgs/{org}/hooks", "post">;
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#redeliver-a-delivery-for-an-organization-webhook
-     */
-    "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts": Operation<"/orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts", "post">;
-    /**
-     * @see https://docs.github.com/rest/orgs/webhooks#ping-an-organization-webhook
-     */
-    "POST /orgs/{org}/hooks/{hook_id}/pings": Operation<"/orgs/{org}/hooks/{hook_id}/pings", "post">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#create-an-organization-invitation
-     */
-    "POST /orgs/{org}/invitations": Operation<"/orgs/{org}/invitations", "post">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organizations#stop-a-codespace-for-an-organization-user
-     */
-    "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop": Operation<"/orgs/{org}/members/{username}/codespaces/{codespace_name}/stop", "post">;
-    /**
-     * @see https://docs.github.com/rest/migrations/orgs#start-an-organization-migration
-     */
-    "POST /orgs/{org}/migrations": Operation<"/orgs/{org}/migrations", "post">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#restore-a-package-for-an-organization
-     */
-    "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/restore", "post">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#restore-package-version-for-an-organization
-     */
-    "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", "post">;
-    /**
-     * @see https://docs.github.com/rest/orgs/personal-access-tokens#review-requests-to-access-organization-resources-with-fine-grained-personal-access-tokens
-     */
-    "POST /orgs/{org}/personal-access-token-requests": Operation<"/orgs/{org}/personal-access-token-requests", "post">;
-    /**
-     * @see https://docs.github.com/rest/orgs/personal-access-tokens#review-a-request-to-access-organization-resources-with-a-fine-grained-personal-access-token
-     */
-    "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}": Operation<"/orgs/{org}/personal-access-token-requests/{pat_request_id}", "post">;
-    /**
-     * @see https://docs.github.com/rest/orgs/personal-access-tokens#update-the-access-to-organization-resources-via-fine-grained-personal-access-tokens
-     */
-    "POST /orgs/{org}/personal-access-tokens": Operation<"/orgs/{org}/personal-access-tokens", "post">;
-    /**
-     * @see https://docs.github.com/rest/orgs/personal-access-tokens#update-the-access-a-fine-grained-personal-access-token-has-to-organization-resources
-     */
-    "POST /orgs/{org}/personal-access-tokens/{pat_id}": Operation<"/orgs/{org}/personal-access-tokens/{pat_id}", "post">;
-    /**
-     * @see https://docs.github.com/rest/projects/projects#create-an-organization-project
-     */
-    "POST /orgs/{org}/projects": Operation<"/orgs/{org}/projects", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#create-an-organization-repository
-     */
-    "POST /orgs/{org}/repos": Operation<"/orgs/{org}/repos", "post">;
-    /**
-     * @see https://docs.github.com/rest/orgs/rules#create-an-organization-repository-ruleset
-     */
-    "POST /orgs/{org}/rulesets": Operation<"/orgs/{org}/rulesets", "post">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#create-a-team
-     */
-    "POST /orgs/{org}/teams": Operation<"/orgs/{org}/teams", "post">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussions#create-a-discussion
-     */
-    "POST /orgs/{org}/teams/{team_slug}/discussions": Operation<"/orgs/{org}/teams/{team_slug}/discussions", "post">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussion-comments#create-a-discussion-comment
-     */
-    "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "post">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-comment
-     */
-    "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "post">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion
-     */
-    "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "post">;
-    /**
-     * @see https://docs.github.com/rest/orgs/orgs#enable-or-disable-a-security-feature-for-an-organization
-     */
-    "POST /orgs/{org}/{security_product}/{enablement}": Operation<"/orgs/{org}/{security_product}/{enablement}", "post">;
-    /**
-     * @see https://docs.github.com/rest/projects/cards#move-a-project-card
-     */
-    "POST /projects/columns/cards/{card_id}/moves": Operation<"/projects/columns/cards/{card_id}/moves", "post">;
-    /**
-     * @see https://docs.github.com/rest/projects/cards#create-a-project-card
-     */
-    "POST /projects/columns/{column_id}/cards": Operation<"/projects/columns/{column_id}/cards", "post">;
-    /**
-     * @see https://docs.github.com/rest/projects/columns#move-a-project-column
-     */
-    "POST /projects/columns/{column_id}/moves": Operation<"/projects/columns/{column_id}/moves", "post">;
-    /**
-     * @see https://docs.github.com/rest/projects/columns#create-a-project-column
-     */
-    "POST /projects/{project_id}/columns": Operation<"/projects/{project_id}/columns", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#re-run-a-job-from-a-workflow-run
-     */
-    "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun": Operation<"/repos/{owner}/{repo}/actions/jobs/{job_id}/rerun", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#create-configuration-for-a-just-in-time-runner-for-a-repository
-     */
-    "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig": Operation<"/repos/{owner}/{repo}/actions/runners/generate-jitconfig", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#create-a-registration-token-for-a-repository
-     */
-    "POST /repos/{owner}/{repo}/actions/runners/registration-token": Operation<"/repos/{owner}/{repo}/actions/runners/registration-token", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#create-a-remove-token-for-a-repository
-     */
-    "POST /repos/{owner}/{repo}/actions/runners/remove-token": Operation<"/repos/{owner}/{repo}/actions/runners/remove-token", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#add-custom-labels-to-a-self-hosted-runner-for-a-repository
-     */
-    "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#approve-a-workflow-run-for-a-fork-pull-request
-     */
-    "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/approve", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#cancel-a-workflow-run
-     */
-    "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/cancel", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#review-custom-deployment-protection-rules-for-a-workflow-run
-     */
-    "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#force-cancel-a-workflow-run
-     */
-    "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#review-pending-deployments-for-a-workflow-run
-     */
-    "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#re-run-a-workflow
-     */
-    "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/rerun", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflow-runs#re-run-failed-jobs-from-a-workflow-run
-     */
-    "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#create-a-repository-variable
-     */
-    "POST /repos/{owner}/{repo}/actions/variables": Operation<"/repos/{owner}/{repo}/actions/variables", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflows#create-a-workflow-dispatch-event
-     */
-    "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/autolinks#create-an-autolink-reference-for-a-repository
-     */
-    "POST /repos/{owner}/{repo}/autolinks": Operation<"/repos/{owner}/{repo}/autolinks", "post">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#set-admin-branch-protection
-     */
-    "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "post">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#create-commit-signature-protection
-     */
-    "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "post">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#add-status-check-contexts
-     */
-    "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "post">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#add-app-access-restrictions
-     */
-    "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "post">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#add-team-access-restrictions
-     */
-    "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "post">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#add-user-access-restrictions
-     */
-    "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "post">;
-    /**
-     * @see https://docs.github.com/rest/branches/branches#rename-a-branch
-     */
-    "POST /repos/{owner}/{repo}/branches/{branch}/rename": Operation<"/repos/{owner}/{repo}/branches/{branch}/rename", "post">;
-    /**
-     * @see https://docs.github.com/rest/reference/checks#create-a-check-run
-     */
-    "POST /repos/{owner}/{repo}/check-runs": Operation<"/repos/{owner}/{repo}/check-runs", "post">;
-    /**
-     * @see https://docs.github.com/rest/checks/runs#rerequest-a-check-run
-     */
-    "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest", "post">;
-    /**
-     * @see https://docs.github.com/rest/checks/suites#create-a-check-suite
-     */
-    "POST /repos/{owner}/{repo}/check-suites": Operation<"/repos/{owner}/{repo}/check-suites", "post">;
-    /**
-     * @see https://docs.github.com/rest/checks/suites#rerequest-a-check-suite
-     */
-    "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest", "post">;
-    /**
-     * @see https://docs.github.com/rest/code-scanning/code-scanning#upload-an-analysis-as-sarif-data
-     */
-    "POST /repos/{owner}/{repo}/code-scanning/sarifs": Operation<"/repos/{owner}/{repo}/code-scanning/sarifs", "post">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#create-a-codespace-in-a-repository
-     */
-    "POST /repos/{owner}/{repo}/codespaces": Operation<"/repos/{owner}/{repo}/codespaces", "post">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-commit-comment
-     */
-    "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions", "post">;
-    /**
-     * @see https://docs.github.com/rest/commits/comments#create-a-commit-comment
-     */
-    "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/comments", "post">;
-    /**
-     * @see https://docs.github.com/rest/dependency-graph/dependency-submission#create-a-snapshot-of-dependencies-for-a-repository
-     */
-    "POST /repos/{owner}/{repo}/dependency-graph/snapshots": Operation<"/repos/{owner}/{repo}/dependency-graph/snapshots", "post">;
-    /**
-     * @see https://docs.github.com/rest/deployments/deployments#create-a-deployment
-     */
-    "POST /repos/{owner}/{repo}/deployments": Operation<"/repos/{owner}/{repo}/deployments", "post">;
-    /**
-     * @see https://docs.github.com/rest/deployments/statuses#create-a-deployment-status
-     */
-    "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#create-a-repository-dispatch-event
-     */
-    "POST /repos/{owner}/{repo}/dispatches": Operation<"/repos/{owner}/{repo}/dispatches", "post">;
-    /**
-     * @see https://docs.github.com/rest/deployments/branch-policies#create-a-deployment-branch-policy
-     */
-    "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", "post">;
-    /**
-     * @see https://docs.github.com/rest/deployments/protection-rules#create-a-custom-deployment-protection-rule-on-an-environment
-     */
-    "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/forks#create-a-fork
-     */
-    "POST /repos/{owner}/{repo}/forks": Operation<"/repos/{owner}/{repo}/forks", "post">;
-    /**
-     * @see https://docs.github.com/rest/git/blobs#create-a-blob
-     */
-    "POST /repos/{owner}/{repo}/git/blobs": Operation<"/repos/{owner}/{repo}/git/blobs", "post">;
-    /**
-     * @see https://docs.github.com/rest/git/commits#create-a-commit
-     */
-    "POST /repos/{owner}/{repo}/git/commits": Operation<"/repos/{owner}/{repo}/git/commits", "post">;
-    /**
-     * @see https://docs.github.com/rest/git/refs#create-a-reference
-     */
-    "POST /repos/{owner}/{repo}/git/refs": Operation<"/repos/{owner}/{repo}/git/refs", "post">;
-    /**
-     * @see https://docs.github.com/rest/git/tags#create-a-tag-object
-     */
-    "POST /repos/{owner}/{repo}/git/tags": Operation<"/repos/{owner}/{repo}/git/tags", "post">;
-    /**
-     * @see https://docs.github.com/rest/git/trees#create-a-tree
-     */
-    "POST /repos/{owner}/{repo}/git/trees": Operation<"/repos/{owner}/{repo}/git/trees", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#create-a-repository-webhook
-     */
-    "POST /repos/{owner}/{repo}/hooks": Operation<"/repos/{owner}/{repo}/hooks", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#redeliver-a-delivery-for-a-repository-webhook
-     */
-    "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#ping-a-repository-webhook
-     */
-    "POST /repos/{owner}/{repo}/hooks/{hook_id}/pings": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/pings", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/webhooks#test-the-push-repository-webhook
-     */
-    "POST /repos/{owner}/{repo}/hooks/{hook_id}/tests": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/tests", "post">;
-    /**
-     * @see https://docs.github.com/rest/issues/issues#create-an-issue
-     */
-    "POST /repos/{owner}/{repo}/issues": Operation<"/repos/{owner}/{repo}/issues", "post">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-an-issue-comment
-     */
-    "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "post">;
-    /**
-     * @see https://docs.github.com/rest/issues/assignees#add-assignees-to-an-issue
-     */
-    "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/assignees", "post">;
-    /**
-     * @see https://docs.github.com/rest/issues/comments#create-an-issue-comment
-     */
-    "POST /repos/{owner}/{repo}/issues/{issue_number}/comments": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/comments", "post">;
-    /**
-     * @see https://docs.github.com/rest/issues/labels#add-labels-to-an-issue
-     */
-    "POST /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "post">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-an-issue
-     */
-    "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions", "post">;
-    /**
-     * @see https://docs.github.com/rest/deploy-keys/deploy-keys#create-a-deploy-key
-     */
-    "POST /repos/{owner}/{repo}/keys": Operation<"/repos/{owner}/{repo}/keys", "post">;
-    /**
-     * @see https://docs.github.com/rest/issues/labels#create-a-label
-     */
-    "POST /repos/{owner}/{repo}/labels": Operation<"/repos/{owner}/{repo}/labels", "post">;
-    /**
-     * @see https://docs.github.com/rest/branches/branches#sync-a-fork-branch-with-the-upstream-repository
-     */
-    "POST /repos/{owner}/{repo}/merge-upstream": Operation<"/repos/{owner}/{repo}/merge-upstream", "post">;
-    /**
-     * @see https://docs.github.com/rest/branches/branches#merge-a-branch
-     */
-    "POST /repos/{owner}/{repo}/merges": Operation<"/repos/{owner}/{repo}/merges", "post">;
-    /**
-     * @see https://docs.github.com/rest/issues/milestones#create-a-milestone
-     */
-    "POST /repos/{owner}/{repo}/milestones": Operation<"/repos/{owner}/{repo}/milestones", "post">;
-    /**
-     * @see https://docs.github.com/rest/pages/pages#create-a-apiname-pages-site
-     */
-    "POST /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "post">;
-    /**
-     * @see https://docs.github.com/rest/pages/pages#request-a-apiname-pages-build
-     */
-    "POST /repos/{owner}/{repo}/pages/builds": Operation<"/repos/{owner}/{repo}/pages/builds", "post">;
-    /**
-     * @see https://docs.github.com/rest/pages/pages#create-a-github-pages-deployment
-     */
-    "POST /repos/{owner}/{repo}/pages/deployment": Operation<"/repos/{owner}/{repo}/pages/deployment", "post">;
-    /**
-     * @see https://docs.github.com/rest/projects/projects#create-a-repository-project
-     */
-    "POST /repos/{owner}/{repo}/projects": Operation<"/repos/{owner}/{repo}/projects", "post">;
-    /**
-     * @see https://docs.github.com/rest/pulls/pulls#create-a-pull-request
-     */
-    "POST /repos/{owner}/{repo}/pulls": Operation<"/repos/{owner}/{repo}/pulls", "post">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-pull-request-review-comment
-     */
-    "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "post">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#create-a-codespace-from-a-pull-request
-     */
-    "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/codespaces", "post">;
-    /**
-     * @see https://docs.github.com/rest/pulls/comments#create-a-review-comment-for-a-pull-request
-     */
-    "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments", "post">;
-    /**
-     * @see https://docs.github.com/rest/pulls/comments#create-a-reply-for-a-review-comment
-     */
-    "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies", "post">;
-    /**
-     * @see https://docs.github.com/rest/reference/pulls#request-reviewers-for-a-pull-request
-     */
-    "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "post">;
-    /**
-     * @see https://docs.github.com/rest/pulls/reviews#create-a-review-for-a-pull-request
-     */
-    "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews", "post">;
-    /**
-     * @see https://docs.github.com/rest/pulls/reviews#submit-a-review-for-a-pull-request
-     */
-    "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events", "post">;
-    /**
-     * @see https://docs.github.com/rest/releases/releases#create-a-release
-     */
-    "POST /repos/{owner}/{repo}/releases": Operation<"/repos/{owner}/{repo}/releases", "post">;
-    /**
-     * @see https://docs.github.com/rest/releases/releases#generate-release-notes-content-for-a-release
-     */
-    "POST /repos/{owner}/{repo}/releases/generate-notes": Operation<"/repos/{owner}/{repo}/releases/generate-notes", "post">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-release
-     */
-    "POST /repos/{owner}/{repo}/releases/{release_id}/reactions": Operation<"/repos/{owner}/{repo}/releases/{release_id}/reactions", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/rules#create-a-repository-ruleset
-     */
-    "POST /repos/{owner}/{repo}/rulesets": Operation<"/repos/{owner}/{repo}/rulesets", "post">;
-    /**
-     * @see https://docs.github.com/rest/security-advisories/repository-advisories#create-a-repository-security-advisory
-     */
-    "POST /repos/{owner}/{repo}/security-advisories": Operation<"/repos/{owner}/{repo}/security-advisories", "post">;
-    /**
-     * @see https://docs.github.com/rest/security-advisories/repository-advisories#privately-report-a-security-vulnerability
-     */
-    "POST /repos/{owner}/{repo}/security-advisories/reports": Operation<"/repos/{owner}/{repo}/security-advisories/reports", "post">;
-    /**
-     * @see https://docs.github.com/rest/security-advisories/repository-advisories#request-a-cve-for-a-repository-security-advisory
-     */
-    "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve": Operation<"/repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve", "post">;
-    /**
-     * @see https://docs.github.com/rest/commits/statuses#create-a-commit-status
-     */
-    "POST /repos/{owner}/{repo}/statuses/{sha}": Operation<"/repos/{owner}/{repo}/statuses/{sha}", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/tags#create-a-tag-protection-state-for-a-repository
-     */
-    "POST /repos/{owner}/{repo}/tags/protection": Operation<"/repos/{owner}/{repo}/tags/protection", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#transfer-a-repository
-     */
-    "POST /repos/{owner}/{repo}/transfer": Operation<"/repos/{owner}/{repo}/transfer", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#create-a-repository-using-a-template
-     */
-    "POST /repos/{template_owner}/{template_repo}/generate": Operation<"/repos/{template_owner}/{template_repo}/generate", "post">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#create-an-environment-variable
-     */
-    "POST /repositories/{repository_id}/environments/{environment_name}/variables": Operation<"/repositories/{repository_id}/environments/{environment_name}/variables", "post">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussions#create-a-discussion-legacy
-     */
-    "POST /teams/{team_id}/discussions": Operation<"/teams/{team_id}/discussions", "post">;
-    /**
-     * @see https://docs.github.com/rest/teams/discussion-comments#create-a-discussion-comment-legacy
-     */
-    "POST /teams/{team_id}/discussions/{discussion_number}/comments": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments", "post">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-comment-legacy
-     */
-    "POST /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "post">;
-    /**
-     * @see https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-legacy
-     */
-    "POST /teams/{team_id}/discussions/{discussion_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/reactions", "post">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#create-a-codespace-for-the-authenticated-user
-     */
-    "POST /user/codespaces": Operation<"/user/codespaces", "post">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#export-a-codespace-for-the-authenticated-user
-     */
-    "POST /user/codespaces/{codespace_name}/exports": Operation<"/user/codespaces/{codespace_name}/exports", "post">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#create-a-repository-from-an-unpublished-codespace
-     */
-    "POST /user/codespaces/{codespace_name}/publish": Operation<"/user/codespaces/{codespace_name}/publish", "post">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#start-a-codespace-for-the-authenticated-user
-     */
-    "POST /user/codespaces/{codespace_name}/start": Operation<"/user/codespaces/{codespace_name}/start", "post">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/codespaces#stop-a-codespace-for-the-authenticated-user
-     */
-    "POST /user/codespaces/{codespace_name}/stop": Operation<"/user/codespaces/{codespace_name}/stop", "post">;
-    /**
-     * @see https://docs.github.com/rest/users/emails#add-an-email-address-for-the-authenticated-user
-     */
-    "POST /user/emails": Operation<"/user/emails", "post">;
-    /**
-     * @see https://docs.github.com/rest/users/gpg-keys#create-a-gpg-key-for-the-authenticated-user
-     */
-    "POST /user/gpg_keys": Operation<"/user/gpg_keys", "post">;
-    /**
-     * @see https://docs.github.com/rest/users/keys#create-a-public-ssh-key-for-the-authenticated-user
-     */
-    "POST /user/keys": Operation<"/user/keys", "post">;
-    /**
-     * @see https://docs.github.com/rest/migrations/users#start-a-user-migration
-     */
-    "POST /user/migrations": Operation<"/user/migrations", "post">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#restore-a-package-for-the-authenticated-user
-     */
-    "POST /user/packages/{package_type}/{package_name}/restore{?token}": Operation<"/user/packages/{package_type}/{package_name}/restore", "post">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#restore-a-package-version-for-the-authenticated-user
-     */
-    "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": Operation<"/user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", "post">;
-    /**
-     * @see https://docs.github.com/rest/projects/projects#create-a-user-project
-     */
-    "POST /user/projects": Operation<"/user/projects", "post">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#create-a-repository-for-the-authenticated-user
-     */
-    "POST /user/repos": Operation<"/user/repos", "post">;
-    /**
-     * @see https://docs.github.com/rest/users/social-accounts#add-social-accounts-for-the-authenticated-user
-     */
-    "POST /user/social_accounts": Operation<"/user/social_accounts", "post">;
-    /**
-     * @see https://docs.github.com/rest/users/ssh-signing-keys#create-a-ssh-signing-key-for-the-authenticated-user
-     */
-    "POST /user/ssh_signing_keys": Operation<"/user/ssh_signing_keys", "post">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#restore-a-package-for-a-user
-     */
-    "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}": Operation<"/users/{username}/packages/{package_type}/{package_name}/restore", "post">;
-    /**
-     * @see https://docs.github.com/rest/packages/packages#restore-package-version-for-a-user
-     */
-    "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": Operation<"/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", "post">;
-    /**
-     * @see https://docs.github.com/rest/releases/assets#upload-a-release-asset
-     */
-    "POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}": Operation<"/repos/{owner}/{repo}/releases/{release_id}/assets", "post">;
-    /**
-     * @see https://docs.github.com/rest/apps/apps#suspend-an-app-installation
-     */
-    "PUT /app/installations/{installation_id}/suspended": Operation<"/app/installations/{installation_id}/suspended", "put">;
-    /**
-     * @see https://docs.github.com/rest/gists/gists#star-a-gist
-     */
-    "PUT /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "put">;
-    /**
-     * @see https://docs.github.com/rest/activity/notifications#mark-notifications-as-read
-     */
-    "PUT /notifications": Operation<"/notifications", "put">;
-    /**
-     * @see https://docs.github.com/rest/activity/notifications#set-a-thread-subscription
-     */
-    "PUT /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/oidc#set-the-customization-template-for-an-oidc-subject-claim-for-an-organization
-     */
-    "PUT /orgs/{org}/actions/oidc/customization/sub": Operation<"/orgs/{org}/actions/oidc/customization/sub", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#set-github-actions-permissions-for-an-organization
-     */
-    "PUT /orgs/{org}/actions/permissions": Operation<"/orgs/{org}/actions/permissions", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#set-selected-repositories-enabled-for-github-actions-in-an-organization
-     */
-    "PUT /orgs/{org}/actions/permissions/repositories": Operation<"/orgs/{org}/actions/permissions/repositories", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#enable-a-selected-repository-for-github-actions-in-an-organization
-     */
-    "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}": Operation<"/orgs/{org}/actions/permissions/repositories/{repository_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#set-allowed-actions-and-reusable-workflows-for-an-organization
-     */
-    "PUT /orgs/{org}/actions/permissions/selected-actions": Operation<"/orgs/{org}/actions/permissions/selected-actions", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#set-default-workflow-permissions-for-an-organization
-     */
-    "PUT /orgs/{org}/actions/permissions/workflow": Operation<"/orgs/{org}/actions/permissions/workflow", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#set-custom-labels-for-a-self-hosted-runner-for-an-organization
-     */
-    "PUT /orgs/{org}/actions/runners/{runner_id}/labels": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels", "put">;
-    /**
-     * @see https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret
-     */
-    "PUT /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#set-selected-repositories-for-an-organization-secret
-     */
-    "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#add-selected-repository-to-an-organization-secret
-     */
-    "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#set-selected-repositories-for-an-organization-variable
-     */
-    "PUT /orgs/{org}/actions/variables/{name}/repositories": Operation<"/orgs/{org}/actions/variables/{name}/repositories", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/variables#add-selected-repository-to-an-organization-variable
-     */
-    "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/variables/{name}/repositories/{repository_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/orgs/blocking#block-a-user-from-an-organization
-     */
-    "PUT /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "put">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organizations#manage-access-control-for-organization-codespaces
-     */
-    "PUT /orgs/{org}/codespaces/access": Operation<"/orgs/{org}/codespaces/access", "put">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organization-secrets#create-or-update-an-organization-secret
-     */
-    "PUT /orgs/{org}/codespaces/secrets/{secret_name}": Operation<"/orgs/{org}/codespaces/secrets/{secret_name}", "put">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organization-secrets#set-selected-repositories-for-an-organization-secret
-     */
-    "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/codespaces/secrets/{secret_name}/repositories", "put">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/organization-secrets#add-selected-repository-to-an-organization-secret
-     */
-    "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/reference/dependabot#create-or-update-an-organization-secret
-     */
-    "PUT /orgs/{org}/dependabot/secrets/{secret_name}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}", "put">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#set-selected-repositories-for-an-organization-secret
-     */
-    "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}/repositories", "put">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#add-selected-repository-to-an-organization-secret
-     */
-    "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/interactions/orgs#set-interaction-restrictions-for-an-organization
-     */
-    "PUT /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "put">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#set-organization-membership-for-a-user
-     */
-    "PUT /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "put">;
-    /**
-     * @see https://docs.github.com/rest/orgs/outside-collaborators#convert-an-organization-member-to-outside-collaborator
-     */
-    "PUT /orgs/{org}/outside_collaborators/{username}": Operation<"/orgs/{org}/outside_collaborators/{username}", "put">;
-    /**
-     * @see https://docs.github.com/rest/orgs/custom-properties#create-or-update-a-custom-property-for-an-organization
-     */
-    "PUT /orgs/{org}/properties/schema/{custom_property_name}": Operation<"/orgs/{org}/properties/schema/{custom_property_name}", "put">;
-    /**
-     * @see https://docs.github.com/rest/orgs/members#set-public-organization-membership-for-the-authenticated-user
-     */
-    "PUT /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "put">;
-    /**
-     * @see https://docs.github.com/rest/orgs/rules#update-an-organization-repository-ruleset
-     */
-    "PUT /orgs/{org}/rulesets/{ruleset_id}": Operation<"/orgs/{org}/rulesets/{ruleset_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team
-     */
-    "PUT /orgs/{org}/security-managers/teams/{team_slug}": Operation<"/orgs/{org}/security-managers/teams/{team_slug}", "put">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user
-     */
-    "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "put">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#add-or-update-team-project-permissions
-     */
-    "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#add-or-update-team-repository-permissions
-     */
-    "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "put">;
-    /**
-     * @see https://docs.github.com/rest/projects/collaborators#add-project-collaborator
-     */
-    "PUT /projects/{project_id}/collaborators/{username}": Operation<"/projects/{project_id}/collaborators/{username}", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/oidc#set-the-customization-template-for-an-oidc-subject-claim-for-a-repository
-     */
-    "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub": Operation<"/repos/{owner}/{repo}/actions/oidc/customization/sub", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#set-github-actions-permissions-for-a-repository
-     */
-    "PUT /repos/{owner}/{repo}/actions/permissions": Operation<"/repos/{owner}/{repo}/actions/permissions", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#set-the-level-of-access-for-workflows-outside-of-the-repository
-     */
-    "PUT /repos/{owner}/{repo}/actions/permissions/access": Operation<"/repos/{owner}/{repo}/actions/permissions/access", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#set-allowed-actions-and-reusable-workflows-for-a-repository
-     */
-    "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions": Operation<"/repos/{owner}/{repo}/actions/permissions/selected-actions", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/permissions#set-default-workflow-permissions-for-a-repository
-     */
-    "PUT /repos/{owner}/{repo}/actions/permissions/workflow": Operation<"/repos/{owner}/{repo}/actions/permissions/workflow", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/self-hosted-runners#set-custom-labels-for-a-self-hosted-runner-for-a-repository
-     */
-    "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#create-or-update-a-repository-secret
-     */
-    "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflows#disable-a-workflow
-     */
-    "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/workflows#enable-a-workflow
-     */
-    "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable", "put">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#enable-automated-security-fixes
-     */
-    "PUT /repos/{owner}/{repo}/automated-security-fixes": Operation<"/repos/{owner}/{repo}/automated-security-fixes", "put">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#update-branch-protection
-     */
-    "PUT /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "put">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#set-status-check-contexts
-     */
-    "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "put">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#set-app-access-restrictions
-     */
-    "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "put">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#set-team-access-restrictions
-     */
-    "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "put">;
-    /**
-     * @see https://docs.github.com/rest/branches/branch-protection#set-user-access-restrictions
-     */
-    "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "put">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/repository-secrets#create-or-update-a-repository-secret
-     */
-    "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/codespaces/secrets/{secret_name}", "put">;
-    /**
-     * @see https://docs.github.com/rest/collaborators/collaborators#add-a-repository-collaborator
-     */
-    "PUT /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "put">;
-    /**
-     * @see https://docs.github.com/rest/repos/contents#create-or-update-file-contents
-     */
-    "PUT /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "put">;
-    /**
-     * @see https://docs.github.com/rest/dependabot/secrets#create-or-update-a-repository-secret
-     */
-    "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/dependabot/secrets/{secret_name}", "put">;
-    /**
-     * @see https://docs.github.com/rest/deployments/environments#create-or-update-an-environment
-     */
-    "PUT /repos/{owner}/{repo}/environments/{environment_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}", "put">;
-    /**
-     * @see https://docs.github.com/rest/deployments/branch-policies#update-a-deployment-branch-policy
-     */
-    "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/migrations/source-imports#start-an-import
-     */
-    "PUT /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "put">;
-    /**
-     * @see https://docs.github.com/rest/interactions/repos#set-interaction-restrictions-for-a-repository
-     */
-    "PUT /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "put">;
-    /**
-     * @see https://docs.github.com/rest/issues/labels#set-labels-for-an-issue
-     */
-    "PUT /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "put">;
-    /**
-     * @see https://docs.github.com/rest/issues/issues#lock-an-issue
-     */
-    "PUT /repos/{owner}/{repo}/issues/{issue_number}/lock": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/lock", "put">;
-    /**
-     * @see https://docs.github.com/rest/activity/notifications#mark-repository-notifications-as-read
-     */
-    "PUT /repos/{owner}/{repo}/notifications": Operation<"/repos/{owner}/{repo}/notifications", "put">;
-    /**
-     * @see https://docs.github.com/rest/pages/pages#update-information-about-a-apiname-pages-site
-     */
-    "PUT /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "put">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#enable-private-vulnerability-reporting-for-a-repository
-     */
-    "PUT /repos/{owner}/{repo}/private-vulnerability-reporting": Operation<"/repos/{owner}/{repo}/private-vulnerability-reporting", "put">;
-    /**
-     * @see https://docs.github.com/rest/pulls/pulls#merge-a-pull-request
-     */
-    "PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/merge", "put">;
-    /**
-     * @see https://docs.github.com/rest/pulls/reviews#update-a-review-for-a-pull-request
-     */
-    "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/pulls/reviews#dismiss-a-review-for-a-pull-request
-     */
-    "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals", "put">;
-    /**
-     * @see https://docs.github.com/rest/pulls/pulls#update-a-pull-request-branch
-     */
-    "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/update-branch", "put">;
-    /**
-     * @see https://docs.github.com/rest/repos/rules#update-a-repository-ruleset
-     */
-    "PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}": Operation<"/repos/{owner}/{repo}/rulesets/{ruleset_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/activity/watching#set-a-repository-subscription
-     */
-    "PUT /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "put">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#replace-all-repository-topics
-     */
-    "PUT /repos/{owner}/{repo}/topics": Operation<"/repos/{owner}/{repo}/topics", "put">;
-    /**
-     * @see https://docs.github.com/rest/repos/repos#enable-vulnerability-alerts
-     */
-    "PUT /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "put">;
-    /**
-     * @see https://docs.github.com/rest/actions/secrets#create-or-update-an-environment-secret
-     */
-    "PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", "put">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#add-team-member-legacy
-     */
-    "PUT /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "put">;
-    /**
-     * @see https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user-legacy
-     */
-    "PUT /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "put">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#add-or-update-team-project-permissions-legacy
-     */
-    "PUT /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/teams/teams#add-or-update-team-repository-permissions-legacy
-     */
-    "PUT /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "put">;
-    /**
-     * @see https://docs.github.com/rest/users/blocking#block-a-user
-     */
-    "PUT /user/blocks/{username}": Operation<"/user/blocks/{username}", "put">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/secrets#create-or-update-a-secret-for-the-authenticated-user
-     */
-    "PUT /user/codespaces/secrets/{secret_name}": Operation<"/user/codespaces/secrets/{secret_name}", "put">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/secrets#set-selected-repositories-for-a-user-secret
-     */
-    "PUT /user/codespaces/secrets/{secret_name}/repositories": Operation<"/user/codespaces/secrets/{secret_name}/repositories", "put">;
-    /**
-     * @see https://docs.github.com/rest/codespaces/secrets#add-a-selected-repository-to-a-user-secret
-     */
-    "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}": Operation<"/user/codespaces/secrets/{secret_name}/repositories/{repository_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/users/followers#follow-a-user
-     */
-    "PUT /user/following/{username}": Operation<"/user/following/{username}", "put">;
-    /**
-     * @see https://docs.github.com/rest/apps/installations#add-a-repository-to-an-app-installation
-     */
-    "PUT /user/installations/{installation_id}/repositories/{repository_id}": Operation<"/user/installations/{installation_id}/repositories/{repository_id}", "put">;
-    /**
-     * @see https://docs.github.com/rest/interactions/user#set-interaction-restrictions-for-your-public-repositories
-     */
-    "PUT /user/interaction-limits": Operation<"/user/interaction-limits", "put">;
-    /**
-     * @see https://docs.github.com/rest/activity/starring#star-a-repository-for-the-authenticated-user
-     */
-    "PUT /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "put">;
-}
-export {};
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/index.d.ts
deleted file mode 100644
index 004ae9b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/dist-types/index.d.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-export * from "./AuthInterface";
-export * from "./EndpointDefaults";
-export * from "./EndpointInterface";
-export * from "./EndpointOptions";
-export * from "./Fetch";
-export * from "./OctokitResponse";
-export * from "./RequestError";
-export * from "./RequestHeaders";
-export * from "./RequestInterface";
-export * from "./RequestMethod";
-export * from "./RequestOptions";
-export * from "./RequestParameters";
-export * from "./RequestRequestOptions";
-export * from "./ResponseHeaders";
-export * from "./Route";
-export * from "./Signal";
-export * from "./StrategyInterface";
-export * from "./Url";
-export * from "./VERSION";
-export * from "./GetResponseTypeFromEndpointMethod";
-export * from "./generated/Endpoints";
diff --git a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/package.json b/actions/bcr-pr-review-notifier/node_modules/@octokit/types/package.json
deleted file mode 100644
index d5e0740..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/@octokit/types/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "name": "@octokit/types",
-  "version": "12.4.0",
-  "publishConfig": {
-    "access": "public"
-  },
-  "description": "Shared TypeScript definitions for Octokit projects",
-  "dependencies": {
-    "@octokit/openapi-types": "^19.1.0"
-  },
-  "repository": "github:octokit/types.ts",
-  "keywords": [
-    "github",
-    "api",
-    "sdk",
-    "toolkit",
-    "typescript"
-  ],
-  "author": "Gregor Martynus (https://twitter.com/gr2m)",
-  "license": "MIT",
-  "devDependencies": {
-    "@octokit/tsconfig": "^2.0.0",
-    "@types/node": ">= 8",
-    "github-openapi-graphql-query": "^4.0.0",
-    "handlebars": "^4.7.6",
-    "json-schema-to-typescript": "^13.0.0",
-    "lodash.set": "^4.3.2",
-    "npm-run-all": "^4.1.5",
-    "pascal-case": "^3.1.1",
-    "prettier": "^3.0.0",
-    "semantic-release": "^22.0.0",
-    "semantic-release-plugin-update-version-in-files": "^1.0.0",
-    "sort-keys": "^5.0.0",
-    "string-to-jsdoc-comment": "^1.0.0",
-    "typedoc": "^0.25.0",
-    "typescript": "^5.0.0"
-  },
-  "octokit": {
-    "openapi-version": "13.3.0"
-  },
-  "files": [
-    "dist-types/**"
-  ],
-  "types": "dist-types/index.d.ts",
-  "sideEffects": false
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/LICENSE b/actions/bcr-pr-review-notifier/node_modules/before-after-hook/LICENSE
deleted file mode 100644
index 225063c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "{}"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright 2018 Gregor Martynus and other contributors.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/README.md b/actions/bcr-pr-review-notifier/node_modules/before-after-hook/README.md
deleted file mode 100644
index 07d7756..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/README.md
+++ /dev/null
@@ -1,653 +0,0 @@
-# before-after-hook
-
-> asynchronous hooks for internal functionality
-
-[![npm downloads](https://img.shields.io/npm/dw/before-after-hook.svg)](https://www.npmjs.com/package/before-after-hook)
-[![Test](https://github.com/gr2m/before-after-hook/actions/workflows/test.yml/badge.svg)](https://github.com/gr2m/before-after-hook/actions/workflows/test.yml)
-
-## Usage
-
-### Singular hook
-
-```js
-// instantiate singular hook API
-const hook = new Hook.Singular();
-
-// Create a hook
-function getData(options) {
-  return hook(fetchFromDatabase, options)
-    .then(handleData)
-    .catch(handleGetError);
-}
-
-// register before/error/after hooks.
-// The methods can be async or return a promise
-hook.before(beforeHook);
-hook.error(errorHook);
-hook.after(afterHook);
-
-getData({ id: 123 });
-```
-
-### Hook collection
-
-```js
-// instantiate hook collection API
-const hookCollection = new Hook.Collection();
-
-// Create a hook
-function getData(options) {
-  return hookCollection("get", fetchFromDatabase, options)
-    .then(handleData)
-    .catch(handleGetError);
-}
-
-// register before/error/after hooks.
-// The methods can be async or return a promise
-hookCollection.before("get", beforeHook);
-hookCollection.error("get", errorHook);
-hookCollection.after("get", afterHook);
-
-getData({ id: 123 });
-```
-
-### Hook.Singular vs Hook.Collection
-
-There's no fundamental difference between the `Hook.Singular` and `Hook.Collection` hooks except for the fact that a hook from a collection requires you to pass along the name. Therefore the following explanation applies to both code snippets as described above.
-
-The methods are executed in the following order
-
-1. `beforeHook`
-2. `fetchFromDatabase`
-3. `afterHook`
-4. `handleData`
-
-`beforeHook` can mutate `options` before it’s passed to `fetchFromDatabase`.
-
-If an error is thrown in `beforeHook` or `fetchFromDatabase` then `errorHook` is
-called next.
-
-If `afterHook` throws an error then `handleGetError` is called instead
-of `handleData`.
-
-If `errorHook` throws an error then `handleGetError` is called next, otherwise
-`afterHook` and `handleData`.
-
-You can also use `hook.wrap` to achieve the same thing as shown above (collection example):
-
-```js
-hookCollection.wrap("get", async (getData, options) => {
-  await beforeHook(options);
-
-  try {
-    const result = getData(options);
-  } catch (error) {
-    await errorHook(error, options);
-  }
-
-  await afterHook(result, options);
-});
-```
-
-## Install
-
-```
-npm install before-after-hook
-```
-
-Or download [the latest `before-after-hook.min.js`](https://github.com/gr2m/before-after-hook/releases/latest).
-
-## API
-
-- [Singular Hook Constructor](#singular-hook-api)
-- [Hook Collection Constructor](#hook-collection-api)
-
-## Singular hook API
-
-- [Singular constructor](#singular-constructor)
-- [hook.api](#singular-api)
-- [hook()](#singular-api)
-- [hook.before()](#singular-api)
-- [hook.error()](#singular-api)
-- [hook.after()](#singular-api)
-- [hook.wrap()](#singular-api)
-- [hook.remove()](#singular-api)
-
-### Singular constructor
-
-The `Hook.Singular` constructor has no options and returns a `hook` instance with the
-methods below:
-
-```js
-const hook = new Hook.Singular();
-```
-
-Using the singular hook is recommended for [TypeScript](#typescript)
-
-### Singular API
-
-The singular hook is a reference to a single hook. This means that there's no need to pass along any identifier (such as a `name` as can be seen in the [Hook.Collection API](#hookcollectionapi)).
-
-The API of a singular hook is exactly the same as a collection hook and we therefore suggest you read the [Hook.Collection API](#hookcollectionapi) and leave out any use of the `name` argument. Just skip it like described in this example:
-
-```js
-const hook = new Hook.Singular();
-
-// good
-hook.before(beforeHook);
-hook.after(afterHook);
-hook(fetchFromDatabase, options);
-
-// bad
-hook.before("get", beforeHook);
-hook.after("get", afterHook);
-hook("get", fetchFromDatabase, options);
-```
-
-## Hook collection API
-
-- [Collection constructor](#collection-constructor)
-- [hookCollection.api](#hookcollectionapi)
-- [hookCollection()](#hookcollection)
-- [hookCollection.before()](#hookcollectionbefore)
-- [hookCollection.error()](#hookcollectionerror)
-- [hookCollection.after()](#hookcollectionafter)
-- [hookCollection.wrap()](#hookcollectionwrap)
-- [hookCollection.remove()](#hookcollectionremove)
-
-### Collection constructor
-
-The `Hook.Collection` constructor has no options and returns a `hookCollection` instance with the
-methods below
-
-```js
-const hookCollection = new Hook.Collection();
-```
-
-### hookCollection.api
-
-Use the `api` property to return the public API:
-
-- [hookCollection.before()](#hookcollectionbefore)
-- [hookCollection.after()](#hookcollectionafter)
-- [hookCollection.error()](#hookcollectionerror)
-- [hookCollection.wrap()](#hookcollectionwrap)
-- [hookCollection.remove()](#hookcollectionremove)
-
-That way you don’t need to expose the [hookCollection()](#hookcollection) method to consumers of your library
-
-### hookCollection()
-
-Invoke before and after hooks. Returns a promise.
-
-```js
-hookCollection(nameOrNames, method /*, options */);
-```
-
-<table>
-  <thead>
-    <tr>
-      <th>Argument</th>
-      <th>Type</th>
-      <th>Description</th>
-      <th>Required</th>
-    </tr>
-  </thead>
-  <tr>
-    <th align="left"><code>name</code></th>
-    <td>String or Array of Strings</td>
-    <td>Hook name, for example <code>'save'</code>. Or an array of names, see example below.</td>
-    <td>Yes</td>
-  </tr>
-  <tr>
-    <th align="left"><code>method</code></th>
-    <td>Function</td>
-    <td>Callback to be executed after all before hooks finished execution successfully. <code>options</code> is passed as first argument</td>
-    <td>Yes</td>
-  </tr>
-  <tr>
-    <th align="left"><code>options</code></th>
-    <td>Object</td>
-    <td>Will be passed to all before hooks as reference, so they can mutate it</td>
-    <td>No, defaults to empty object (<code>{}</code>)</td>
-  </tr>
-</table>
-
-Resolves with whatever `method` returns or resolves with.
-Rejects with error that is thrown or rejected with by
-
-1. Any of the before hooks, whichever rejects / throws first
-2. `method`
-3. Any of the after hooks, whichever rejects / throws first
-
-Simple Example
-
-```js
-hookCollection(
-  "save",
-  function (record) {
-    return store.save(record);
-  },
-  record
-);
-// shorter:  hookCollection('save', store.save, record)
-
-hookCollection.before("save", function addTimestamps(record) {
-  const now = new Date().toISOString();
-  if (record.createdAt) {
-    record.updatedAt = now;
-  } else {
-    record.createdAt = now;
-  }
-});
-```
-
-Example defining multiple hooks at once.
-
-```js
-hookCollection(
-  ["add", "save"],
-  function (record) {
-    return store.save(record);
-  },
-  record
-);
-
-hookCollection.before("add", function addTimestamps(record) {
-  if (!record.type) {
-    throw new Error("type property is required");
-  }
-});
-
-hookCollection.before("save", function addTimestamps(record) {
-  if (!record.type) {
-    throw new Error("type property is required");
-  }
-});
-```
-
-Defining multiple hooks is helpful if you have similar methods for which you want to define separate hooks, but also an additional hook that gets called for all at once. The example above is equal to this:
-
-```js
-hookCollection(
-  "add",
-  function (record) {
-    return hookCollection(
-      "save",
-      function (record) {
-        return store.save(record);
-      },
-      record
-    );
-  },
-  record
-);
-```
-
-### hookCollection.before()
-
-Add before hook for given name.
-
-```js
-hookCollection.before(name, method);
-```
-
-<table>
-  <thead>
-    <tr>
-      <th>Argument</th>
-      <th>Type</th>
-      <th>Description</th>
-      <th>Required</th>
-    </tr>
-  </thead>
-  <tr>
-    <th align="left"><code>name</code></th>
-    <td>String</td>
-    <td>Hook name, for example <code>'save'</code></td>
-    <td>Yes</td>
-  </tr>
-  <tr>
-    <th align="left"><code>method</code></th>
-    <td>Function</td>
-    <td>
-      Executed before the wrapped method. Called with the hook’s
-      <code>options</code> argument. Before hooks can mutate the passed options
-      before they are passed to the wrapped method.
-    </td>
-    <td>Yes</td>
-  </tr>
-</table>
-
-Example
-
-```js
-hookCollection.before("save", function validate(record) {
-  if (!record.name) {
-    throw new Error("name property is required");
-  }
-});
-```
-
-### hookCollection.error()
-
-Add error hook for given name.
-
-```js
-hookCollection.error(name, method);
-```
-
-<table>
-  <thead>
-    <tr>
-      <th>Argument</th>
-      <th>Type</th>
-      <th>Description</th>
-      <th>Required</th>
-    </tr>
-  </thead>
-  <tr>
-    <th align="left"><code>name</code></th>
-    <td>String</td>
-    <td>Hook name, for example <code>'save'</code></td>
-    <td>Yes</td>
-  </tr>
-  <tr>
-    <th align="left"><code>method</code></th>
-    <td>Function</td>
-    <td>
-      Executed when an error occurred in either the wrapped method or a
-      <code>before</code> hook. Called with the thrown <code>error</code>
-      and the hook’s <code>options</code> argument. The first <code>method</code>
-      which does not throw an error will set the result that the after hook
-      methods will receive.
-    </td>
-    <td>Yes</td>
-  </tr>
-</table>
-
-Example
-
-```js
-hookCollection.error("save", function (error, options) {
-  if (error.ignore) return;
-  throw error;
-});
-```
-
-### hookCollection.after()
-
-Add after hook for given name.
-
-```js
-hookCollection.after(name, method);
-```
-
-<table>
-  <thead>
-    <tr>
-      <th>Argument</th>
-      <th>Type</th>
-      <th>Description</th>
-      <th>Required</th>
-    </tr>
-  </thead>
-  <tr>
-    <th align="left"><code>name</code></th>
-    <td>String</td>
-    <td>Hook name, for example <code>'save'</code></td>
-    <td>Yes</td>
-  </tr>
-  <tr>
-    <th align="left"><code>method</code></th>
-    <td>Function</td>
-    <td>
-    Executed after wrapped method. Called with what the wrapped method
-    resolves with the hook’s <code>options</code> argument.
-    </td>
-    <td>Yes</td>
-  </tr>
-</table>
-
-Example
-
-```js
-hookCollection.after("save", function (result, options) {
-  if (result.updatedAt) {
-    app.emit("update", result);
-  } else {
-    app.emit("create", result);
-  }
-});
-```
-
-### hookCollection.wrap()
-
-Add wrap hook for given name.
-
-```js
-hookCollection.wrap(name, method);
-```
-
-<table>
-  <thead>
-    <tr>
-      <th>Argument</th>
-      <th>Type</th>
-      <th>Description</th>
-      <th>Required</th>
-    </tr>
-  </thead>
-  <tr>
-    <th align="left"><code>name</code></th>
-    <td>String</td>
-    <td>Hook name, for example <code>'save'</code></td>
-    <td>Yes</td>
-  </tr>
-  <tr>
-    <th align="left"><code>method</code></th>
-    <td>Function</td>
-    <td>
-      Receives both the wrapped method and the passed options as arguments so it can add logic before and after the wrapped method, it can handle errors and even replace the wrapped method altogether
-    </td>
-    <td>Yes</td>
-  </tr>
-</table>
-
-Example
-
-```js
-hookCollection.wrap("save", async function (saveInDatabase, options) {
-  if (!record.name) {
-    throw new Error("name property is required");
-  }
-
-  try {
-    const result = await saveInDatabase(options);
-
-    if (result.updatedAt) {
-      app.emit("update", result);
-    } else {
-      app.emit("create", result);
-    }
-
-    return result;
-  } catch (error) {
-    if (error.ignore) return;
-    throw error;
-  }
-});
-```
-
-See also: [Test mock example](examples/test-mock-example.md)
-
-### hookCollection.remove()
-
-Removes hook for given name.
-
-```js
-hookCollection.remove(name, hookMethod);
-```
-
-<table>
-  <thead>
-    <tr>
-      <th>Argument</th>
-      <th>Type</th>
-      <th>Description</th>
-      <th>Required</th>
-    </tr>
-  </thead>
-  <tr>
-    <th align="left"><code>name</code></th>
-    <td>String</td>
-    <td>Hook name, for example <code>'save'</code></td>
-    <td>Yes</td>
-  </tr>
-  <tr>
-    <th align="left"><code>beforeHookMethod</code></th>
-    <td>Function</td>
-    <td>
-      Same function that was previously passed to <code>hookCollection.before()</code>, <code>hookCollection.error()</code>, <code>hookCollection.after()</code> or <code>hookCollection.wrap()</code>
-    </td>
-    <td>Yes</td>
-  </tr>
-</table>
-
-Example
-
-```js
-hookCollection.remove("save", validateRecord);
-```
-
-## TypeScript
-
-This library contains type definitions for TypeScript.
-
-### Type support for `Singular`:
-
-```ts
-import { Hook } from "before-after-hook";
-
-type TOptions = { foo: string }; // type for options
-type TResult = { bar: number }; // type for result
-type TError = Error; // type for error
-
-const hook = new Hook.Singular<TOptions, TResult, TError>();
-
-hook.before((options) => {
-  // `options.foo` has `string` type
-
-  // not allowed
-  options.foo = 42;
-
-  // allowed
-  options.foo = "Forty-Two";
-});
-
-const hookedMethod = hook(
-  (options) => {
-    // `options.foo` has `string` type
-
-    // not allowed, because it does not satisfy the `R` type
-    return { foo: 42 };
-
-    // allowed
-    return { bar: 42 };
-  },
-  { foo: "Forty-Two" }
-);
-```
-
-You can choose not to pass the types for options, result or error. So, these are completely valid:
-
-```ts
-const hook = new Hook.Singular<O, R>();
-const hook = new Hook.Singular<O>();
-const hook = new Hook.Singular();
-```
-
-In these cases, the omitted types will implicitly be `any`.
-
-### Type support for `Collection`:
-
-`Collection` also has strict type support. You can use it like this:
-
-```ts
-import { Hook } from "before-after-hook";
-
-type HooksType = {
-  add: {
-    Options: { type: string };
-    Result: { id: number };
-    Error: Error;
-  };
-  save: {
-    Options: { type: string };
-    Result: { id: number };
-  };
-  read: {
-    Options: { id: number; foo: number };
-  };
-  destroy: {
-    Options: { id: number; foo: string };
-  };
-};
-
-const hooks = new Hook.Collection<HooksType>();
-
-hooks.before("destroy", (options) => {
-  // `options.id` has `number` type
-});
-
-hooks.error("add", (err, options) => {
-  // `options.type` has `string` type
-  // `err` is `instanceof Error`
-});
-
-hooks.error("save", (err, options) => {
-  // `options.type` has `string` type
-  // `err` has type `any`
-});
-
-hooks.after("save", (result, options) => {
-  // `options.type` has `string` type
-  // `result.id` has `number` type
-});
-```
-
-You can choose not to pass the types altogether. In that case, everything will implicitly be `any`:
-
-```ts
-const hook = new Hook.Collection();
-```
-
-Alternative imports:
-
-```ts
-import { Singular, Collection } from "before-after-hook";
-
-const hook = new Singular();
-const hooks = new Collection();
-```
-
-## Upgrading to 1.4
-
-Since version 1.4 the `Hook` constructor has been deprecated in favor of returning `Hook.Singular` in an upcoming breaking release.
-
-Version 1.4 is still 100% backwards-compatible, but if you want to continue using hook collections, we recommend using the `Hook.Collection` constructor instead before the next release.
-
-For even more details, check out [the PR](https://github.com/gr2m/before-after-hook/pull/52).
-
-## See also
-
-If `before-after-hook` is not for you, have a look at one of these alternatives:
-
-- https://github.com/keystonejs/grappling-hook
-- https://github.com/sebelga/promised-hooks
-- https://github.com/bnoguchi/hooks-js
-- https://github.com/cb1kenobi/hook-emitter
-
-## License
-
-[Apache 2.0](LICENSE)
diff --git a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/before-after-hook/index.d.ts
deleted file mode 100644
index 817bf93..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/index.d.ts
+++ /dev/null
@@ -1,186 +0,0 @@
-type HookMethod<Options, Result> = (
-  options: Options
-) => Result | Promise<Result>;
-
-type BeforeHook<Options> = (options: Options) => void | Promise<void>;
-type ErrorHook<Options, Error> = (
-  error: Error,
-  options: Options
-) => unknown | Promise<unknown>;
-type AfterHook<Options, Result> = (
-  result: Result,
-  options: Options
-) => void | Promise<void>;
-type WrapHook<Options, Result> = (
-  hookMethod: HookMethod<Options, Result>,
-  options: Options
-) => Result | Promise<Result>;
-
-type AnyHook<Options, Result, Error> =
-  | BeforeHook<Options>
-  | ErrorHook<Options, Error>
-  | AfterHook<Options, Result>
-  | WrapHook<Options, Result>;
-
-type TypeStoreKeyLong = "Options" | "Result" | "Error";
-type TypeStoreKeyShort = "O" | "R" | "E";
-type TypeStore =
-  | ({ [key in TypeStoreKeyLong]?: any } &
-      { [key in TypeStoreKeyShort]?: never })
-  | ({ [key in TypeStoreKeyLong]?: never } &
-      { [key in TypeStoreKeyShort]?: any });
-type GetType<
-  Store extends TypeStore,
-  LongKey extends TypeStoreKeyLong,
-  ShortKey extends TypeStoreKeyShort
-> = LongKey extends keyof Store
-  ? Store[LongKey]
-  : ShortKey extends keyof Store
-  ? Store[ShortKey]
-  : any;
-
-export interface HookCollection<
-  HooksType extends Record<string, TypeStore> = Record<
-    string,
-    { Options: any; Result: any; Error: any }
-  >,
-  HookName extends keyof HooksType = keyof HooksType
-> {
-  /**
-   * Invoke before and after hooks
-   */
-  <Name extends HookName>(
-    name: Name | Name[],
-    hookMethod: HookMethod<
-      GetType<HooksType[Name], "Options", "O">,
-      GetType<HooksType[Name], "Result", "R">
-    >,
-    options?: GetType<HooksType[Name], "Options", "O">
-  ): Promise<GetType<HooksType[Name], "Result", "R">>;
-  /**
-   * Add `before` hook for given `name`
-   */
-  before<Name extends HookName>(
-    name: Name,
-    beforeHook: BeforeHook<GetType<HooksType[Name], "Options", "O">>
-  ): void;
-  /**
-   * Add `error` hook for given `name`
-   */
-  error<Name extends HookName>(
-    name: Name,
-    errorHook: ErrorHook<
-      GetType<HooksType[Name], "Options", "O">,
-      GetType<HooksType[Name], "Error", "E">
-    >
-  ): void;
-  /**
-   * Add `after` hook for given `name`
-   */
-  after<Name extends HookName>(
-    name: Name,
-    afterHook: AfterHook<
-      GetType<HooksType[Name], "Options", "O">,
-      GetType<HooksType[Name], "Result", "R">
-    >
-  ): void;
-  /**
-   * Add `wrap` hook for given `name`
-   */
-  wrap<Name extends HookName>(
-    name: Name,
-    wrapHook: WrapHook<
-      GetType<HooksType[Name], "Options", "O">,
-      GetType<HooksType[Name], "Result", "R">
-    >
-  ): void;
-  /**
-   * Remove added hook for given `name`
-   */
-  remove<Name extends HookName>(
-    name: Name,
-    hook: AnyHook<
-      GetType<HooksType[Name], "Options", "O">,
-      GetType<HooksType[Name], "Result", "R">,
-      GetType<HooksType[Name], "Error", "E">
-    >
-  ): void;
-  /**
-   * Public API
-   */
-  api: Pick<
-    HookCollection<HooksType>,
-    "before" | "error" | "after" | "wrap" | "remove"
-  >;
-}
-
-export interface HookSingular<Options, Result, Error> {
-  /**
-   * Invoke before and after hooks
-   */
-  (hookMethod: HookMethod<Options, Result>, options?: Options): Promise<Result>;
-  /**
-   * Add `before` hook
-   */
-  before(beforeHook: BeforeHook<Options>): void;
-  /**
-   * Add `error` hook
-   */
-  error(errorHook: ErrorHook<Options, Error>): void;
-  /**
-   * Add `after` hook
-   */
-  after(afterHook: AfterHook<Options, Result>): void;
-  /**
-   * Add `wrap` hook
-   */
-  wrap(wrapHook: WrapHook<Options, Result>): void;
-  /**
-   * Remove added hook
-   */
-  remove(hook: AnyHook<Options, Result, Error>): void;
-  /**
-   * Public API
-   */
-  api: Pick<
-    HookSingular<Options, Result, Error>,
-    "before" | "error" | "after" | "wrap" | "remove"
-  >;
-}
-
-type Collection = new <
-  HooksType extends Record<string, TypeStore> = Record<
-    string,
-    { Options: any; Result: any; Error: any }
-  >
->() => HookCollection<HooksType>;
-type Singular = new <
-  Options = any,
-  Result = any,
-  Error = any
->() => HookSingular<Options, Result, Error>;
-
-interface Hook {
-  new <
-    HooksType extends Record<string, TypeStore> = Record<
-      string,
-      { Options: any; Result: any; Error: any }
-    >
-  >(): HookCollection<HooksType>;
-
-  /**
-   * Creates a collection of hooks
-   */
-  Collection: Collection;
-
-  /**
-   * Creates a nameless hook that supports strict typings
-   */
-  Singular: Singular;
-}
-
-export const Hook: Hook;
-export const Collection: Collection;
-export const Singular: Singular;
-
-export default Hook;
diff --git a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/index.js b/actions/bcr-pr-review-notifier/node_modules/before-after-hook/index.js
deleted file mode 100644
index 6b60d3c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-var register = require("./lib/register");
-var addHook = require("./lib/add");
-var removeHook = require("./lib/remove");
-
-// bind with array of arguments: https://stackoverflow.com/a/21792913
-var bind = Function.bind;
-var bindable = bind.bind(bind);
-
-function bindApi(hook, state, name) {
-  var removeHookRef = bindable(removeHook, null).apply(
-    null,
-    name ? [state, name] : [state]
-  );
-  hook.api = { remove: removeHookRef };
-  hook.remove = removeHookRef;
-  ["before", "error", "after", "wrap"].forEach(function (kind) {
-    var args = name ? [state, kind, name] : [state, kind];
-    hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);
-  });
-}
-
-function HookSingular() {
-  var singularHookName = "h";
-  var singularHookState = {
-    registry: {},
-  };
-  var singularHook = register.bind(null, singularHookState, singularHookName);
-  bindApi(singularHook, singularHookState, singularHookName);
-  return singularHook;
-}
-
-function HookCollection() {
-  var state = {
-    registry: {},
-  };
-
-  var hook = register.bind(null, state);
-  bindApi(hook, state);
-
-  return hook;
-}
-
-var collectionHookDeprecationMessageDisplayed = false;
-function Hook() {
-  if (!collectionHookDeprecationMessageDisplayed) {
-    console.warn(
-      '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4'
-    );
-    collectionHookDeprecationMessageDisplayed = true;
-  }
-  return HookCollection();
-}
-
-Hook.Singular = HookSingular.bind();
-Hook.Collection = HookCollection.bind();
-
-module.exports = Hook;
-// expose constructors as a named property for TypeScript
-module.exports.Hook = Hook;
-module.exports.Singular = Hook.Singular;
-module.exports.Collection = Hook.Collection;
diff --git a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/lib/add.js b/actions/bcr-pr-review-notifier/node_modules/before-after-hook/lib/add.js
deleted file mode 100644
index f379eab..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/lib/add.js
+++ /dev/null
@@ -1,46 +0,0 @@
-module.exports = addHook;
-
-function addHook(state, kind, name, hook) {
-  var orig = hook;
-  if (!state.registry[name]) {
-    state.registry[name] = [];
-  }
-
-  if (kind === "before") {
-    hook = function (method, options) {
-      return Promise.resolve()
-        .then(orig.bind(null, options))
-        .then(method.bind(null, options));
-    };
-  }
-
-  if (kind === "after") {
-    hook = function (method, options) {
-      var result;
-      return Promise.resolve()
-        .then(method.bind(null, options))
-        .then(function (result_) {
-          result = result_;
-          return orig(result, options);
-        })
-        .then(function () {
-          return result;
-        });
-    };
-  }
-
-  if (kind === "error") {
-    hook = function (method, options) {
-      return Promise.resolve()
-        .then(method.bind(null, options))
-        .catch(function (error) {
-          return orig(error, options);
-        });
-    };
-  }
-
-  state.registry[name].push({
-    hook: hook,
-    orig: orig,
-  });
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/lib/register.js b/actions/bcr-pr-review-notifier/node_modules/before-after-hook/lib/register.js
deleted file mode 100644
index f0d3d4e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/lib/register.js
+++ /dev/null
@@ -1,27 +0,0 @@
-module.exports = register;
-
-function register(state, name, method, options) {
-  if (typeof method !== "function") {
-    throw new Error("method for before hook must be a function");
-  }
-
-  if (!options) {
-    options = {};
-  }
-
-  if (Array.isArray(name)) {
-    return name.reverse().reduce(function (callback, name) {
-      return register.bind(null, state, name, callback, options);
-    }, method)();
-  }
-
-  return Promise.resolve().then(function () {
-    if (!state.registry[name]) {
-      return method(options);
-    }
-
-    return state.registry[name].reduce(function (method, registered) {
-      return registered.hook.bind(null, method, options);
-    }, method)();
-  });
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/lib/remove.js b/actions/bcr-pr-review-notifier/node_modules/before-after-hook/lib/remove.js
deleted file mode 100644
index 590b963..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/lib/remove.js
+++ /dev/null
@@ -1,19 +0,0 @@
-module.exports = removeHook;
-
-function removeHook(state, name, method) {
-  if (!state.registry[name]) {
-    return;
-  }
-
-  var index = state.registry[name]
-    .map(function (registered) {
-      return registered.orig;
-    })
-    .indexOf(method);
-
-  if (index === -1) {
-    return;
-  }
-
-  state.registry[name].splice(index, 1);
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/package.json b/actions/bcr-pr-review-notifier/node_modules/before-after-hook/package.json
deleted file mode 100644
index 533a3eb..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/before-after-hook/package.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "name": "before-after-hook",
-  "version": "2.2.3",
-  "description": "asynchronous before/error/after hooks for internal functionality",
-  "main": "index.js",
-  "files": [
-    "index.js",
-    "index.d.ts",
-    "lib"
-  ],
-  "types": "./index.d.ts",
-  "scripts": {
-    "prebuild": "rimraf dist && mkdirp dist",
-    "build": "browserify index.js --standalone=Hook > dist/before-after-hook.js",
-    "postbuild": "uglifyjs dist/before-after-hook.js -mc > dist/before-after-hook.min.js",
-    "lint": "prettier --check '{lib,test,examples}/**/*' 'index.*' README.md package.json",
-    "lint:fix": "prettier --write '{lib,test,examples}/**/*' 'index.*' README.md package.json",
-    "pretest": "npm run -s lint",
-    "test": "npm run -s test:node | tap-spec",
-    "posttest": "npm run validate:ts",
-    "test:node": "node test",
-    "test:watch": "gaze 'clear && node test | tap-min' 'test/**/*.js' 'index.js' 'lib/**/*.js'",
-    "test:coverage": "istanbul cover test",
-    "test:coverage:upload": "istanbul-coveralls",
-    "validate:ts": "tsc --strict --target es6 index.d.ts",
-    "postvalidate:ts": "tsc --noEmit --strict --target es6 test/typescript-validate.ts",
-    "presemantic-release": "npm run build",
-    "semantic-release": "semantic-release"
-  },
-  "repository": "github:gr2m/before-after-hook",
-  "keywords": [
-    "hook",
-    "hooks",
-    "api"
-  ],
-  "author": "Gregor Martynus",
-  "license": "Apache-2.0",
-  "dependencies": {},
-  "devDependencies": {
-    "browserify": "^16.0.0",
-    "gaze-cli": "^0.2.0",
-    "istanbul": "^0.4.0",
-    "istanbul-coveralls": "^1.0.3",
-    "mkdirp": "^1.0.3",
-    "prettier": "^2.0.0",
-    "rimraf": "^3.0.0",
-    "semantic-release": "^19.0.3",
-    "simple-mock": "^0.8.0",
-    "tap-min": "^2.0.0",
-    "tap-spec": "^5.0.0",
-    "tape": "^5.0.0",
-    "typescript": "^3.5.3",
-    "uglify-js": "^3.9.0"
-  },
-  "release": {
-    "branches": [
-      "+([0-9]).x",
-      "main",
-      "next",
-      {
-        "name": "beta",
-        "prerelease": true
-      }
-    ]
-  },
-  "renovate": {
-    "extends": [
-      "github>gr2m/.github"
-    ]
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/deprecation/LICENSE b/actions/bcr-pr-review-notifier/node_modules/deprecation/LICENSE
deleted file mode 100644
index 1683b58..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/deprecation/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Gregor Martynus and contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/deprecation/README.md b/actions/bcr-pr-review-notifier/node_modules/deprecation/README.md
deleted file mode 100644
index 648809d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/deprecation/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# deprecation
-
-> Log a deprecation message with stack
-
-![build](https://action-badges.now.sh/gr2m/deprecation)
-
-## Usage
-
-<table>
-<tbody valign=top align=left>
-<tr><th>
-Browsers
-</th><td width=100%>
-
-Load `deprecation` directly from [cdn.pika.dev](https://cdn.pika.dev)
-
-```html
-<script type="module">
-  import { Deprecation } from "https://cdn.pika.dev/deprecation/v2";
-</script>
-```
-
-</td></tr>
-<tr><th>
-Node
-</th><td>
-
-Install with `npm install deprecation`
-
-```js
-const { Deprecation } = require("deprecation");
-// or: import { Deprecation } from "deprecation";
-```
-
-</td></tr>
-</tbody>
-</table>
-
-```js
-function foo() {
-  bar();
-}
-
-function bar() {
-  baz();
-}
-
-function baz() {
-  console.warn(new Deprecation("[my-lib] foo() is deprecated, use bar()"));
-}
-
-foo();
-// { Deprecation: [my-lib] foo() is deprecated, use bar()
-//     at baz (/path/to/file.js:12:15)
-//     at bar (/path/to/file.js:8:3)
-//     at foo (/path/to/file.js:4:3)
-```
-
-To log a deprecation message only once, you can use the [once](https://www.npmjs.com/package/once) module.
-
-```js
-const Deprecation = require("deprecation");
-const once = require("once");
-
-const deprecateFoo = once(console.warn);
-
-function foo() {
-  deprecateFoo(new Deprecation("[my-lib] foo() is deprecated, use bar()"));
-}
-
-foo();
-foo(); // logs nothing
-```
-
-## License
-
-[ISC](LICENSE)
diff --git a/actions/bcr-pr-review-notifier/node_modules/deprecation/dist-node/index.js b/actions/bcr-pr-review-notifier/node_modules/deprecation/dist-node/index.js
deleted file mode 100644
index 9da1775..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/deprecation/dist-node/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-class Deprecation extends Error {
-  constructor(message) {
-    super(message); // Maintains proper stack trace (only available on V8)
-
-    /* istanbul ignore next */
-
-    if (Error.captureStackTrace) {
-      Error.captureStackTrace(this, this.constructor);
-    }
-
-    this.name = 'Deprecation';
-  }
-
-}
-
-exports.Deprecation = Deprecation;
diff --git a/actions/bcr-pr-review-notifier/node_modules/deprecation/dist-src/index.js b/actions/bcr-pr-review-notifier/node_modules/deprecation/dist-src/index.js
deleted file mode 100644
index 7950fdc..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/deprecation/dist-src/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-export class Deprecation extends Error {
-  constructor(message) {
-    super(message); // Maintains proper stack trace (only available on V8)
-
-    /* istanbul ignore next */
-
-    if (Error.captureStackTrace) {
-      Error.captureStackTrace(this, this.constructor);
-    }
-
-    this.name = 'Deprecation';
-  }
-
-}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/deprecation/dist-types/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/deprecation/dist-types/index.d.ts
deleted file mode 100644
index e3ae7ad..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/deprecation/dist-types/index.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export class Deprecation extends Error {
-  name: "Deprecation";
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/deprecation/dist-web/index.js b/actions/bcr-pr-review-notifier/node_modules/deprecation/dist-web/index.js
deleted file mode 100644
index c6bbda7..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/deprecation/dist-web/index.js
+++ /dev/null
@@ -1,16 +0,0 @@
-class Deprecation extends Error {
-  constructor(message) {
-    super(message); // Maintains proper stack trace (only available on V8)
-
-    /* istanbul ignore next */
-
-    if (Error.captureStackTrace) {
-      Error.captureStackTrace(this, this.constructor);
-    }
-
-    this.name = 'Deprecation';
-  }
-
-}
-
-export { Deprecation };
diff --git a/actions/bcr-pr-review-notifier/node_modules/deprecation/package.json b/actions/bcr-pr-review-notifier/node_modules/deprecation/package.json
deleted file mode 100644
index a45fd51..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/deprecation/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "name": "deprecation",
-  "description": "Log a deprecation message with stack",
-  "version": "2.3.1",
-  "license": "ISC",
-  "files": [
-    "dist-*/",
-    "bin/"
-  ],
-  "esnext": "dist-src/index.js",
-  "main": "dist-node/index.js",
-  "module": "dist-web/index.js",
-  "types": "dist-types/index.d.ts",
-  "pika": true,
-  "sideEffects": false,
-  "keywords": [
-    "deprecate",
-    "deprecated",
-    "deprecation"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/gr2m/deprecation.git"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "@pika/pack": "^0.3.7",
-    "@pika/plugin-build-node": "^0.4.0",
-    "@pika/plugin-build-types": "^0.4.0",
-    "@pika/plugin-build-web": "^0.4.0",
-    "@pika/plugin-standard-pkg": "^0.4.0",
-    "semantic-release": "^15.13.3"
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/once/LICENSE b/actions/bcr-pr-review-notifier/node_modules/once/LICENSE
deleted file mode 100644
index 19129e3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/once/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/once/README.md b/actions/bcr-pr-review-notifier/node_modules/once/README.md
deleted file mode 100644
index 1f1ffca..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/once/README.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# once
-
-Only call a function once.
-
-## usage
-
-```javascript
-var once = require('once')
-
-function load (file, cb) {
-  cb = once(cb)
-  loader.load('file')
-  loader.once('load', cb)
-  loader.once('error', cb)
-}
-```
-
-Or add to the Function.prototype in a responsible way:
-
-```javascript
-// only has to be done once
-require('once').proto()
-
-function load (file, cb) {
-  cb = cb.once()
-  loader.load('file')
-  loader.once('load', cb)
-  loader.once('error', cb)
-}
-```
-
-Ironically, the prototype feature makes this module twice as
-complicated as necessary.
-
-To check whether you function has been called, use `fn.called`. Once the
-function is called for the first time the return value of the original
-function is saved in `fn.value` and subsequent calls will continue to
-return this value.
-
-```javascript
-var once = require('once')
-
-function load (cb) {
-  cb = once(cb)
-  var stream = createStream()
-  stream.once('data', cb)
-  stream.once('end', function () {
-    if (!cb.called) cb(new Error('not found'))
-  })
-}
-```
-
-## `once.strict(func)`
-
-Throw an error if the function is called twice.
-
-Some functions are expected to be called only once. Using `once` for them would
-potentially hide logical errors.
-
-In the example below, the `greet` function has to call the callback only once:
-
-```javascript
-function greet (name, cb) {
-  // return is missing from the if statement
-  // when no name is passed, the callback is called twice
-  if (!name) cb('Hello anonymous')
-  cb('Hello ' + name)
-}
-
-function log (msg) {
-  console.log(msg)
-}
-
-// this will print 'Hello anonymous' but the logical error will be missed
-greet(null, once(msg))
-
-// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time
-greet(null, once.strict(msg))
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/once/once.js b/actions/bcr-pr-review-notifier/node_modules/once/once.js
deleted file mode 100644
index 2354067..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/once/once.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var wrappy = require('wrappy')
-module.exports = wrappy(once)
-module.exports.strict = wrappy(onceStrict)
-
-once.proto = once(function () {
-  Object.defineProperty(Function.prototype, 'once', {
-    value: function () {
-      return once(this)
-    },
-    configurable: true
-  })
-
-  Object.defineProperty(Function.prototype, 'onceStrict', {
-    value: function () {
-      return onceStrict(this)
-    },
-    configurable: true
-  })
-})
-
-function once (fn) {
-  var f = function () {
-    if (f.called) return f.value
-    f.called = true
-    return f.value = fn.apply(this, arguments)
-  }
-  f.called = false
-  return f
-}
-
-function onceStrict (fn) {
-  var f = function () {
-    if (f.called)
-      throw new Error(f.onceError)
-    f.called = true
-    return f.value = fn.apply(this, arguments)
-  }
-  var name = fn.name || 'Function wrapped with `once`'
-  f.onceError = name + " shouldn't be called more than once"
-  f.called = false
-  return f
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/once/package.json b/actions/bcr-pr-review-notifier/node_modules/once/package.json
deleted file mode 100644
index 16815b2..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/once/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-  "name": "once",
-  "version": "1.4.0",
-  "description": "Run a function exactly one time",
-  "main": "once.js",
-  "directories": {
-    "test": "test"
-  },
-  "dependencies": {
-    "wrappy": "1"
-  },
-  "devDependencies": {
-    "tap": "^7.0.1"
-  },
-  "scripts": {
-    "test": "tap test/*.js"
-  },
-  "files": [
-    "once.js"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/once"
-  },
-  "keywords": [
-    "once",
-    "function",
-    "one",
-    "single"
-  ],
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "license": "ISC"
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/encodings.xml b/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/encodings.xml
deleted file mode 100644
index 97626ba..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/encodings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="Encoding">
-    <file url="PROJECT" charset="UTF-8" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/modules.xml b/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/modules.xml
deleted file mode 100644
index 27bf888..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/.idea/node-tunnel.iml" filepath="$PROJECT_DIR$/.idea/node-tunnel.iml" />
-    </modules>
-  </component>
-</project>
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/node-tunnel.iml b/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/node-tunnel.iml
deleted file mode 100644
index 24643cc..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/node-tunnel.iml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="WEB_MODULE" version="4">
-  <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$">
-      <excludeFolder url="file://$MODULE_DIR$/.tmp" />
-      <excludeFolder url="file://$MODULE_DIR$/temp" />
-      <excludeFolder url="file://$MODULE_DIR$/tmp" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/vcs.xml b/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$" vcs="Git" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/workspace.xml b/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/workspace.xml
deleted file mode 100644
index 1a318c8..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/tunnel/.idea/workspace.xml
+++ /dev/null
@@ -1,797 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ChangeListManager">
-    <list default="true" id="3caed8aa-31ae-4b3d-ad18-6f9796663516" name="Default" comment="">
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.travis.yml" afterPath="$PROJECT_DIR$/.travis.yml" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/CHANGELOG.md" afterPath="$PROJECT_DIR$/CHANGELOG.md" />
-    </list>
-    <ignored path="$PROJECT_DIR$/.tmp/" />
-    <ignored path="$PROJECT_DIR$/temp/" />
-    <ignored path="$PROJECT_DIR$/tmp/" />
-    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
-    <option name="TRACKING_ENABLED" value="true" />
-    <option name="SHOW_DIALOG" value="false" />
-    <option name="HIGHLIGHT_CONFLICTS" value="true" />
-    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
-    <option name="LAST_RESOLUTION" value="IGNORE" />
-  </component>
-  <component name="FileEditorManager">
-    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="package.json" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/package.json">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="34">
-              <caret line="2" column="19" lean-forward="false" selection-start-line="2" selection-start-column="19" selection-end-line="2" selection-end-column="19" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="README.md" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/README.md">
-          <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
-            <state split_layout="SPLIT">
-              <first_editor relative-caret-position="2312">
-                <caret line="136" column="67" lean-forward="false" selection-start-line="136" selection-start-column="67" selection-end-line="136" selection-end-column="67" />
-                <folding>
-                  <marker date="1497272379133" expanded="true" signature="590:646" ph="{...}" />
-                  <marker date="1497272379133" expanded="true" signature="601:644" ph="{&quot;host&quot;: 'localhost'...}" />
-                  <marker date="1497272379133" expanded="true" signature="674:737" ph="{&quot;host&quot;: 'example.com'...}" />
-                  <marker date="1497272379133" expanded="true" signature="884:1330" ph="{&quot;maxSockets&quot;: poolSize...}" />
-                  <marker date="1497272379133" expanded="true" signature="964:1328" ph="{&quot;host&quot;: proxyHost...}" />
-                  <marker date="1497272379133" expanded="true" signature="1103:1192" ph="//..." />
-                  <marker date="1497272379133" expanded="true" signature="1290:1324" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-                  <marker date="1497272379133" expanded="true" signature="1357:1419" ph="{&quot;host&quot;: 'example.com'...}" />
-                  <marker date="1497272379133" expanded="true" signature="1514:2209" ph="{&quot;maxSockets&quot;: poolSize...}" />
-                  <marker date="1497272379133" expanded="true" signature="1540:1623" ph="//..." />
-                  <marker date="1497272379133" expanded="true" signature="1842:2207" ph="{&quot;host&quot;: proxyHost...}" />
-                  <marker date="1497272379133" expanded="true" signature="1981:2070" ph="//..." />
-                  <marker date="1497272379133" expanded="true" signature="2168:2202" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-                  <marker date="1497272379133" expanded="true" signature="2237:2300" ph="{&quot;host&quot;: 'example.com'...}" />
-                  <marker date="1497272379133" expanded="true" signature="2395:3180" ph="{&quot;maxSockets&quot;: poolSize...}" />
-                  <marker date="1497272379133" expanded="true" signature="2475:3178" ph="{&quot;host&quot;: proxyHost...}" />
-                  <marker date="1497272379133" expanded="true" signature="2615:2704" ph="//..." />
-                  <marker date="1497272379133" expanded="true" signature="2802:2836" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-                  <marker date="1497272379133" expanded="true" signature="3207:3269" ph="{&quot;host&quot;: 'example.com'...}" />
-                  <marker date="1497272379133" expanded="true" signature="3366:4398" ph="{&quot;maxSockets&quot;: poolSize...}" />
-                  <marker date="1497272379133" expanded="true" signature="3392:3475" ph="//..." />
-                  <marker date="1497272379133" expanded="true" signature="3694:4396" ph="{&quot;host&quot;: proxyHost...}" />
-                  <marker date="1497272379133" expanded="true" signature="3834:3923" ph="//..." />
-                  <marker date="1497272379133" expanded="true" signature="4021:4055" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-                  <marker date="1497272379133" expanded="true" signature="4426:4489" ph="{&quot;host&quot;: 'example.com'...}" />
-                </folding>
-              </first_editor>
-              <second_editor />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name=".travis.yml" pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/.travis.yml">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="102">
-              <caret line="6" column="0" lean-forward="true" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="tunnel.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/tunnel.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="697">
-              <caret line="41" column="19" lean-forward="false" selection-start-line="41" selection-start-column="19" selection-end-line="41" selection-end-column="19" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="http-over-http-error.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/test/http-over-http-error.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="935">
-              <caret line="55" column="26" lean-forward="true" selection-start-line="55" selection-start-column="26" selection-end-line="55" selection-end-column="26" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="http-over-http-error2.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/test/http-over-http-error2.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1207">
-              <caret line="71" column="0" lean-forward="false" selection-start-line="71" selection-start-column="0" selection-end-line="71" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="https-over-http.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/test/https-over-http.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1479">
-              <caret line="87" column="0" lean-forward="false" selection-start-line="87" selection-start-column="0" selection-end-line="87" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="https-over-https.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/test/https-over-https.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="0">
-              <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="http-over-http.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/test/http-over-http.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1088">
-              <caret line="64" column="26" lean-forward="true" selection-start-line="64" selection-start-column="26" selection-end-line="64" selection-end-column="26" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="CHANGELOG.md" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/CHANGELOG.md">
-          <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
-            <state split_layout="SPLIT">
-              <first_editor relative-caret-position="102">
-                <caret line="6" column="0" lean-forward="false" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
-                <folding />
-              </first_editor>
-              <second_editor />
-            </state>
-          </provider>
-        </entry>
-      </file>
-    </leaf>
-  </component>
-  <component name="FileTemplateManagerImpl">
-    <option name="RECENT_TEMPLATES">
-      <list>
-        <option value="JavaScript File" />
-      </list>
-    </option>
-  </component>
-  <component name="FindInProjectRecents">
-    <findStrings>
-      <find>max</find>
-      <find>onconne</find>
-    </findStrings>
-  </component>
-  <component name="Git.Settings">
-    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
-  </component>
-  <component name="IdeDocumentHistory">
-    <option name="CHANGED_PATHS">
-      <list>
-        <option value="$PROJECT_DIR$/test/http-over-http-error.js" />
-        <option value="$PROJECT_DIR$/README.md" />
-        <option value="$PROJECT_DIR$/package.json" />
-        <option value="$PROJECT_DIR$/test/http-over-http-error2.js" />
-        <option value="$PROJECT_DIR$/test/https-over-http-localaddress.js" />
-        <option value="$PROJECT_DIR$/test/https-over-http.js" />
-        <option value="$PROJECT_DIR$/lib/tunnel.js" />
-        <option value="$PROJECT_DIR$/CHANGELOG.md" />
-        <option value="$PROJECT_DIR$/.travis.yml" />
-      </list>
-    </option>
-  </component>
-  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
-  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER">
-    <package-json value="$PROJECT_DIR$/package.json" />
-  </component>
-  <component name="JsFlowSettings">
-    <service-enabled>false</service-enabled>
-    <exe-path />
-    <annotation-enable>false</annotation-enable>
-    <other-services-enabled>false</other-services-enabled>
-    <auto-save>true</auto-save>
-  </component>
-  <component name="JsGulpfileManager">
-    <detection-done>true</detection-done>
-    <sorting>DEFINITION_ORDER</sorting>
-  </component>
-  <component name="NodeModulesDirectoryManager">
-    <handled-path value="$PROJECT_DIR$/node_modules" />
-  </component>
-  <component name="ProjectFrameBounds">
-    <option name="x" value="785" />
-    <option name="y" value="40" />
-    <option name="width" value="1788" />
-    <option name="height" value="1407" />
-  </component>
-  <component name="ProjectView">
-    <navigator currentView="ProjectPane" proportions="" version="1">
-      <flattenPackages />
-      <showMembers />
-      <showModules />
-      <showLibraryContents />
-      <hideEmptyPackages />
-      <abbreviatePackageNames />
-      <autoscrollToSource />
-      <autoscrollFromSource ProjectPane="true" />
-      <sortByType />
-      <manualOrder />
-      <foldersAlwaysOnTop value="true" />
-    </navigator>
-    <panes>
-      <pane id="Scope" />
-      <pane id="Scratches" />
-      <pane id="ProjectPane">
-        <subPane>
-          <expand>
-            <path>
-              <item name="node-tunnel" type="b2602c69:ProjectViewProjectNode" />
-              <item name="node-tunnel" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="node-tunnel" type="b2602c69:ProjectViewProjectNode" />
-              <item name="node-tunnel" type="462c0819:PsiDirectoryNode" />
-              <item name="lib" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="node-tunnel" type="b2602c69:ProjectViewProjectNode" />
-              <item name="node-tunnel" type="462c0819:PsiDirectoryNode" />
-              <item name="test" type="462c0819:PsiDirectoryNode" />
-            </path>
-          </expand>
-          <select />
-        </subPane>
-      </pane>
-    </panes>
-  </component>
-  <component name="PropertiesComponent">
-    <property name="WebServerToolWindowFactoryState" value="false" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
-    <property name="HbShouldOpenHtmlAsHb" value="" />
-    <property name="nodejs_interpreter_path" value="$PROJECT_DIR$/../../nvmw/v6.10.3/node" />
-  </component>
-  <component name="RecentsManager">
-    <key name="CopyFile.RECENT_KEYS">
-      <recent name="C:\Users\koichik\git\koichik\node-tunnel\test" />
-    </key>
-  </component>
-  <component name="RunDashboard">
-    <option name="ruleStates">
-      <list>
-        <RuleState>
-          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
-        </RuleState>
-        <RuleState>
-          <option name="name" value="StatusDashboardGroupingRule" />
-        </RuleState>
-      </list>
-    </option>
-  </component>
-  <component name="RunManager">
-    <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
-      <node-interpreter>project</node-interpreter>
-      <node-options />
-      <gulpfile />
-      <tasks />
-      <arguments />
-      <envs />
-    </configuration>
-    <configuration default="true" type="DartCommandLineRunConfigurationType" factoryName="Dart Command Line Application">
-      <method />
-    </configuration>
-    <configuration default="true" type="DartTestRunConfigurationType" factoryName="Dart Test">
-      <method />
-    </configuration>
-    <configuration default="true" type="JavaScriptTestRunnerJest" factoryName="Jest">
-      <node-interpreter value="project" />
-      <working-dir value="" />
-      <envs />
-      <scope-kind value="ALL" />
-      <method />
-    </configuration>
-    <configuration default="true" type="JavaScriptTestRunnerKarma" factoryName="Karma">
-      <config-file value="" />
-      <node-interpreter value="project" />
-      <envs />
-      <method />
-    </configuration>
-    <configuration default="true" type="JavaScriptTestRunnerProtractor" factoryName="Protractor">
-      <config-file value="" />
-      <node-interpreter value="project" />
-      <envs />
-      <method />
-    </configuration>
-    <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
-      <method />
-    </configuration>
-    <configuration default="true" type="NodeJSConfigurationType" factoryName="Node.js" path-to-node="project" working-dir="">
-      <method />
-    </configuration>
-    <configuration default="true" type="cucumber.js" factoryName="Cucumber.js">
-      <option name="cucumberJsArguments" value="" />
-      <option name="executablePath" />
-      <option name="filePath" />
-      <method />
-    </configuration>
-    <configuration default="true" type="js.build_tools.npm" factoryName="npm">
-      <command value="run" />
-      <scripts />
-      <node-interpreter value="project" />
-      <envs />
-      <method />
-    </configuration>
-    <configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha">
-      <node-interpreter>project</node-interpreter>
-      <node-options />
-      <working-directory />
-      <pass-parent-env>true</pass-parent-env>
-      <envs />
-      <ui />
-      <extra-mocha-options />
-      <test-kind>DIRECTORY</test-kind>
-      <test-directory />
-      <recursive>false</recursive>
-      <method />
-    </configuration>
-  </component>
-  <component name="ShelveChangesManager" show_recycled="false">
-    <option name="remove_strategy" value="false" />
-  </component>
-  <component name="SvnConfiguration">
-    <configuration />
-  </component>
-  <component name="TaskManager">
-    <task active="true" id="Default" summary="Default task">
-      <changelist id="3caed8aa-31ae-4b3d-ad18-6f9796663516" name="Default" comment="" />
-      <created>1497256565348</created>
-      <option name="number" value="Default" />
-      <option name="presentableId" value="Default" />
-      <updated>1497256565348</updated>
-      <workItem from="1497256566573" duration="8794000" />
-      <workItem from="1497272051717" duration="2328000" />
-      <workItem from="1536577850117" duration="8708000" />
-      <workItem from="1536636907096" duration="739000" />
-    </task>
-    <servers />
-  </component>
-  <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="20569000" />
-  </component>
-  <component name="ToolWindowManager">
-    <frame x="785" y="40" width="1788" height="1407" extended-state="0" />
-    <editor active="true" />
-    <layout>
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
-      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
-      <window_info id="SvgViewer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32967034" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
-      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
-      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
-      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
-      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-    </layout>
-  </component>
-  <component name="TypeScriptGeneratedFilesManager">
-    <option name="version" value="1" />
-  </component>
-  <component name="VcsContentAnnotationSettings">
-    <option name="myLimit" value="2678400000" />
-  </component>
-  <component name="XDebuggerManager">
-    <breakpoint-manager />
-    <watches-manager />
-  </component>
-  <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/package.json">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="34">
-          <caret line="2" column="19" lean-forward="false" selection-start-line="2" selection-start-column="19" selection-end-line="2" selection-end-column="19" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/README.md">
-      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
-        <state split_layout="SPLIT">
-          <first_editor relative-caret-position="2312">
-            <caret line="136" column="67" lean-forward="false" selection-start-line="136" selection-start-column="67" selection-end-line="136" selection-end-column="67" />
-            <folding>
-              <marker date="1497272379133" expanded="true" signature="590:646" ph="{...}" />
-              <marker date="1497272379133" expanded="true" signature="601:644" ph="{&quot;host&quot;: 'localhost'...}" />
-              <marker date="1497272379133" expanded="true" signature="674:737" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="884:1330" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="964:1328" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="1103:1192" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="1290:1324" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="1357:1419" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="1514:2209" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="1540:1623" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="1842:2207" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="1981:2070" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="2168:2202" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="2237:2300" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="2395:3180" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="2475:3178" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="2615:2704" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="2802:2836" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="3207:3269" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="3366:4398" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="3392:3475" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="3694:4396" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="3834:3923" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="4021:4055" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="4426:4489" ph="{&quot;host&quot;: 'example.com'...}" />
-            </folding>
-          </first_editor>
-          <second_editor />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/.travis.yml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="102">
-          <caret line="6" column="0" lean-forward="true" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/http-over-http-error.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="935">
-          <caret line="55" column="26" lean-forward="true" selection-start-line="55" selection-start-column="26" selection-end-line="55" selection-end-column="26" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/http-over-http-error2.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1207">
-          <caret line="71" column="0" lean-forward="false" selection-start-line="71" selection-start-column="0" selection-end-line="71" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/https-over-http.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1479">
-          <caret line="87" column="0" lean-forward="false" selection-start-line="87" selection-start-column="0" selection-end-line="87" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/https-over-https.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/http-over-http.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1088">
-          <caret line="64" column="26" lean-forward="true" selection-start-line="64" selection-start-column="26" selection-end-line="64" selection-end-column="26" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/lib/tunnel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="697">
-          <caret line="41" column="19" lean-forward="false" selection-start-line="41" selection-start-column="19" selection-end-line="41" selection-end-column="19" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/package.json">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="34">
-          <caret line="2" column="19" lean-forward="false" selection-start-line="2" selection-start-column="19" selection-end-line="2" selection-end-column="19" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/README.md">
-      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
-        <state split_layout="SPLIT">
-          <first_editor relative-caret-position="2312">
-            <caret line="136" column="67" lean-forward="false" selection-start-line="136" selection-start-column="67" selection-end-line="136" selection-end-column="67" />
-            <folding>
-              <marker date="1497272379133" expanded="true" signature="590:646" ph="{...}" />
-              <marker date="1497272379133" expanded="true" signature="601:644" ph="{&quot;host&quot;: 'localhost'...}" />
-              <marker date="1497272379133" expanded="true" signature="674:737" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="884:1330" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="964:1328" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="1103:1192" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="1290:1324" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="1357:1419" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="1514:2209" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="1540:1623" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="1842:2207" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="1981:2070" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="2168:2202" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="2237:2300" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="2395:3180" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="2475:3178" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="2615:2704" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="2802:2836" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="3207:3269" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="3366:4398" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="3392:3475" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="3694:4396" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="3834:3923" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="4021:4055" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="4426:4489" ph="{&quot;host&quot;: 'example.com'...}" />
-            </folding>
-          </first_editor>
-          <second_editor />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/lib/tunnel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2550">
-          <caret line="150" column="0" lean-forward="false" selection-start-line="150" selection-start-column="0" selection-end-line="150" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/CHANGELOG.md">
-      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
-        <state split_layout="SPLIT">
-          <first_editor relative-caret-position="51">
-            <caret line="3" column="21" lean-forward="false" selection-start-line="3" selection-start-column="21" selection-end-line="3" selection-end-column="21" />
-            <folding />
-          </first_editor>
-          <second_editor />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/.travis.yml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="119">
-          <caret line="7" column="0" lean-forward="true" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/package.json">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/README.md">
-      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
-        <state split_layout="SPLIT">
-          <first_editor relative-caret-position="0">
-            <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-            <folding>
-              <marker date="1497272379133" expanded="true" signature="590:646" ph="{...}" />
-              <marker date="1497272379133" expanded="true" signature="601:644" ph="{&quot;host&quot;: 'localhost'...}" />
-              <marker date="1497272379133" expanded="true" signature="674:737" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="884:1330" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="964:1328" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="1103:1192" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="1290:1324" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="1357:1419" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="1514:2209" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="1540:1623" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="1842:2207" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="1981:2070" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="2168:2202" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="2237:2300" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="2395:3180" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="2475:3178" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="2615:2704" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="2802:2836" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="3207:3269" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="3366:4398" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="3392:3475" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="3694:4396" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="3834:3923" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="4021:4055" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="4426:4489" ph="{&quot;host&quot;: 'example.com'...}" />
-            </folding>
-          </first_editor>
-          <second_editor />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/.travis.yml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/lib/tunnel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2550">
-          <caret line="150" column="0" lean-forward="false" selection-start-line="150" selection-start-column="0" selection-end-line="150" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/https-over-https.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/https-over-https-error.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/http-over-http.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="136">
-          <caret line="8" column="0" lean-forward="false" selection-start-line="7" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/http-over-http-error.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1309">
-          <caret line="77" column="0" lean-forward="false" selection-start-line="77" selection-start-column="0" selection-end-line="77" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/http-over-https.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/http-over-https.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/https-over-https-error.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/README.md">
-      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
-        <state split_layout="SPLIT">
-          <first_editor relative-caret-position="2312">
-            <caret line="136" column="67" lean-forward="false" selection-start-line="136" selection-start-column="67" selection-end-line="136" selection-end-column="67" />
-            <folding>
-              <marker date="1497272379133" expanded="true" signature="590:646" ph="{...}" />
-              <marker date="1497272379133" expanded="true" signature="601:644" ph="{&quot;host&quot;: 'localhost'...}" />
-              <marker date="1497272379133" expanded="true" signature="674:737" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="884:1330" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="964:1328" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="1103:1192" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="1290:1324" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="1357:1419" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="1514:2209" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="1540:1623" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="1842:2207" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="1981:2070" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="2168:2202" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="2237:2300" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="2395:3180" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="2475:3178" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="2615:2704" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="2802:2836" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="3207:3269" ph="{&quot;host&quot;: 'example.com'...}" />
-              <marker date="1497272379133" expanded="true" signature="3366:4398" ph="{&quot;maxSockets&quot;: poolSize...}" />
-              <marker date="1497272379133" expanded="true" signature="3392:3475" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="3694:4396" ph="{&quot;host&quot;: proxyHost...}" />
-              <marker date="1497272379133" expanded="true" signature="3834:3923" ph="//..." />
-              <marker date="1497272379133" expanded="true" signature="4021:4055" ph="{&quot;User-Agent&quot;: 'Node'...}" />
-              <marker date="1497272379133" expanded="true" signature="4426:4489" ph="{&quot;host&quot;: 'example.com'...}" />
-            </folding>
-          </first_editor>
-          <second_editor />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/package.json">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="34">
-          <caret line="2" column="19" lean-forward="false" selection-start-line="2" selection-start-column="19" selection-end-line="2" selection-end-column="19" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/http-over-http-error.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="935">
-          <caret line="55" column="26" lean-forward="true" selection-start-line="55" selection-start-column="26" selection-end-line="55" selection-end-column="26" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/http-over-http-error2.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1207">
-          <caret line="71" column="0" lean-forward="false" selection-start-line="71" selection-start-column="0" selection-end-line="71" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/https-over-http-localaddress.js" />
-    <entry file="file://$PROJECT_DIR$/test/https-over-https.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/http-over-http.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1088">
-          <caret line="64" column="26" lean-forward="true" selection-start-line="64" selection-start-column="26" selection-end-line="64" selection-end-column="26" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/https-over-http.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1479">
-          <caret line="87" column="0" lean-forward="false" selection-start-line="87" selection-start-column="0" selection-end-line="87" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/lib/tunnel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="697">
-          <caret line="41" column="19" lean-forward="false" selection-start-line="41" selection-start-column="19" selection-end-line="41" selection-end-column="19" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/CHANGELOG.md">
-      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
-        <state split_layout="SPLIT">
-          <first_editor relative-caret-position="102">
-            <caret line="6" column="0" lean-forward="false" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
-            <folding />
-          </first_editor>
-          <second_editor />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/.travis.yml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="102">
-          <caret line="6" column="0" lean-forward="true" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-  </component>
-</project>
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/tunnel/.travis.yml b/actions/bcr-pr-review-notifier/node_modules/tunnel/.travis.yml
deleted file mode 100644
index cb6e182..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/tunnel/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-language: node_js
-node_js:
-  - "4"
-  - "6"
-  - "8"
-  - "10"
diff --git a/actions/bcr-pr-review-notifier/node_modules/tunnel/CHANGELOG.md b/actions/bcr-pr-review-notifier/node_modules/tunnel/CHANGELOG.md
deleted file mode 100644
index baf6b18..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/tunnel/CHANGELOG.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Changelog
-
- - 0.0.6 (2018/09/11)
-   - Fix `localAddress` not working (#25)
-   - Fix `Host:` header for CONNECT method by @tmurakam (#29, #30)
-   - Fix default port for https (#32)
-   - Fix error handling when the proxy send illegal response body (#33)
-
- - 0.0.5 (2017/06/12)
-   - Fix socket leak.
- 
- - 0.0.4 (2016/01/23)
-   - supported Node v0.12 or later.
-
- - 0.0.3 (2014/01/20)
-   - fixed package.json
-
- - 0.0.1 (2012/02/18)
-   - supported Node v0.6.x (0.6.11 or later).
-
- - 0.0.0 (2012/02/11)
-   - first release.
diff --git a/actions/bcr-pr-review-notifier/node_modules/tunnel/LICENSE b/actions/bcr-pr-review-notifier/node_modules/tunnel/LICENSE
deleted file mode 100644
index 8b8a895..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/tunnel/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2012 Koichi Kobayashi
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/tunnel/README.md b/actions/bcr-pr-review-notifier/node_modules/tunnel/README.md
deleted file mode 100644
index f54bca5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/tunnel/README.md
+++ /dev/null
@@ -1,185 +0,0 @@
-# node-tunnel - HTTP/HTTPS Agents for tunneling proxies
-
-[![Build Status](https://img.shields.io/travis/koichik/node-tunnel.svg?style=flat)](https://travis-ci.org/koichik/node-tunnel)
-[![Dependency Status](http://img.shields.io/david/koichik/node-tunnel.svg?style=flat)](https://david-dm.org/koichik/node-tunnel#info=dependencies)
-[![DevDependency Status](http://img.shields.io/david/dev/koichik/node-tunnel.svg?style=flat)](https://david-dm.org/koichik/node-tunnel#info=devDependencies)
-
-## Example
-
-```javascript
-var tunnel = require('tunnel');
-
-var tunnelingAgent = tunnel.httpsOverHttp({
-  proxy: {
-    host: 'localhost',
-    port: 3128
-  }
-});
-
-var req = https.request({
-  host: 'example.com',
-  port: 443,
-  agent: tunnelingAgent
-});
-```
-
-## Installation
-
-    $ npm install tunnel
-
-## Usages
-
-### HTTP over HTTP tunneling
-
-```javascript
-var tunnelingAgent = tunnel.httpOverHttp({
-  maxSockets: poolSize, // Defaults to http.Agent.defaultMaxSockets
-
-  proxy: { // Proxy settings
-    host: proxyHost, // Defaults to 'localhost'
-    port: proxyPort, // Defaults to 80
-    localAddress: localAddress, // Local interface if necessary
-
-    // Basic authorization for proxy server if necessary
-    proxyAuth: 'user:password',
-
-    // Header fields for proxy server if necessary
-    headers: {
-      'User-Agent': 'Node'
-    }
-  }
-});
-
-var req = http.request({
-  host: 'example.com',
-  port: 80,
-  agent: tunnelingAgent
-});
-```
-
-### HTTPS over HTTP tunneling
-
-```javascript
-var tunnelingAgent = tunnel.httpsOverHttp({
-  maxSockets: poolSize, // Defaults to http.Agent.defaultMaxSockets
-
-  // CA for origin server if necessary
-  ca: [ fs.readFileSync('origin-server-ca.pem')],
-
-  // Client certification for origin server if necessary
-  key: fs.readFileSync('origin-server-key.pem'),
-  cert: fs.readFileSync('origin-server-cert.pem'),
-
-  proxy: { // Proxy settings
-    host: proxyHost, // Defaults to 'localhost'
-    port: proxyPort, // Defaults to 80
-    localAddress: localAddress, // Local interface if necessary
-
-    // Basic authorization for proxy server if necessary
-    proxyAuth: 'user:password',
-
-    // Header fields for proxy server if necessary
-    headers: {
-      'User-Agent': 'Node'
-    },
-  }
-});
-
-var req = https.request({
-  host: 'example.com',
-  port: 443,
-  agent: tunnelingAgent
-});
-```
-
-### HTTP over HTTPS tunneling
-
-```javascript
-var tunnelingAgent = tunnel.httpOverHttps({
-  maxSockets: poolSize, // Defaults to http.Agent.defaultMaxSockets
-
-  proxy: { // Proxy settings
-    host: proxyHost, // Defaults to 'localhost'
-    port: proxyPort, // Defaults to 443
-    localAddress: localAddress, // Local interface if necessary
-
-    // Basic authorization for proxy server if necessary
-    proxyAuth: 'user:password',
-
-    // Header fields for proxy server if necessary
-    headers: {
-      'User-Agent': 'Node'
-    },
-
-    // CA for proxy server if necessary
-    ca: [ fs.readFileSync('origin-server-ca.pem')],
-
-    // Server name for verification if necessary
-    servername: 'example.com',
-
-    // Client certification for proxy server if necessary
-    key: fs.readFileSync('origin-server-key.pem'),
-    cert: fs.readFileSync('origin-server-cert.pem'),
-  }
-});
-
-var req = http.request({
-  host: 'example.com',
-  port: 80,
-  agent: tunnelingAgent
-});
-```
-
-### HTTPS over HTTPS tunneling
-
-```javascript
-var tunnelingAgent = tunnel.httpsOverHttps({
-  maxSockets: poolSize, // Defaults to http.Agent.defaultMaxSockets
-
-  // CA for origin server if necessary
-  ca: [ fs.readFileSync('origin-server-ca.pem')],
-
-  // Client certification for origin server if necessary
-  key: fs.readFileSync('origin-server-key.pem'),
-  cert: fs.readFileSync('origin-server-cert.pem'),
-
-  proxy: { // Proxy settings
-    host: proxyHost, // Defaults to 'localhost'
-    port: proxyPort, // Defaults to 443
-    localAddress: localAddress, // Local interface if necessary
-
-    // Basic authorization for proxy server if necessary
-    proxyAuth: 'user:password',
-
-    // Header fields for proxy server if necessary
-    headers: {
-      'User-Agent': 'Node'
-    }
-
-    // CA for proxy server if necessary
-    ca: [ fs.readFileSync('origin-server-ca.pem')],
-
-    // Server name for verification if necessary
-    servername: 'example.com',
-
-    // Client certification for proxy server if necessary
-    key: fs.readFileSync('origin-server-key.pem'),
-    cert: fs.readFileSync('origin-server-cert.pem'),
-  }
-});
-
-var req = https.request({
-  host: 'example.com',
-  port: 443,
-  agent: tunnelingAgent
-});
-```
-
-## CONTRIBUTORS
-* [Aleksis Brezas (abresas)](https://github.com/abresas)
-* [Jackson Tian (JacksonTian)](https://github.com/JacksonTian)
-* [Dmitry Sorin (1999)](https://github.com/1999)
-
-## License
-
-Licensed under the [MIT](https://github.com/koichik/node-tunnel/blob/master/LICENSE) license.
diff --git a/actions/bcr-pr-review-notifier/node_modules/tunnel/index.js b/actions/bcr-pr-review-notifier/node_modules/tunnel/index.js
deleted file mode 100644
index 2947757..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/tunnel/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib/tunnel');
diff --git a/actions/bcr-pr-review-notifier/node_modules/tunnel/lib/tunnel.js b/actions/bcr-pr-review-notifier/node_modules/tunnel/lib/tunnel.js
deleted file mode 100644
index 10cc382..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/tunnel/lib/tunnel.js
+++ /dev/null
@@ -1,264 +0,0 @@
-'use strict';
-
-var net = require('net');
-var tls = require('tls');
-var http = require('http');
-var https = require('https');
-var events = require('events');
-var assert = require('assert');
-var util = require('util');
-
-
-exports.httpOverHttp = httpOverHttp;
-exports.httpsOverHttp = httpsOverHttp;
-exports.httpOverHttps = httpOverHttps;
-exports.httpsOverHttps = httpsOverHttps;
-
-
-function httpOverHttp(options) {
-  var agent = new TunnelingAgent(options);
-  agent.request = http.request;
-  return agent;
-}
-
-function httpsOverHttp(options) {
-  var agent = new TunnelingAgent(options);
-  agent.request = http.request;
-  agent.createSocket = createSecureSocket;
-  agent.defaultPort = 443;
-  return agent;
-}
-
-function httpOverHttps(options) {
-  var agent = new TunnelingAgent(options);
-  agent.request = https.request;
-  return agent;
-}
-
-function httpsOverHttps(options) {
-  var agent = new TunnelingAgent(options);
-  agent.request = https.request;
-  agent.createSocket = createSecureSocket;
-  agent.defaultPort = 443;
-  return agent;
-}
-
-
-function TunnelingAgent(options) {
-  var self = this;
-  self.options = options || {};
-  self.proxyOptions = self.options.proxy || {};
-  self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;
-  self.requests = [];
-  self.sockets = [];
-
-  self.on('free', function onFree(socket, host, port, localAddress) {
-    var options = toOptions(host, port, localAddress);
-    for (var i = 0, len = self.requests.length; i < len; ++i) {
-      var pending = self.requests[i];
-      if (pending.host === options.host && pending.port === options.port) {
-        // Detect the request to connect same origin server,
-        // reuse the connection.
-        self.requests.splice(i, 1);
-        pending.request.onSocket(socket);
-        return;
-      }
-    }
-    socket.destroy();
-    self.removeSocket(socket);
-  });
-}
-util.inherits(TunnelingAgent, events.EventEmitter);
-
-TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {
-  var self = this;
-  var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));
-
-  if (self.sockets.length >= this.maxSockets) {
-    // We are over limit so we'll add it to the queue.
-    self.requests.push(options);
-    return;
-  }
-
-  // If we are under maxSockets create a new one.
-  self.createSocket(options, function(socket) {
-    socket.on('free', onFree);
-    socket.on('close', onCloseOrRemove);
-    socket.on('agentRemove', onCloseOrRemove);
-    req.onSocket(socket);
-
-    function onFree() {
-      self.emit('free', socket, options);
-    }
-
-    function onCloseOrRemove(err) {
-      self.removeSocket(socket);
-      socket.removeListener('free', onFree);
-      socket.removeListener('close', onCloseOrRemove);
-      socket.removeListener('agentRemove', onCloseOrRemove);
-    }
-  });
-};
-
-TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
-  var self = this;
-  var placeholder = {};
-  self.sockets.push(placeholder);
-
-  var connectOptions = mergeOptions({}, self.proxyOptions, {
-    method: 'CONNECT',
-    path: options.host + ':' + options.port,
-    agent: false,
-    headers: {
-      host: options.host + ':' + options.port
-    }
-  });
-  if (options.localAddress) {
-    connectOptions.localAddress = options.localAddress;
-  }
-  if (connectOptions.proxyAuth) {
-    connectOptions.headers = connectOptions.headers || {};
-    connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
-        new Buffer(connectOptions.proxyAuth).toString('base64');
-  }
-
-  debug('making CONNECT request');
-  var connectReq = self.request(connectOptions);
-  connectReq.useChunkedEncodingByDefault = false; // for v0.6
-  connectReq.once('response', onResponse); // for v0.6
-  connectReq.once('upgrade', onUpgrade);   // for v0.6
-  connectReq.once('connect', onConnect);   // for v0.7 or later
-  connectReq.once('error', onError);
-  connectReq.end();
-
-  function onResponse(res) {
-    // Very hacky. This is necessary to avoid http-parser leaks.
-    res.upgrade = true;
-  }
-
-  function onUpgrade(res, socket, head) {
-    // Hacky.
-    process.nextTick(function() {
-      onConnect(res, socket, head);
-    });
-  }
-
-  function onConnect(res, socket, head) {
-    connectReq.removeAllListeners();
-    socket.removeAllListeners();
-
-    if (res.statusCode !== 200) {
-      debug('tunneling socket could not be established, statusCode=%d',
-        res.statusCode);
-      socket.destroy();
-      var error = new Error('tunneling socket could not be established, ' +
-        'statusCode=' + res.statusCode);
-      error.code = 'ECONNRESET';
-      options.request.emit('error', error);
-      self.removeSocket(placeholder);
-      return;
-    }
-    if (head.length > 0) {
-      debug('got illegal response body from proxy');
-      socket.destroy();
-      var error = new Error('got illegal response body from proxy');
-      error.code = 'ECONNRESET';
-      options.request.emit('error', error);
-      self.removeSocket(placeholder);
-      return;
-    }
-    debug('tunneling connection has established');
-    self.sockets[self.sockets.indexOf(placeholder)] = socket;
-    return cb(socket);
-  }
-
-  function onError(cause) {
-    connectReq.removeAllListeners();
-
-    debug('tunneling socket could not be established, cause=%s\n',
-          cause.message, cause.stack);
-    var error = new Error('tunneling socket could not be established, ' +
-                          'cause=' + cause.message);
-    error.code = 'ECONNRESET';
-    options.request.emit('error', error);
-    self.removeSocket(placeholder);
-  }
-};
-
-TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
-  var pos = this.sockets.indexOf(socket)
-  if (pos === -1) {
-    return;
-  }
-  this.sockets.splice(pos, 1);
-
-  var pending = this.requests.shift();
-  if (pending) {
-    // If we have pending requests and a socket gets closed a new one
-    // needs to be created to take over in the pool for the one that closed.
-    this.createSocket(pending, function(socket) {
-      pending.request.onSocket(socket);
-    });
-  }
-};
-
-function createSecureSocket(options, cb) {
-  var self = this;
-  TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
-    var hostHeader = options.request.getHeader('host');
-    var tlsOptions = mergeOptions({}, self.options, {
-      socket: socket,
-      servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host
-    });
-
-    // 0 is dummy port for v0.6
-    var secureSocket = tls.connect(0, tlsOptions);
-    self.sockets[self.sockets.indexOf(socket)] = secureSocket;
-    cb(secureSocket);
-  });
-}
-
-
-function toOptions(host, port, localAddress) {
-  if (typeof host === 'string') { // since v0.10
-    return {
-      host: host,
-      port: port,
-      localAddress: localAddress
-    };
-  }
-  return host; // for v0.11 or later
-}
-
-function mergeOptions(target) {
-  for (var i = 1, len = arguments.length; i < len; ++i) {
-    var overrides = arguments[i];
-    if (typeof overrides === 'object') {
-      var keys = Object.keys(overrides);
-      for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
-        var k = keys[j];
-        if (overrides[k] !== undefined) {
-          target[k] = overrides[k];
-        }
-      }
-    }
-  }
-  return target;
-}
-
-
-var debug;
-if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
-  debug = function() {
-    var args = Array.prototype.slice.call(arguments);
-    if (typeof args[0] === 'string') {
-      args[0] = 'TUNNEL: ' + args[0];
-    } else {
-      args.unshift('TUNNEL:');
-    }
-    console.error.apply(console, args);
-  }
-} else {
-  debug = function() {};
-}
-exports.debug = debug; // for test
diff --git a/actions/bcr-pr-review-notifier/node_modules/tunnel/package.json b/actions/bcr-pr-review-notifier/node_modules/tunnel/package.json
deleted file mode 100644
index bcd7b95..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/tunnel/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "name": "tunnel",
-  "version": "0.0.6",
-  "description": "Node HTTP/HTTPS Agents for tunneling proxies",
-  "keywords": [
-    "http",
-    "https",
-    "agent",
-    "proxy",
-    "tunnel"
-  ],
-  "homepage": "https://github.com/koichik/node-tunnel/",
-  "bugs": "https://github.com/koichik/node-tunnel/issues",
-  "license": "MIT",
-  "author": "Koichi Kobayashi <koichik@improvement.jp>",
-  "main": "./index.js",
-  "directories": {
-    "lib": "./lib"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/koichik/node-tunnel.git"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
-  "devDependencies": {
-    "mocha": "^5.2.0",
-    "should": "^13.2.3"
-  },
-  "engines": {
-    "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/LICENSE b/actions/bcr-pr-review-notifier/node_modules/undici/LICENSE
deleted file mode 100644
index e7323bb..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) Matteo Collina and Undici contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/README.md b/actions/bcr-pr-review-notifier/node_modules/undici/README.md
deleted file mode 100644
index 3ba8989..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/README.md
+++ /dev/null
@@ -1,443 +0,0 @@
-# undici
-
-[![Node CI](https://github.com/nodejs/undici/actions/workflows/nodejs.yml/badge.svg)](https://github.com/nodejs/undici/actions/workflows/nodejs.yml) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](http://standardjs.com/) [![npm version](https://badge.fury.io/js/undici.svg)](https://badge.fury.io/js/undici) [![codecov](https://codecov.io/gh/nodejs/undici/branch/main/graph/badge.svg?token=yZL6LtXkOA)](https://codecov.io/gh/nodejs/undici)
-
-An HTTP/1.1 client, written from scratch for Node.js.
-
-> Undici means eleven in Italian. 1.1 -> 11 -> Eleven -> Undici.
-It is also a Stranger Things reference.
-
-Have a question about using Undici? Open a [Q&A Discussion](https://github.com/nodejs/undici/discussions/new) or join our official OpenJS [Slack](https://openjs-foundation.slack.com/archives/C01QF9Q31QD) channel.
-
-## Install
-
-```
-npm i undici
-```
-
-## Benchmarks
-
-The benchmark is a simple `hello world` [example](benchmarks/benchmark.js) using a
-number of unix sockets (connections) with a pipelining depth of 10 running on Node 20.6.0.
-
-### Connections 1
-
-
-| Tests               | Samples |        Result | Tolerance | Difference with slowest |
-|---------------------|---------|---------------|-----------|-------------------------|
-| http - no keepalive |      15 |  5.32 req/sec |  ± 2.61 % |                       - |
-| http - keepalive    |      10 |  5.35 req/sec |  ± 2.47 % |                + 0.44 % |
-| undici - fetch      |      15 | 41.85 req/sec |  ± 2.49 % |              + 686.04 % |
-| undici - pipeline   |      40 | 50.36 req/sec |  ± 2.77 % |              + 845.92 % |
-| undici - stream     |      15 | 60.58 req/sec |  ± 2.75 % |             + 1037.72 % |
-| undici - request    |      10 | 61.19 req/sec |  ± 2.60 % |             + 1049.24 % |
-| undici - dispatch   |      20 | 64.84 req/sec |  ± 2.81 % |             + 1117.81 % |
-
-
-### Connections 50
-
-| Tests               | Samples |           Result | Tolerance | Difference with slowest |
-|---------------------|---------|------------------|-----------|-------------------------|
-| undici - fetch      |      30 |  2107.19 req/sec |  ± 2.69 % |                       - |
-| http - no keepalive |      10 |  2698.90 req/sec |  ± 2.68 % |               + 28.08 % |
-| http - keepalive    |      10 |  4639.49 req/sec |  ± 2.55 % |              + 120.17 % |
-| undici - pipeline   |      40 |  6123.33 req/sec |  ± 2.97 % |              + 190.59 % |
-| undici - stream     |      50 |  9426.51 req/sec |  ± 2.92 % |              + 347.35 % |
-| undici - request    |      10 | 10162.88 req/sec |  ± 2.13 % |              + 382.29 % |
-| undici - dispatch   |      50 | 11191.11 req/sec |  ± 2.98 % |              + 431.09 % |
-
-
-## Quick Start
-
-```js
-import { request } from 'undici'
-
-const {
-  statusCode,
-  headers,
-  trailers,
-  body
-} = await request('http://localhost:3000/foo')
-
-console.log('response received', statusCode)
-console.log('headers', headers)
-
-for await (const data of body) {
-  console.log('data', data)
-}
-
-console.log('trailers', trailers)
-```
-
-## Body Mixins
-
-The `body` mixins are the most common way to format the request/response body. Mixins include:
-
-- [`.formData()`](https://fetch.spec.whatwg.org/#dom-body-formdata)
-- [`.json()`](https://fetch.spec.whatwg.org/#dom-body-json)
-- [`.text()`](https://fetch.spec.whatwg.org/#dom-body-text)
-
-Example usage:
-
-```js
-import { request } from 'undici'
-
-const {
-  statusCode,
-  headers,
-  trailers,
-  body
-} = await request('http://localhost:3000/foo')
-
-console.log('response received', statusCode)
-console.log('headers', headers)
-console.log('data', await body.json())
-console.log('trailers', trailers)
-```
-
-_Note: Once a mixin has been called then the body cannot be reused, thus calling additional mixins on `.body`, e.g. `.body.json(); .body.text()` will result in an error `TypeError: unusable` being thrown and returned through the `Promise` rejection._
-
-Should you need to access the `body` in plain-text after using a mixin, the best practice is to use the `.text()` mixin first and then manually parse the text to the desired format.
-
-For more information about their behavior, please reference the body mixin from the [Fetch Standard](https://fetch.spec.whatwg.org/#body-mixin).
-
-## Common API Methods
-
-This section documents our most commonly used API methods. Additional APIs are documented in their own files within the [docs](./docs/) folder and are accessible via the navigation list on the left side of the docs site.
-
-### `undici.request([url, options]): Promise`
-
-Arguments:
-
-* **url** `string | URL | UrlObject`
-* **options** [`RequestOptions`](./docs/api/Dispatcher.md#parameter-requestoptions)
-  * **dispatcher** `Dispatcher` - Default: [getGlobalDispatcher](#undicigetglobaldispatcher)
-  * **method** `String` - Default: `PUT` if `options.body`, otherwise `GET`
-  * **maxRedirections** `Integer` - Default: `0`
-
-Returns a promise with the result of the `Dispatcher.request` method.
-
-Calls `options.dispatcher.request(options)`.
-
-See [Dispatcher.request](./docs/api/Dispatcher.md#dispatcherrequestoptions-callback) for more details.
-
-### `undici.stream([url, options, ]factory): Promise`
-
-Arguments:
-
-* **url** `string | URL | UrlObject`
-* **options** [`StreamOptions`](./docs/api/Dispatcher.md#parameter-streamoptions)
-  * **dispatcher** `Dispatcher` - Default: [getGlobalDispatcher](#undicigetglobaldispatcher)
-  * **method** `String` - Default: `PUT` if `options.body`, otherwise `GET`
-  * **maxRedirections** `Integer` - Default: `0`
-* **factory** `Dispatcher.stream.factory`
-
-Returns a promise with the result of the `Dispatcher.stream` method.
-
-Calls `options.dispatcher.stream(options, factory)`.
-
-See [Dispatcher.stream](docs/api/Dispatcher.md#dispatcherstreamoptions-factory-callback) for more details.
-
-### `undici.pipeline([url, options, ]handler): Duplex`
-
-Arguments:
-
-* **url** `string | URL | UrlObject`
-* **options** [`PipelineOptions`](docs/api/Dispatcher.md#parameter-pipelineoptions)
-  * **dispatcher** `Dispatcher` - Default: [getGlobalDispatcher](#undicigetglobaldispatcher)
-  * **method** `String` - Default: `PUT` if `options.body`, otherwise `GET`
-  * **maxRedirections** `Integer` - Default: `0`
-* **handler** `Dispatcher.pipeline.handler`
-
-Returns: `stream.Duplex`
-
-Calls `options.dispatch.pipeline(options, handler)`.
-
-See [Dispatcher.pipeline](docs/api/Dispatcher.md#dispatcherpipelineoptions-handler) for more details.
-
-### `undici.connect([url, options]): Promise`
-
-Starts two-way communications with the requested resource using [HTTP CONNECT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT).
-
-Arguments:
-
-* **url** `string | URL | UrlObject`
-* **options** [`ConnectOptions`](docs/api/Dispatcher.md#parameter-connectoptions)
-  * **dispatcher** `Dispatcher` - Default: [getGlobalDispatcher](#undicigetglobaldispatcher)
-  * **maxRedirections** `Integer` - Default: `0`
-* **callback** `(err: Error | null, data: ConnectData | null) => void` (optional)
-
-Returns a promise with the result of the `Dispatcher.connect` method.
-
-Calls `options.dispatch.connect(options)`.
-
-See [Dispatcher.connect](docs/api/Dispatcher.md#dispatcherconnectoptions-callback) for more details.
-
-### `undici.fetch(input[, init]): Promise`
-
-Implements [fetch](https://fetch.spec.whatwg.org/#fetch-method).
-
-* https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch
-* https://fetch.spec.whatwg.org/#fetch-method
-
-Only supported on Node 16.8+.
-
-Basic usage example:
-
-```js
-import { fetch } from 'undici'
-
-
-const res = await fetch('https://example.com')
-const json = await res.json()
-console.log(json)
-```
-
-You can pass an optional dispatcher to `fetch` as:
-
-```js
-import { fetch, Agent } from 'undici'
-
-const res = await fetch('https://example.com', {
-  // Mocks are also supported
-  dispatcher: new Agent({
-    keepAliveTimeout: 10,
-    keepAliveMaxTimeout: 10
-  })
-})
-const json = await res.json()
-console.log(json)
-```
-
-#### `request.body`
-
-A body can be of the following types:
-
-- ArrayBuffer
-- ArrayBufferView
-- AsyncIterables
-- Blob
-- Iterables
-- String
-- URLSearchParams
-- FormData
-
-In this implementation of fetch, ```request.body``` now accepts ```Async Iterables```. It is not present in the [Fetch Standard.](https://fetch.spec.whatwg.org)
-
-```js
-import { fetch } from 'undici'
-
-const data = {
-  async *[Symbol.asyncIterator]() {
-    yield 'hello'
-    yield 'world'
-  },
-}
-
-await fetch('https://example.com', { body: data, method: 'POST', duplex: 'half' })
-```
-
-#### `request.duplex`
-
-- half
-
-In this implementation of fetch, `request.duplex` must be set if `request.body` is `ReadableStream` or `Async Iterables`. And fetch requests are currently always be full duplex. More detail refer to [Fetch Standard.](https://fetch.spec.whatwg.org/#dom-requestinit-duplex)
-
-#### `response.body`
-
-Nodejs has two kinds of streams: [web streams](https://nodejs.org/dist/latest-v16.x/docs/api/webstreams.html), which follow the API of the WHATWG web standard found in browsers, and an older Node-specific [streams API](https://nodejs.org/api/stream.html). `response.body` returns a readable web stream. If you would prefer to work with a Node stream you can convert a web stream using `.fromWeb()`.
-
-```js
-import { fetch } from 'undici'
-import { Readable } from 'node:stream'
-
-const response = await fetch('https://example.com')
-const readableWebStream = response.body
-const readableNodeStream = Readable.fromWeb(readableWebStream)
-```
-
-#### Specification Compliance
-
-This section documents parts of the [Fetch Standard](https://fetch.spec.whatwg.org) that Undici does
-not support or does not fully implement.
-
-##### Garbage Collection
-
-* https://fetch.spec.whatwg.org/#garbage-collection
-
-The [Fetch Standard](https://fetch.spec.whatwg.org) allows users to skip consuming the response body by relying on
-[garbage collection](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management#garbage_collection) to release connection resources. Undici does not do the same. Therefore, it is important to always either consume or cancel the response body.
-
-Garbage collection in Node is less aggressive and deterministic
-(due to the lack of clear idle periods that browsers have through the rendering refresh rate)
-which means that leaving the release of connection resources to the garbage collector can lead
-to excessive connection usage, reduced performance (due to less connection re-use), and even
-stalls or deadlocks when running out of connections.
-
-```js
-// Do
-const headers = await fetch(url)
-  .then(async res => {
-    for await (const chunk of res.body) {
-      // force consumption of body
-    }
-    return res.headers
-  })
-
-// Do not
-const headers = await fetch(url)
-  .then(res => res.headers)
-```
-
-However, if you want to get only headers, it might be better to use `HEAD` request method. Usage of this method will obviate the need for consumption or cancelling of the response body. See [MDN - HTTP - HTTP request methods - HEAD](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD) for more details.
-
-```js
-const headers = await fetch(url, { method: 'HEAD' })
-  .then(res => res.headers)
-```
-
-##### Forbidden and Safelisted Header Names
-
-* https://fetch.spec.whatwg.org/#cors-safelisted-response-header-name
-* https://fetch.spec.whatwg.org/#forbidden-header-name
-* https://fetch.spec.whatwg.org/#forbidden-response-header-name
-* https://github.com/wintercg/fetch/issues/6
-
-The [Fetch Standard](https://fetch.spec.whatwg.org) requires implementations to exclude certain headers from requests and responses. In browser environments, some headers are forbidden so the user agent remains in full control over them. In Undici, these constraints are removed to give more control to the user.
-
-### `undici.upgrade([url, options]): Promise`
-
-Upgrade to a different protocol. See [MDN - HTTP - Protocol upgrade mechanism](https://developer.mozilla.org/en-US/docs/Web/HTTP/Protocol_upgrade_mechanism) for more details.
-
-Arguments:
-
-* **url** `string | URL | UrlObject`
-* **options** [`UpgradeOptions`](docs/api/Dispatcher.md#parameter-upgradeoptions)
-  * **dispatcher** `Dispatcher` - Default: [getGlobalDispatcher](#undicigetglobaldispatcher)
-  * **maxRedirections** `Integer` - Default: `0`
-* **callback** `(error: Error | null, data: UpgradeData) => void` (optional)
-
-Returns a promise with the result of the `Dispatcher.upgrade` method.
-
-Calls `options.dispatcher.upgrade(options)`.
-
-See [Dispatcher.upgrade](docs/api/Dispatcher.md#dispatcherupgradeoptions-callback) for more details.
-
-### `undici.setGlobalDispatcher(dispatcher)`
-
-* dispatcher `Dispatcher`
-
-Sets the global dispatcher used by Common API Methods.
-
-### `undici.getGlobalDispatcher()`
-
-Gets the global dispatcher used by Common API Methods.
-
-Returns: `Dispatcher`
-
-### `undici.setGlobalOrigin(origin)`
-
-* origin `string | URL | undefined`
-
-Sets the global origin used in `fetch`.
-
-If `undefined` is passed, the global origin will be reset. This will cause `Response.redirect`, `new Request()`, and `fetch` to throw an error when a relative path is passed.
-
-```js
-setGlobalOrigin('http://localhost:3000')
-
-const response = await fetch('/api/ping')
-
-console.log(response.url) // http://localhost:3000/api/ping
-```
-
-### `undici.getGlobalOrigin()`
-
-Gets the global origin used in `fetch`.
-
-Returns: `URL`
-
-### `UrlObject`
-
-* **port** `string | number` (optional)
-* **path** `string` (optional)
-* **pathname** `string` (optional)
-* **hostname** `string` (optional)
-* **origin** `string` (optional)
-* **protocol** `string` (optional)
-* **search** `string` (optional)
-
-## Specification Compliance
-
-This section documents parts of the HTTP/1.1 specification that Undici does
-not support or does not fully implement.
-
-### Expect
-
-Undici does not support the `Expect` request header field. The request
-body is  always immediately sent and the `100 Continue` response will be
-ignored.
-
-Refs: https://tools.ietf.org/html/rfc7231#section-5.1.1
-
-### Pipelining
-
-Undici will only use pipelining if configured with a `pipelining` factor
-greater than `1`.
-
-Undici always assumes that connections are persistent and will immediately
-pipeline requests, without checking whether the connection is persistent.
-Hence, automatic fallback to HTTP/1.0 or HTTP/1.1 without pipelining is
-not supported.
-
-Undici will immediately pipeline when retrying requests after a failed
-connection. However, Undici will not retry the first remaining requests in
-the prior pipeline and instead error the corresponding callback/promise/stream.
-
-Undici will abort all running requests in the pipeline when any of them are
-aborted.
-
-* Refs: https://tools.ietf.org/html/rfc2616#section-8.1.2.2
-* Refs: https://tools.ietf.org/html/rfc7230#section-6.3.2
-
-### Manual Redirect
-
-Since it is not possible to manually follow an HTTP redirect on the server-side,
-Undici returns the actual response instead of an `opaqueredirect` filtered one
-when invoked with a `manual` redirect. This aligns `fetch()` with the other
-implementations in Deno and Cloudflare Workers.
-
-Refs: https://fetch.spec.whatwg.org/#atomic-http-redirect-handling
-
-## Workarounds
-
-### Network address family autoselection.
-
-If you experience problem when connecting to a remote server that is resolved by your DNS servers to a IPv6 (AAAA record)
-first, there are chances that your local router or ISP might have problem connecting to IPv6 networks. In that case
-undici will throw an error with code `UND_ERR_CONNECT_TIMEOUT`. 
-
-If the target server resolves to both a IPv6 and IPv4 (A records) address and you are using a compatible Node version 
-(18.3.0 and above), you can fix the problem by providing the `autoSelectFamily` option (support by both `undici.request`
-and `undici.Agent`) which will enable the family autoselection algorithm when establishing the connection.
-
-## Collaborators
-
-* [__Daniele Belardi__](https://github.com/dnlup), <https://www.npmjs.com/~dnlup>
-* [__Ethan Arrowood__](https://github.com/ethan-arrowood), <https://www.npmjs.com/~ethan_arrowood>
-* [__Matteo Collina__](https://github.com/mcollina), <https://www.npmjs.com/~matteo.collina>
-* [__Matthew Aitken__](https://github.com/KhafraDev), <https://www.npmjs.com/~khaf>
-* [__Robert Nagy__](https://github.com/ronag), <https://www.npmjs.com/~ronag>
-* [__Szymon Marczak__](https://github.com/szmarczak), <https://www.npmjs.com/~szmarczak>
-* [__Tomas Della Vedova__](https://github.com/delvedor), <https://www.npmjs.com/~delvedor>
-
-### Releasers
-
-* [__Ethan Arrowood__](https://github.com/ethan-arrowood), <https://www.npmjs.com/~ethan_arrowood>
-* [__Matteo Collina__](https://github.com/mcollina), <https://www.npmjs.com/~matteo.collina>
-* [__Robert Nagy__](https://github.com/ronag), <https://www.npmjs.com/~ronag>
-* [__Matthew Aitken__](https://github.com/KhafraDev), <https://www.npmjs.com/~khaf>
-
-## License
-
-MIT
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Agent.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Agent.md
deleted file mode 100644
index dd5d99b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Agent.md
+++ /dev/null
@@ -1,80 +0,0 @@
-# Agent
-
-Extends: `undici.Dispatcher`
-
-Agent allow dispatching requests against multiple different origins.
-
-Requests are not guaranteed to be dispatched in order of invocation.
-
-## `new undici.Agent([options])`
-
-Arguments:
-
-* **options** `AgentOptions` (optional)
-
-Returns: `Agent`
-
-### Parameter: `AgentOptions`
-
-Extends: [`PoolOptions`](Pool.md#parameter-pooloptions)
-
-* **factory** `(origin: URL, opts: Object) => Dispatcher` - Default: `(origin, opts) => new Pool(origin, opts)`
-* **maxRedirections** `Integer` - Default: `0`. The number of HTTP redirection to follow unless otherwise specified in `DispatchOptions`.
-* **interceptors** `{ Agent: DispatchInterceptor[] }` - Default: `[RedirectInterceptor]` - A list of interceptors that are applied to the dispatch method. Additional logic can be applied (such as, but not limited to: 302 status code handling, authentication, cookies, compression and caching). Note that the behavior of interceptors is Experimental and might change at any given time.
-
-## Instance Properties
-
-### `Agent.closed`
-
-Implements [Client.closed](Client.md#clientclosed)
-
-### `Agent.destroyed`
-
-Implements [Client.destroyed](Client.md#clientdestroyed)
-
-## Instance Methods
-
-### `Agent.close([callback])`
-
-Implements [`Dispatcher.close([callback])`](Dispatcher.md#dispatcherclosecallback-promise).
-
-### `Agent.destroy([error, callback])`
-
-Implements [`Dispatcher.destroy([error, callback])`](Dispatcher.md#dispatcherdestroyerror-callback-promise).
-
-### `Agent.dispatch(options, handler: AgentDispatchOptions)`
-
-Implements [`Dispatcher.dispatch(options, handler)`](Dispatcher.md#dispatcherdispatchoptions-handler).
-
-#### Parameter: `AgentDispatchOptions`
-
-Extends: [`DispatchOptions`](Dispatcher.md#parameter-dispatchoptions)
-
-* **origin** `string | URL`
-* **maxRedirections** `Integer`.
-
-Implements [`Dispatcher.destroy([error, callback])`](Dispatcher.md#dispatcherdestroyerror-callback-promise).
-
-### `Agent.connect(options[, callback])`
-
-See [`Dispatcher.connect(options[, callback])`](Dispatcher.md#dispatcherconnectoptions-callback).
-
-### `Agent.dispatch(options, handler)`
-
-Implements [`Dispatcher.dispatch(options, handler)`](Dispatcher.md#dispatcherdispatchoptions-handler).
-
-### `Agent.pipeline(options, handler)`
-
-See [`Dispatcher.pipeline(options, handler)`](Dispatcher.md#dispatcherpipelineoptions-handler).
-
-### `Agent.request(options[, callback])`
-
-See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback).
-
-### `Agent.stream(options, factory[, callback])`
-
-See [`Dispatcher.stream(options, factory[, callback])`](Dispatcher.md#dispatcherstreamoptions-factory-callback).
-
-### `Agent.upgrade(options[, callback])`
-
-See [`Dispatcher.upgrade(options[, callback])`](Dispatcher.md#dispatcherupgradeoptions-callback).
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/BalancedPool.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/BalancedPool.md
deleted file mode 100644
index 290c734..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/BalancedPool.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# Class: BalancedPool
-
-Extends: `undici.Dispatcher`
-
-A pool of [Pool](Pool.md) instances connected to multiple upstreams.
-
-Requests are not guaranteed to be dispatched in order of invocation.
-
-## `new BalancedPool(upstreams [, options])`
-
-Arguments:
-
-* **upstreams** `URL | string | string[]` - It should only include the **protocol, hostname, and port**.
-* **options** `BalancedPoolOptions` (optional)
-
-### Parameter: `BalancedPoolOptions`
-
-Extends: [`PoolOptions`](Pool.md#parameter-pooloptions)
-
-* **factory** `(origin: URL, opts: Object) => Dispatcher` - Default: `(origin, opts) => new Pool(origin, opts)`
-
-The `PoolOptions` are passed to each of the `Pool` instances being created.
-## Instance Properties
-
-### `BalancedPool.upstreams`
-
-Returns an array of upstreams that were previously added.
-
-### `BalancedPool.closed`
-
-Implements [Client.closed](Client.md#clientclosed)
-
-### `BalancedPool.destroyed`
-
-Implements [Client.destroyed](Client.md#clientdestroyed)
-
-### `Pool.stats`
-
-Returns [`PoolStats`](PoolStats.md) instance for this pool.
-
-## Instance Methods
-
-### `BalancedPool.addUpstream(upstream)`
-
-Add an upstream.
-
-Arguments:
-
-* **upstream** `string` - It should only include the **protocol, hostname, and port**.
-
-### `BalancedPool.removeUpstream(upstream)`
-
-Removes an upstream that was previously addded.
-
-### `BalancedPool.close([callback])`
-
-Implements [`Dispatcher.close([callback])`](Dispatcher.md#dispatcherclosecallback-promise).
-
-### `BalancedPool.destroy([error, callback])`
-
-Implements [`Dispatcher.destroy([error, callback])`](Dispatcher.md#dispatcherdestroyerror-callback-promise).
-
-### `BalancedPool.connect(options[, callback])`
-
-See [`Dispatcher.connect(options[, callback])`](Dispatcher.md#dispatcherconnectoptions-callback).
-
-### `BalancedPool.dispatch(options, handlers)`
-
-Implements [`Dispatcher.dispatch(options, handlers)`](Dispatcher.md#dispatcherdispatchoptions-handler).
-
-### `BalancedPool.pipeline(options, handler)`
-
-See [`Dispatcher.pipeline(options, handler)`](Dispatcher.md#dispatcherpipelineoptions-handler).
-
-### `BalancedPool.request(options[, callback])`
-
-See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback).
-
-### `BalancedPool.stream(options, factory[, callback])`
-
-See [`Dispatcher.stream(options, factory[, callback])`](Dispatcher.md#dispatcherstreamoptions-factory-callback).
-
-### `BalancedPool.upgrade(options[, callback])`
-
-See [`Dispatcher.upgrade(options[, callback])`](Dispatcher.md#dispatcherupgradeoptions-callback).
-
-## Instance Events
-
-### Event: `'connect'`
-
-See [Dispatcher Event: `'connect'`](Dispatcher.md#event-connect).
-
-### Event: `'disconnect'`
-
-See [Dispatcher Event: `'disconnect'`](Dispatcher.md#event-disconnect).
-
-### Event: `'drain'`
-
-See [Dispatcher Event: `'drain'`](Dispatcher.md#event-drain).
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/CacheStorage.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/CacheStorage.md
deleted file mode 100644
index 08ee99f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/CacheStorage.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# CacheStorage
-
-Undici exposes a W3C spec-compliant implementation of [CacheStorage](https://developer.mozilla.org/en-US/docs/Web/API/CacheStorage) and [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache).
-
-## Opening a Cache
-
-Undici exports a top-level CacheStorage instance. You can open a new Cache, or duplicate a Cache with an existing name, by using `CacheStorage.prototype.open`. If you open a Cache with the same name as an already-existing Cache, its list of cached Responses will be shared between both instances.
-
-```mjs
-import { caches } from 'undici'
-
-const cache_1 = await caches.open('v1')
-const cache_2 = await caches.open('v1')
-
-// Although .open() creates a new instance,
-assert(cache_1 !== cache_2)
-// The same Response is matched in both.
-assert.deepStrictEqual(await cache_1.match('/req'), await cache_2.match('/req'))
-```
-
-## Deleting a Cache
-
-If a Cache is deleted, the cached Responses/Requests can still be used.
-
-```mjs
-const response = await cache_1.match('/req')
-await caches.delete('v1')
-
-await response.text() // the Response's body
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Client.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Client.md
deleted file mode 100644
index b9e26f0..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Client.md
+++ /dev/null
@@ -1,273 +0,0 @@
-# Class: Client
-
-Extends: `undici.Dispatcher`
-
-A basic HTTP/1.1 client, mapped on top a single TCP/TLS connection. Pipelining is disabled by default.
-
-Requests are not guaranteed to be dispatched in order of invocation.
-
-## `new Client(url[, options])`
-
-Arguments:
-
-* **url** `URL | string` - Should only include the **protocol, hostname, and port**.
-* **options** `ClientOptions` (optional)
-
-Returns: `Client`
-
-### Parameter: `ClientOptions`
-
-> ⚠️ Warning: The `H2` support is experimental.
-
-* **bodyTimeout** `number | null` (optional) - Default: `300e3` - The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Defaults to 300 seconds.
-* **headersTimeout** `number | null` (optional) - Default: `300e3` - The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers while not sending the request. Defaults to 300 seconds.
-* **keepAliveMaxTimeout** `number | null` (optional) - Default: `600e3` - The maximum allowed `keepAliveTimeout`, in milliseconds, when overridden by *keep-alive* hints from the server. Defaults to 10 minutes.
-* **keepAliveTimeout** `number | null` (optional) - Default: `4e3` - The timeout, in milliseconds, after which a socket without active requests will time out. Monitors time between activity on a connected socket. This value may be overridden by *keep-alive* hints from the server. See [MDN: HTTP - Headers - Keep-Alive directives](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Keep-Alive#directives) for more details. Defaults to 4 seconds.
-* **keepAliveTimeoutThreshold** `number | null` (optional) - Default: `1e3` - A number of milliseconds subtracted from server *keep-alive* hints when overriding `keepAliveTimeout` to account for timing inaccuracies caused by e.g. transport latency. Defaults to 1 second.
-* **maxHeaderSize** `number | null` (optional) - Default: `--max-http-header-size` or `16384` - The maximum length of request headers in bytes. Defaults to Node.js' --max-http-header-size or 16KiB.
-* **maxResponseSize** `number | null` (optional) - Default: `-1` - The maximum length of response body in bytes. Set to `-1` to disable.
-* **pipelining** `number | null` (optional) - Default: `1` - The amount of concurrent requests to be sent over the single TCP/TLS connection according to [RFC7230](https://tools.ietf.org/html/rfc7230#section-6.3.2). Carefully consider your workload and environment before enabling concurrent requests as pipelining may reduce performance if used incorrectly. Pipelining is sensitive to network stack settings as well as head of line blocking caused by e.g. long running requests. Set to `0` to disable keep-alive connections.
-* **connect** `ConnectOptions | Function | null` (optional) - Default: `null`.
-* **strictContentLength** `Boolean` (optional) - Default: `true` - Whether to treat request content length mismatches as errors. If true, an error is thrown when the request content-length header doesn't match the length of the request body.
-* **interceptors** `{ Client: DispatchInterceptor[] }` - Default: `[RedirectInterceptor]` - A list of interceptors that are applied to the dispatch method. Additional logic can be applied (such as, but not limited to: 302 status code handling, authentication, cookies, compression and caching). Note that the behavior of interceptors is Experimental and might change at any given time.
-* **autoSelectFamily**: `boolean` (optional) - Default: depends on local Node version, on Node 18.13.0 and above is `false`. Enables a family autodetection algorithm that loosely implements section 5 of [RFC 8305](https://tools.ietf.org/html/rfc8305#section-5). See [here](https://nodejs.org/api/net.html#socketconnectoptions-connectlistener) for more details. This option is ignored if not supported by the current Node version.
-* **autoSelectFamilyAttemptTimeout**: `number` - Default: depends on local Node version, on Node 18.13.0 and above is `250`. The amount of time in milliseconds to wait for a connection attempt to finish before trying the next address when using the `autoSelectFamily` option. See [here](https://nodejs.org/api/net.html#socketconnectoptions-connectlistener) for more details.
-* **allowH2**: `boolean` - Default: `false`. Enables support for H2 if the server has assigned bigger priority to it through ALPN negotiation.
-* **maxConcurrentStreams**: `number` - Default: `100`. Dictates the maximum number of concurrent streams for a single H2 session. It can be overridden by a SETTINGS remote frame.
-
-#### Parameter: `ConnectOptions`
-
-Every Tls option, see [here](https://nodejs.org/api/tls.html#tls_tls_connect_options_callback).
-Furthermore, the following options can be passed:
-
-* **socketPath** `string | null` (optional) - Default: `null` - An IPC endpoint, either Unix domain socket or Windows named pipe.
-* **maxCachedSessions** `number | null` (optional) - Default: `100` - Maximum number of TLS cached sessions. Use 0 to disable TLS session caching. Default: 100.
-* **timeout** `number | null` (optional) -  In milliseconds, Default `10e3`.
-* **servername** `string | null` (optional)
-* **keepAlive** `boolean | null` (optional) - Default: `true` - TCP keep-alive enabled
-* **keepAliveInitialDelay** `number | null` (optional) - Default: `60000` - TCP keep-alive interval for the socket in milliseconds
-
-### Example - Basic Client instantiation
-
-This will instantiate the undici Client, but it will not connect to the origin until something is queued. Consider using `client.connect` to prematurely connect to the origin, or just call `client.request`.
-
-```js
-'use strict'
-import { Client } from 'undici'
-
-const client = new Client('http://localhost:3000')
-```
-
-### Example - Custom connector
-
-This will allow you to perform some additional check on the socket that will be used for the next request.
-
-```js
-'use strict'
-import { Client, buildConnector } from 'undici'
-
-const connector = buildConnector({ rejectUnauthorized: false })
-const client = new Client('https://localhost:3000', {
-  connect (opts, cb) {
-    connector(opts, (err, socket) => {
-      if (err) {
-        cb(err)
-      } else if (/* assertion */) {
-        socket.destroy()
-        cb(new Error('kaboom'))
-      } else {
-        cb(null, socket)
-      }
-    })
-  }
-})
-```
-
-## Instance Methods
-
-### `Client.close([callback])`
-
-Implements [`Dispatcher.close([callback])`](Dispatcher.md#dispatcherclosecallback-promise).
-
-### `Client.destroy([error, callback])`
-
-Implements [`Dispatcher.destroy([error, callback])`](Dispatcher.md#dispatcherdestroyerror-callback-promise).
-
-Waits until socket is closed before invoking the callback (or returning a promise if no callback is provided).
-
-### `Client.connect(options[, callback])`
-
-See [`Dispatcher.connect(options[, callback])`](Dispatcher.md#dispatcherconnectoptions-callback).
-
-### `Client.dispatch(options, handlers)`
-
-Implements [`Dispatcher.dispatch(options, handlers)`](Dispatcher.md#dispatcherdispatchoptions-handler).
-
-### `Client.pipeline(options, handler)`
-
-See [`Dispatcher.pipeline(options, handler)`](Dispatcher.md#dispatcherpipelineoptions-handler).
-
-### `Client.request(options[, callback])`
-
-See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback).
-
-### `Client.stream(options, factory[, callback])`
-
-See [`Dispatcher.stream(options, factory[, callback])`](Dispatcher.md#dispatcherstreamoptions-factory-callback).
-
-### `Client.upgrade(options[, callback])`
-
-See [`Dispatcher.upgrade(options[, callback])`](Dispatcher.md#dispatcherupgradeoptions-callback).
-
-## Instance Properties
-
-### `Client.closed`
-
-* `boolean`
-
-`true` after `client.close()` has been called.
-
-### `Client.destroyed`
-
-* `boolean`
-
-`true` after `client.destroyed()` has been called or `client.close()` has been called and the client shutdown has completed.
-
-### `Client.pipelining`
-
-* `number`
-
-Property to get and set the pipelining factor.
-
-## Instance Events
-
-### Event: `'connect'`
-
-See [Dispatcher Event: `'connect'`](Dispatcher.md#event-connect).
-
-Parameters:
-
-* **origin** `URL`
-* **targets** `Array<Dispatcher>`
-
-Emitted when a socket has been created and connected. The client will connect once `client.size > 0`.
-
-#### Example - Client connect event
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  response.end('Hello, World!')
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-client.on('connect', (origin) => {
-  console.log(`Connected to ${origin}`) // should print before the request body statement
-})
-
-try {
-  const { body } = await client.request({
-    path: '/',
-    method: 'GET'
-  })
-  body.setEncoding('utf-8')
-  body.on('data', console.log)
-  client.close()
-  server.close()
-} catch (error) {
-  console.error(error)
-  client.close()
-  server.close()
-}
-```
-
-### Event: `'disconnect'`
-
-See [Dispatcher Event: `'disconnect'`](Dispatcher.md#event-disconnect).
-
-Parameters:
-
-* **origin** `URL`
-* **targets** `Array<Dispatcher>`
-* **error** `Error`
-
-Emitted when socket has disconnected. The error argument of the event is the error which caused the socket to disconnect. The client will reconnect if or once `client.size > 0`.
-
-#### Example - Client disconnect event
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  response.destroy()
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-client.on('disconnect', (origin) => {
-  console.log(`Disconnected from ${origin}`)
-})
-
-try {
-  await client.request({
-    path: '/',
-    method: 'GET'
-  })
-} catch (error) {
-  console.error(error.message)
-  client.close()
-  server.close()
-}
-```
-
-### Event: `'drain'`
-
-Emitted when pipeline is no longer busy.
-
-See [Dispatcher Event: `'drain'`](Dispatcher.md#event-drain).
-
-#### Example - Client drain event
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  response.end('Hello, World!')
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-client.on('drain', () => {
-  console.log('drain event')
-  client.close()
-  server.close()
-})
-
-const requests = [
-  client.request({ path: '/', method: 'GET' }),
-  client.request({ path: '/', method: 'GET' }),
-  client.request({ path: '/', method: 'GET' })
-]
-
-await Promise.all(requests)
-
-console.log('requests completed')
-```
-
-### Event: `'error'`
-
-Invoked for users errors such as throwing in the `onError` handler.
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Connector.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Connector.md
deleted file mode 100644
index 56821bd..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Connector.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# Connector
-
-Undici creates the underlying socket via the connector builder.
-Normally, this happens automatically and you don't need to care about this,
-but if you need to perform some additional check over the currently used socket,
-this is the right place.
-
-If you want to create a custom connector, you must import the `buildConnector` utility.
-
-#### Parameter: `buildConnector.BuildOptions`
-
-Every Tls option, see [here](https://nodejs.org/api/tls.html#tls_tls_connect_options_callback).
-Furthermore, the following options can be passed:
-
-* **socketPath** `string | null` (optional) - Default: `null` - An IPC endpoint, either Unix domain socket or Windows named pipe.
-* **maxCachedSessions** `number | null` (optional) - Default: `100` - Maximum number of TLS cached sessions. Use 0 to disable TLS session caching. Default: `100`.
-* **timeout** `number | null` (optional) -  In milliseconds. Default `10e3`.
-* **servername** `string | null` (optional)
-
-Once you call `buildConnector`, it will return a connector function, which takes the following parameters.
-
-#### Parameter: `connector.Options`
-
-* **hostname** `string` (required)
-* **host** `string` (optional)
-* **protocol** `string` (required)
-* **port** `string` (required)
-* **servername** `string` (optional)
-* **localAddress** `string | null` (optional) Local address the socket should connect from.
-* **httpSocket** `Socket` (optional) Establish secure connection on a given socket rather than creating a new socket. It can only be sent on TLS update.
-
-### Basic example
-
-```js
-'use strict'
-
-import { Client, buildConnector } from 'undici'
-
-const connector = buildConnector({ rejectUnauthorized: false })
-const client = new Client('https://localhost:3000', {
-  connect (opts, cb) {
-    connector(opts, (err, socket) => {
-      if (err) {
-        cb(err)
-      } else if (/* assertion */) {
-        socket.destroy()
-        cb(new Error('kaboom'))
-      } else {
-        cb(null, socket)
-      }
-    })
-  }
-})
-```
-
-### Example: validate the CA fingerprint
-
-```js
-'use strict'
-
-import { Client, buildConnector } from 'undici'
-
-const caFingerprint = 'FO:OB:AR'
-const connector = buildConnector({ rejectUnauthorized: false })
-const client = new Client('https://localhost:3000', {
-  connect (opts, cb) {
-    connector(opts, (err, socket) => {
-      if (err) {
-        cb(err)
-      } else if (getIssuerCertificate(socket).fingerprint256 !== caFingerprint) {
-        socket.destroy()
-        cb(new Error('Fingerprint does not match or malformed certificate'))
-      } else {
-        cb(null, socket)
-      }
-    })
-  }
-})
-
-client.request({
-  path: '/',
-  method: 'GET'
-}, (err, data) => {
-  if (err) throw err
-
-  const bufs = []
-  data.body.on('data', (buf) => {
-    bufs.push(buf)
-  })
-  data.body.on('end', () => {
-    console.log(Buffer.concat(bufs).toString('utf8'))
-    client.close()
-  })
-})
-
-function getIssuerCertificate (socket) {
-  let certificate = socket.getPeerCertificate(true)
-  while (certificate && Object.keys(certificate).length > 0) {
-    // invalid certificate
-    if (certificate.issuerCertificate == null) {
-      return null
-    }
-
-    // We have reached the root certificate.
-    // In case of self-signed certificates, `issuerCertificate` may be a circular reference.
-    if (certificate.fingerprint256 === certificate.issuerCertificate.fingerprint256) {
-      break
-    }
-
-    // continue the loop
-    certificate = certificate.issuerCertificate
-  }
-  return certificate
-}
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/ContentType.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/ContentType.md
deleted file mode 100644
index 2bcc9f7..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/ContentType.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# MIME Type Parsing
-
-## `MIMEType` interface
-
-* **type** `string`
-* **subtype** `string`
-* **parameters** `Map<string, string>`
-* **essence** `string`
-
-## `parseMIMEType(input)`
-
-Implements [parse a MIME type](https://mimesniff.spec.whatwg.org/#parse-a-mime-type).
-
-Parses a MIME type, returning its type, subtype, and any associated parameters. If the parser can't parse an input it returns the string literal `'failure'`.
-
-```js
-import { parseMIMEType } from 'undici'
-
-parseMIMEType('text/html; charset=gbk')
-// {
-//   type: 'text',
-//   subtype: 'html',
-//   parameters: Map(1) { 'charset' => 'gbk' },
-//   essence: 'text/html'
-// }
-```
-
-Arguments:
-
-* **input** `string`
-
-Returns: `MIMEType|'failure'`
-
-## `serializeAMimeType(input)`
-
-Implements [serialize a MIME type](https://mimesniff.spec.whatwg.org/#serialize-a-mime-type).
-
-Serializes a MIMEType object.
-
-```js
-import { serializeAMimeType } from 'undici'
-
-serializeAMimeType({
-  type: 'text',
-  subtype: 'html',
-  parameters: new Map([['charset', 'gbk']]),
-  essence: 'text/html'
-})
-// text/html;charset=gbk
-
-```
-
-Arguments:
-
-* **mimeType** `MIMEType`
-
-Returns: `string`
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Cookies.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Cookies.md
deleted file mode 100644
index 0cad379..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Cookies.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# Cookie Handling
-
-## `Cookie` interface
-
-* **name** `string`
-* **value** `string`
-* **expires** `Date|number` (optional)
-* **maxAge** `number` (optional)
-* **domain** `string` (optional)
-* **path** `string` (optional)
-* **secure** `boolean` (optional)
-* **httpOnly** `boolean` (optional)
-* **sameSite** `'String'|'Lax'|'None'` (optional)
-* **unparsed** `string[]` (optional) Left over attributes that weren't parsed.
-
-## `deleteCookie(headers, name[, attributes])`
-
-Sets the expiry time of the cookie to the unix epoch, causing browsers to delete it when received.
-
-```js
-import { deleteCookie, Headers } from 'undici'
-
-const headers = new Headers()
-deleteCookie(headers, 'name')
-
-console.log(headers.get('set-cookie')) // name=; Expires=Thu, 01 Jan 1970 00:00:00 GMT
-```
-
-Arguments:
-
-* **headers** `Headers`
-* **name** `string`
-* **attributes** `{ path?: string, domain?: string }` (optional)
-
-Returns: `void`
-
-## `getCookies(headers)`
-
-Parses the `Cookie` header and returns a list of attributes and values.
-
-```js
-import { getCookies, Headers } from 'undici'
-
-const headers = new Headers({
-  cookie: 'get=cookies; and=attributes'
-})
-
-console.log(getCookies(headers)) // { get: 'cookies', and: 'attributes' }
-```
-
-Arguments:
-
-* **headers** `Headers`
-
-Returns: `Record<string, string>`
-
-## `getSetCookies(headers)`
-
-Parses all `Set-Cookie` headers.
-
-```js
-import { getSetCookies, Headers } from 'undici'
-
-const headers = new Headers({ 'set-cookie': 'undici=getSetCookies; Secure' })
-
-console.log(getSetCookies(headers))
-// [
-//   {
-//     name: 'undici',
-//     value: 'getSetCookies',
-//     secure: true
-//   }
-// ]
-
-```
-
-Arguments:
-
-* **headers** `Headers`
-
-Returns: `Cookie[]`
-
-## `setCookie(headers, cookie)`
-
-Appends a cookie to the `Set-Cookie` header.
-
-```js
-import { setCookie, Headers } from 'undici'
-
-const headers = new Headers()
-setCookie(headers, { name: 'undici', value: 'setCookie' })
-
-console.log(headers.get('Set-Cookie')) // undici=setCookie
-```
-
-Arguments:
-
-* **headers** `Headers`
-* **cookie** `Cookie`
-
-Returns: `void`
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/DiagnosticsChannel.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/DiagnosticsChannel.md
deleted file mode 100644
index 0aa0b9a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/DiagnosticsChannel.md
+++ /dev/null
@@ -1,204 +0,0 @@
-# Diagnostics Channel Support
-
-Stability: Experimental.
-
-Undici supports the [`diagnostics_channel`](https://nodejs.org/api/diagnostics_channel.html) (currently available only on Node.js v16+).
-It is the preferred way to instrument Undici and retrieve internal information.
-
-The channels available are the following.
-
-## `undici:request:create`
-
-This message is published when a new outgoing request is created.
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:request:create').subscribe(({ request }) => {
-  console.log('origin', request.origin)
-  console.log('completed', request.completed)
-  console.log('method', request.method)
-  console.log('path', request.path)
-  console.log('headers') // raw text, e.g: 'bar: bar\r\n'
-  request.addHeader('hello', 'world')
-  console.log('headers', request.headers) // e.g. 'bar: bar\r\nhello: world\r\n'
-})
-```
-
-Note: a request is only loosely completed to a given socket.
-
-
-## `undici:request:bodySent`
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:request:bodySent').subscribe(({ request }) => {
-  // request is the same object undici:request:create
-})
-```
-
-## `undici:request:headers`
-
-This message is published after the response headers have been received, i.e. the response has been completed.
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:request:headers').subscribe(({ request, response }) => {
-  // request is the same object undici:request:create
-  console.log('statusCode', response.statusCode)
-  console.log(response.statusText)
-  // response.headers are buffers.
-  console.log(response.headers.map((x) => x.toString()))
-})
-```
-
-## `undici:request:trailers`
-
-This message is published after the response body and trailers have been received, i.e. the response has been completed.
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:request:trailers').subscribe(({ request, trailers }) => {
-  // request is the same object undici:request:create
-  console.log('completed', request.completed)
-  // trailers are buffers.
-  console.log(trailers.map((x) => x.toString()))
-})
-```
-
-## `undici:request:error`
-
-This message is published if the request is going to error, but it has not errored yet.
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:request:error').subscribe(({ request, error }) => {
-  // request is the same object undici:request:create
-})
-```
-
-## `undici:client:sendHeaders`
-
-This message is published right before the first byte of the request is written to the socket.
-
-*Note*: It will publish the exact headers that will be sent to the server in raw format.
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:client:sendHeaders').subscribe(({ request, headers, socket }) => {
-  // request is the same object undici:request:create
-  console.log(`Full headers list ${headers.split('\r\n')}`);
-})
-```
-
-## `undici:client:beforeConnect`
-
-This message is published before creating a new connection for **any** request.
-You can not assume that this event is related to any specific request.
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:client:beforeConnect').subscribe(({ connectParams, connector }) => {
-  // const { host, hostname, protocol, port, servername } = connectParams
-  // connector is a function that creates the socket
-})
-```
-
-## `undici:client:connected`
-
-This message is published after a connection is established.
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:client:connected').subscribe(({ socket, connectParams, connector }) => {
-  // const { host, hostname, protocol, port, servername } = connectParams
- // connector is a function that creates the socket
-})
-```
-
-## `undici:client:connectError`
-
-This message is published if it did not succeed to create new connection
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:client:connectError').subscribe(({ error, socket, connectParams, connector }) => {
-  // const { host, hostname, protocol, port, servername } = connectParams
-  // connector is a function that creates the socket
-  console.log(`Connect failed with ${error.message}`)
-})
-```
-
-## `undici:websocket:open`
-
-This message is published after the client has successfully connected to a server.
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:websocket:open').subscribe(({ address, protocol, extensions }) => {
-  console.log(address) // address, family, and port
-  console.log(protocol) // negotiated subprotocols
-  console.log(extensions) // negotiated extensions
-})
-```
-
-## `undici:websocket:close`
-
-This message is published after the connection has closed.
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:websocket:close').subscribe(({ websocket, code, reason }) => {
-  console.log(websocket) // the WebSocket object
-  console.log(code) // the closing status code
-  console.log(reason) // the closing reason
-})
-```
-
-## `undici:websocket:socket_error`
-
-This message is published if the socket experiences an error.
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:websocket:socket_error').subscribe((error) => {
-  console.log(error)
-})
-```
-
-## `undici:websocket:ping`
-
-This message is published after the client receives a ping frame, if the connection is not closing.
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:websocket:ping').subscribe(({ payload }) => {
-  // a Buffer or undefined, containing the optional application data of the frame
-  console.log(payload)
-})
-```
-
-## `undici:websocket:pong`
-
-This message is published after the client receives a pong frame.
-
-```js
-import diagnosticsChannel from 'diagnostics_channel'
-
-diagnosticsChannel.channel('undici:websocket:pong').subscribe(({ payload }) => {
-  // a Buffer or undefined, containing the optional application data of the frame
-  console.log(payload)
-})
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/DispatchInterceptor.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/DispatchInterceptor.md
deleted file mode 100644
index 7dfc260..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/DispatchInterceptor.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# Interface: DispatchInterceptor
-
-Extends: `Function`
-
-A function that can be applied to the `Dispatcher.Dispatch` function before it is invoked with a dispatch request.
-
-This allows one to write logic to intercept both the outgoing request, and the incoming response.
-
-### Parameter: `Dispatcher.Dispatch`
-
-The base dispatch function you are decorating.
-
-### ReturnType: `Dispatcher.Dispatch`
-
-A dispatch function that has been altered to provide additional logic
-
-### Basic Example
-
-Here is an example of an interceptor being used to provide a JWT bearer token
-
-```js
-'use strict'
-
-const insertHeaderInterceptor = dispatch => {
-  return function InterceptedDispatch(opts, handler){
-    opts.headers.push('Authorization', 'Bearer [Some token]')
-    return dispatch(opts, handler)
-  }
-}
-
-const client = new Client('https://localhost:3000', {
-  interceptors: { Client: [insertHeaderInterceptor] }
-})
-
-```
-
-### Basic Example 2
-
-Here is a contrived example of an interceptor stripping the headers from a response.
-
-```js
-'use strict'
-
-const clearHeadersInterceptor = dispatch => {
-  const { DecoratorHandler } = require('undici')
-  class ResultInterceptor extends DecoratorHandler {
-    onHeaders (statusCode, headers, resume) {
-      return super.onHeaders(statusCode, [], resume)
-    }
-  }
-  return function InterceptedDispatch(opts, handler){
-    return dispatch(opts, new ResultInterceptor(handler))
-  }
-}
-
-const client = new Client('https://localhost:3000', {
-  interceptors: { Client: [clearHeadersInterceptor] }
-})
-
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Dispatcher.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Dispatcher.md
deleted file mode 100644
index fd463bf..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Dispatcher.md
+++ /dev/null
@@ -1,887 +0,0 @@
-# Dispatcher
-
-Extends: `events.EventEmitter`
-
-Dispatcher is the core API used to dispatch requests.
-
-Requests are not guaranteed to be dispatched in order of invocation.
-
-## Instance Methods
-
-### `Dispatcher.close([callback]): Promise`
-
-Closes the dispatcher and gracefully waits for enqueued requests to complete before resolving.
-
-Arguments:
-
-* **callback** `(error: Error | null, data: null) => void` (optional)
-
-Returns: `void | Promise<null>` - Only returns a `Promise` if no `callback` argument was passed
-
-```js
-dispatcher.close() // -> Promise
-dispatcher.close(() => {}) // -> void
-```
-
-#### Example - Request resolves before Client closes
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  response.end('undici')
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-try {
-  const { body } = await client.request({
-      path: '/',
-      method: 'GET'
-  })
-  body.setEncoding('utf8')
-  body.on('data', console.log)
-} catch (error) {}
-
-await client.close()
-
-console.log('Client closed')
-server.close()
-```
-
-### `Dispatcher.connect(options[, callback])`
-
-Starts two-way communications with the requested resource using [HTTP CONNECT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT).
-
-Arguments:
-
-* **options** `ConnectOptions`
-* **callback** `(err: Error | null, data: ConnectData | null) => void` (optional)
-
-Returns: `void | Promise<ConnectData>` - Only returns a `Promise` if no `callback` argument was passed
-
-#### Parameter: `ConnectOptions`
-
-* **path** `string`
-* **headers** `UndiciHeaders` (optional) - Default: `null`
-* **signal** `AbortSignal | events.EventEmitter | null` (optional) - Default: `null`
-* **opaque** `unknown` (optional) - This argument parameter is passed through to `ConnectData`
-
-#### Parameter: `ConnectData`
-
-* **statusCode** `number`
-* **headers** `Record<string, string | string[] | undefined>`
-* **socket** `stream.Duplex`
-* **opaque** `unknown`
-
-#### Example - Connect request with echo
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  throw Error('should never get here')
-}).listen()
-
-server.on('connect', (req, socket, head) => {
-  socket.write('HTTP/1.1 200 Connection established\r\n\r\n')
-
-  let data = head.toString()
-  socket.on('data', (buf) => {
-    data += buf.toString()
-  })
-
-  socket.on('end', () => {
-    socket.end(data)
-  })
-})
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-try {
-  const { socket } = await client.connect({
-    path: '/'
-  })
-  const wanted = 'Body'
-  let data = ''
-  socket.on('data', d => { data += d })
-  socket.on('end', () => {
-    console.log(`Data received: ${data.toString()} | Data wanted: ${wanted}`)
-    client.close()
-    server.close()
-  })
-  socket.write(wanted)
-  socket.end()
-} catch (error) { }
-```
-
-### `Dispatcher.destroy([error, callback]): Promise`
-
-Destroy the dispatcher abruptly with the given error. All the pending and running requests will be asynchronously aborted and error. Since this operation is asynchronously dispatched there might still be some progress on dispatched requests.
-
-Both arguments are optional; the method can be called in four different ways:
-
-Arguments:
-
-* **error** `Error | null` (optional)
-* **callback** `(error: Error | null, data: null) => void` (optional)
-
-Returns: `void | Promise<void>` - Only returns a `Promise` if no `callback` argument was passed
-
-```js
-dispatcher.destroy() // -> Promise
-dispatcher.destroy(new Error()) // -> Promise
-dispatcher.destroy(() => {}) // -> void
-dispatcher.destroy(new Error(), () => {}) // -> void
-```
-
-#### Example - Request is aborted when Client is destroyed
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  response.end()
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-try {
-  const request = client.request({
-    path: '/',
-    method: 'GET'
-  })
-  client.destroy()
-    .then(() => {
-      console.log('Client destroyed')
-      server.close()
-    })
-  await request
-} catch (error) {
-  console.error(error)
-}
-```
-
-### `Dispatcher.dispatch(options, handler)`
-
-This is the low level API which all the preceding APIs are implemented on top of.
-This API is expected to evolve through semver-major versions and is less stable than the preceding higher level APIs.
-It is primarily intended for library developers who implement higher level APIs on top of this.
-
-Arguments:
-
-* **options** `DispatchOptions`
-* **handler** `DispatchHandler`
-
-Returns: `Boolean` - `false` if dispatcher is busy and further dispatch calls won't make any progress until the `'drain'` event has been emitted.
-
-#### Parameter: `DispatchOptions`
-
-* **origin** `string | URL`
-* **path** `string`
-* **method** `string`
-* **reset** `boolean` (optional) - Default: `false` - If `false`, the request will attempt to create a long-living connection by sending the `connection: keep-alive` header,otherwise will attempt to close it immediately after response by sending `connection: close` within the request and closing the socket afterwards.
-* **body** `string | Buffer | Uint8Array | stream.Readable | Iterable | AsyncIterable | null` (optional) - Default: `null`
-* **headers** `UndiciHeaders | string[]` (optional) - Default: `null`.
-* **query** `Record<string, any> | null` (optional) - Default: `null` - Query string params to be embedded in the request URL. Note that both keys and values of query are encoded using `encodeURIComponent`. If for some reason you need to send them unencoded, embed query params into path directly instead.
-* **idempotent** `boolean` (optional) - Default: `true` if `method` is `'HEAD'` or `'GET'` - Whether the requests can be safely retried or not. If `false` the request won't be sent until all preceding requests in the pipeline has completed.
-* **blocking** `boolean` (optional) - Default: `false` - Whether the response is expected to take a long time and would end up blocking the pipeline. When this is set to `true` further pipelining will be avoided on the same connection until headers have been received.
-* **upgrade** `string | null` (optional) - Default: `null` - Upgrade the request. Should be used to specify the kind of upgrade i.e. `'Websocket'`.
-* **bodyTimeout** `number | null` (optional) - The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Defaults to 300 seconds.
-* **headersTimeout** `number | null` (optional) - The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers while not sending the request. Defaults to 300 seconds.
-* **throwOnError** `boolean` (optional) - Default: `false` - Whether Undici should throw an error upon receiving a 4xx or 5xx response from the server.
-* **expectContinue** `boolean` (optional) - Default: `false` - For H2, it appends the expect: 100-continue header, and halts the request body until a 100-continue is received from the remote server
-
-#### Parameter: `DispatchHandler`
-
-* **onConnect** `(abort: () => void, context: object) => void` - Invoked before request is dispatched on socket. May be invoked multiple times when a request is retried when the request at the head of the pipeline fails.
-* **onError** `(error: Error) => void` - Invoked when an error has occurred. May not throw.
-* **onUpgrade** `(statusCode: number, headers: Buffer[], socket: Duplex) => void` (optional) - Invoked when request is upgraded. Required if `DispatchOptions.upgrade` is defined or `DispatchOptions.method === 'CONNECT'`.
-* **onHeaders** `(statusCode: number, headers: Buffer[], resume: () => void, statusText: string) => boolean` - Invoked when statusCode and headers have been received. May be invoked multiple times due to 1xx informational headers. Not required for `upgrade` requests.
-* **onData** `(chunk: Buffer) => boolean` - Invoked when response payload data is received. Not required for `upgrade` requests.
-* **onComplete** `(trailers: Buffer[]) => void` - Invoked when response payload and trailers have been received and the request has completed. Not required for `upgrade` requests.
-* **onBodySent** `(chunk: string | Buffer | Uint8Array) => void` - Invoked when a body chunk is sent to the server. Not required. For a stream or iterable body this will be invoked for every chunk. For other body types, it will be invoked once after the body is sent.
-
-#### Example 1 - Dispatch GET request
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  response.end('Hello, World!')
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-const data = []
-
-client.dispatch({
-  path: '/',
-  method: 'GET',
-  headers: {
-    'x-foo': 'bar'
-  }
-}, {
-  onConnect: () => {
-    console.log('Connected!')
-  },
-  onError: (error) => {
-    console.error(error)
-  },
-  onHeaders: (statusCode, headers) => {
-    console.log(`onHeaders | statusCode: ${statusCode} | headers: ${headers}`)
-  },
-  onData: (chunk) => {
-    console.log('onData: chunk received')
-    data.push(chunk)
-  },
-  onComplete: (trailers) => {
-    console.log(`onComplete | trailers: ${trailers}`)
-    const res = Buffer.concat(data).toString('utf8')
-    console.log(`Data: ${res}`)
-    client.close()
-    server.close()
-  }
-})
-```
-
-#### Example 2 - Dispatch Upgrade Request
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  response.end()
-}).listen()
-
-await once(server, 'listening')
-
-server.on('upgrade', (request, socket, head) => {
-  console.log('Node.js Server - upgrade event')
-  socket.write('HTTP/1.1 101 Web Socket Protocol Handshake\r\n')
-  socket.write('Upgrade: WebSocket\r\n')
-  socket.write('Connection: Upgrade\r\n')
-  socket.write('\r\n')
-  socket.end()
-})
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-client.dispatch({
-  path: '/',
-  method: 'GET',
-  upgrade: 'websocket'
-}, {
-  onConnect: () => {
-    console.log('Undici Client - onConnect')
-  },
-  onError: (error) => {
-    console.log('onError') // shouldn't print
-  },
-  onUpgrade: (statusCode, headers, socket) => {
-    console.log('Undici Client - onUpgrade')
-    console.log(`onUpgrade Headers: ${headers}`)
-    socket.on('data', buffer => {
-      console.log(buffer.toString('utf8'))
-    })
-    socket.on('end', () => {
-      client.close()
-      server.close()
-    })
-    socket.end()
-  }
-})
-```
-
-#### Example 3 - Dispatch POST request
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  request.on('data', (data) => {
-    console.log(`Request Data: ${data.toString('utf8')}`)
-    const body = JSON.parse(data)
-    body.message = 'World'
-    response.end(JSON.stringify(body))
-  })
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-const data = []
-
-client.dispatch({
-  path: '/',
-  method: 'POST',
-  headers: {
-    'content-type': 'application/json'
-  },
-  body: JSON.stringify({ message: 'Hello' })
-}, {
-  onConnect: () => {
-    console.log('Connected!')
-  },
-  onError: (error) => {
-    console.error(error)
-  },
-  onHeaders: (statusCode, headers) => {
-    console.log(`onHeaders | statusCode: ${statusCode} | headers: ${headers}`)
-  },
-  onData: (chunk) => {
-    console.log('onData: chunk received')
-    data.push(chunk)
-  },
-  onComplete: (trailers) => {
-    console.log(`onComplete | trailers: ${trailers}`)
-    const res = Buffer.concat(data).toString('utf8')
-    console.log(`Response Data: ${res}`)
-    client.close()
-    server.close()
-  }
-})
-```
-
-### `Dispatcher.pipeline(options, handler)`
-
-For easy use with [stream.pipeline](https://nodejs.org/api/stream.html#stream_stream_pipeline_source_transforms_destination_callback). The `handler` argument should return a `Readable` from which the result will be read. Usually it should just return the `body` argument unless some kind of transformation needs to be performed based on e.g. `headers` or `statusCode`. The `handler` should validate the response and save any required state. If there is an error, it should be thrown. The function returns a `Duplex` which writes to the request and reads from the response.
-
-Arguments:
-
-* **options** `PipelineOptions`
-* **handler** `(data: PipelineHandlerData) => stream.Readable`
-
-Returns: `stream.Duplex`
-
-#### Parameter: PipelineOptions
-
-Extends: [`RequestOptions`](#parameter-requestoptions)
-
-* **objectMode** `boolean` (optional) - Default: `false` - Set to `true` if the `handler` will return an object stream.
-
-#### Parameter: PipelineHandlerData
-
-* **statusCode** `number`
-* **headers** `Record<string, string | string[] | undefined>`
-* **opaque** `unknown`
-* **body** `stream.Readable`
-* **context** `object`
-* **onInfo** `({statusCode: number, headers: Record<string, string | string[]>}) => void | null` (optional) - Default: `null` - Callback collecting all the info headers (HTTP 100-199) received.
-
-#### Example 1 - Pipeline Echo
-
-```js
-import { Readable, Writable, PassThrough, pipeline } from 'stream'
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  request.pipe(response)
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-let res = ''
-
-pipeline(
-  new Readable({
-    read () {
-      this.push(Buffer.from('undici'))
-      this.push(null)
-    }
-  }),
-  client.pipeline({
-    path: '/',
-    method: 'GET'
-  }, ({ statusCode, headers, body }) => {
-    console.log(`response received ${statusCode}`)
-    console.log('headers', headers)
-    return pipeline(body, new PassThrough(), () => {})
-  }),
-  new Writable({
-    write (chunk, _, callback) {
-      res += chunk.toString()
-      callback()
-    },
-    final (callback) {
-      console.log(`Response pipelined to writable: ${res}`)
-      callback()
-    }
-  }),
-  error => {
-    if (error) {
-      console.error(error)
-    }
-
-    client.close()
-    server.close()
-  }
-)
-```
-
-### `Dispatcher.request(options[, callback])`
-
-Performs a HTTP request.
-
-Non-idempotent requests will not be pipelined in order
-to avoid indirect failures.
-
-Idempotent requests will be automatically retried if
-they fail due to indirect failure from the request
-at the head of the pipeline. This does not apply to
-idempotent requests with a stream request body.
-
-All response bodies must always be fully consumed or destroyed.
-
-Arguments:
-
-* **options** `RequestOptions`
-* **callback** `(error: Error | null, data: ResponseData) => void` (optional)
-
-Returns: `void | Promise<ResponseData>` - Only returns a `Promise` if no `callback` argument was passed.
-
-#### Parameter: `RequestOptions`
-
-Extends: [`DispatchOptions`](#parameter-dispatchoptions)
-
-* **opaque** `unknown` (optional) - Default: `null` - Used for passing through context to `ResponseData`.
-* **signal** `AbortSignal | events.EventEmitter | null` (optional) - Default: `null`.
-* **onInfo** `({statusCode: number, headers: Record<string, string | string[]>}) => void | null` (optional) - Default: `null` - Callback collecting all the info headers (HTTP 100-199) received.
-
-The `RequestOptions.method` property should not be value `'CONNECT'`.
-
-#### Parameter: `ResponseData`
-
-* **statusCode** `number`
-* **headers** `Record<string, string | string[]>` - Note that all header keys are lower-cased, e. g. `content-type`.
-* **body** `stream.Readable` which also implements [the body mixin from the Fetch Standard](https://fetch.spec.whatwg.org/#body-mixin).
-* **trailers** `Record<string, string>` - This object starts out
-  as empty and will be mutated to contain trailers after `body` has emitted `'end'`.
-* **opaque** `unknown`
-* **context** `object`
-
-`body` contains the following additional [body mixin](https://fetch.spec.whatwg.org/#body-mixin) methods and properties:
-
-- `text()`
-- `json()`
-- `arrayBuffer()`
-- `body`
-- `bodyUsed`
-
-`body` can not be consumed twice. For example, calling `text()` after `json()` throws `TypeError`.
-
-`body` contains the following additional extensions:
-
-- `dump({ limit: Integer })`, dump the response by reading up to `limit` bytes without killing the socket (optional) - Default: 262144.
-
-Note that body will still be a `Readable` even if it is empty, but attempting to deserialize it with `json()` will result in an exception. Recommended way to ensure there is a body to deserialize is to check if status code is not 204, and `content-type` header starts with `application/json`.
-
-#### Example 1 - Basic GET Request
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  response.end('Hello, World!')
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-try {
-  const { body, headers, statusCode, trailers } = await client.request({
-    path: '/',
-    method: 'GET'
-  })
-  console.log(`response received ${statusCode}`)
-  console.log('headers', headers)
-  body.setEncoding('utf8')
-  body.on('data', console.log)
-  body.on('end', () => {
-    console.log('trailers', trailers)
-  })
-
-  client.close()
-  server.close()
-} catch (error) {
-  console.error(error)
-}
-```
-
-#### Example 2 - Aborting a request
-
-> Node.js v15+ is required to run this example
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  response.end('Hello, World!')
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-const abortController = new AbortController()
-
-try {
-  client.request({
-    path: '/',
-    method: 'GET',
-    signal: abortController.signal
-  })
-} catch (error) {
-  console.error(error) // should print an RequestAbortedError
-  client.close()
-  server.close()
-}
-
-abortController.abort()
-```
-
-Alternatively, any `EventEmitter` that emits an `'abort'` event may be used as an abort controller:
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import EventEmitter, { once } from 'events'
-
-const server = createServer((request, response) => {
-  response.end('Hello, World!')
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-const ee = new EventEmitter()
-
-try {
-  client.request({
-    path: '/',
-    method: 'GET',
-    signal: ee
-  })
-} catch (error) {
-  console.error(error) // should print an RequestAbortedError
-  client.close()
-  server.close()
-}
-
-ee.emit('abort')
-```
-
-Destroying the request or response body will have the same effect.
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  response.end('Hello, World!')
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-try {
-  const { body } = await client.request({
-    path: '/',
-    method: 'GET'
-  })
-  body.destroy()
-} catch (error) {
-  console.error(error) // should print an RequestAbortedError
-  client.close()
-  server.close()
-}
-```
-
-### `Dispatcher.stream(options, factory[, callback])`
-
-A faster version of `Dispatcher.request`. This method expects the second argument `factory` to return a [`stream.Writable`](https://nodejs.org/api/stream.html#stream_class_stream_writable) stream which the response will be written to. This improves performance by avoiding creating an intermediate [`stream.Readable`](https://nodejs.org/api/stream.html#stream_readable_streams) stream when the user expects to directly pipe the response body to a [`stream.Writable`](https://nodejs.org/api/stream.html#stream_class_stream_writable) stream.
-
-As demonstrated in [Example 1 - Basic GET stream request](#example-1---basic-get-stream-request), it is recommended to use the `option.opaque` property to avoid creating a closure for the `factory` method. This pattern works well with Node.js Web Frameworks such as [Fastify](https://fastify.io). See [Example 2 - Stream to Fastify Response](#example-2---stream-to-fastify-response) for more details.
-
-Arguments:
-
-* **options** `RequestOptions`
-* **factory** `(data: StreamFactoryData) => stream.Writable`
-* **callback** `(error: Error | null, data: StreamData) => void` (optional)
-
-Returns: `void | Promise<StreamData>` - Only returns a `Promise` if no `callback` argument was passed
-
-#### Parameter: `StreamFactoryData`
-
-* **statusCode** `number`
-* **headers** `Record<string, string | string[] | undefined>`
-* **opaque** `unknown`
-* **onInfo** `({statusCode: number, headers: Record<string, string | string[]>}) => void | null` (optional) - Default: `null` - Callback collecting all the info headers (HTTP 100-199) received.
-
-#### Parameter: `StreamData`
-
-* **opaque** `unknown`
-* **trailers** `Record<string, string>`
-* **context** `object`
-
-#### Example 1 - Basic GET stream request
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-import { Writable } from 'stream'
-
-const server = createServer((request, response) => {
-  response.end('Hello, World!')
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-const bufs = []
-
-try {
-  await client.stream({
-    path: '/',
-    method: 'GET',
-    opaque: { bufs }
-  }, ({ statusCode, headers, opaque: { bufs } }) => {
-    console.log(`response received ${statusCode}`)
-    console.log('headers', headers)
-    return new Writable({
-      write (chunk, encoding, callback) {
-        bufs.push(chunk)
-        callback()
-      }
-    })
-  })
-
-  console.log(Buffer.concat(bufs).toString('utf-8'))
-
-  client.close()
-  server.close()
-} catch (error) {
-  console.error(error)
-}
-```
-
-#### Example 2 - Stream to Fastify Response
-
-In this example, a (fake) request is made to the fastify server using `fastify.inject()`. This request then executes the fastify route handler which makes a subsequent request to the raw Node.js http server using `undici.dispatcher.stream()`. The fastify response is passed to the `opaque` option so that undici can tap into the underlying writable stream using `response.raw`. This methodology demonstrates how one could use undici and fastify together to create fast-as-possible requests from one backend server to another.
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-import fastify from 'fastify'
-
-const nodeServer = createServer((request, response) => {
-  response.end('Hello, World! From Node.js HTTP Server')
-}).listen()
-
-await once(nodeServer, 'listening')
-
-console.log('Node Server listening')
-
-const nodeServerUndiciClient = new Client(`http://localhost:${nodeServer.address().port}`)
-
-const fastifyServer = fastify()
-
-fastifyServer.route({
-  url: '/',
-  method: 'GET',
-  handler: (request, response) => {
-    nodeServerUndiciClient.stream({
-      path: '/',
-      method: 'GET',
-      opaque: response
-    }, ({ opaque }) => opaque.raw)
-  }
-})
-
-await fastifyServer.listen()
-
-console.log('Fastify Server listening')
-
-const fastifyServerUndiciClient = new Client(`http://localhost:${fastifyServer.server.address().port}`)
-
-try {
-  const { statusCode, body } = await fastifyServerUndiciClient.request({
-    path: '/',
-    method: 'GET'
-  })
-
-  console.log(`response received ${statusCode}`)
-  body.setEncoding('utf8')
-  body.on('data', console.log)
-
-  nodeServerUndiciClient.close()
-  fastifyServerUndiciClient.close()
-  fastifyServer.close()
-  nodeServer.close()
-} catch (error) { }
-```
-
-### `Dispatcher.upgrade(options[, callback])`
-
-Upgrade to a different protocol. Visit [MDN - HTTP - Protocol upgrade mechanism](https://developer.mozilla.org/en-US/docs/Web/HTTP/Protocol_upgrade_mechanism) for more details.
-
-Arguments:
-
-* **options** `UpgradeOptions`
-
-* **callback** `(error: Error | null, data: UpgradeData) => void` (optional)
-
-Returns: `void | Promise<UpgradeData>` - Only returns a `Promise` if no `callback` argument was passed
-
-#### Parameter: `UpgradeOptions`
-
-* **path** `string`
-* **method** `string` (optional) - Default: `'GET'`
-* **headers** `UndiciHeaders` (optional) - Default: `null`
-* **protocol** `string` (optional) - Default: `'Websocket'` - A string of comma separated protocols, in descending preference order.
-* **signal** `AbortSignal | EventEmitter | null` (optional) - Default: `null`
-
-#### Parameter: `UpgradeData`
-
-* **headers** `http.IncomingHeaders`
-* **socket** `stream.Duplex`
-* **opaque** `unknown`
-
-#### Example 1 - Basic Upgrade Request
-
-```js
-import { createServer } from 'http'
-import { Client } from 'undici'
-import { once } from 'events'
-
-const server = createServer((request, response) => {
-  response.statusCode = 101
-  response.setHeader('connection', 'upgrade')
-  response.setHeader('upgrade', request.headers.upgrade)
-  response.end()
-}).listen()
-
-await once(server, 'listening')
-
-const client = new Client(`http://localhost:${server.address().port}`)
-
-try {
-  const { headers, socket } = await client.upgrade({
-    path: '/',
-  })
-  socket.on('end', () => {
-    console.log(`upgrade: ${headers.upgrade}`) // upgrade: Websocket
-    client.close()
-    server.close()
-  })
-  socket.end()
-} catch (error) {
-  console.error(error)
-  client.close()
-  server.close()
-}
-```
-
-## Instance Events
-
-### Event: `'connect'`
-
-Parameters:
-
-* **origin** `URL`
-* **targets** `Array<Dispatcher>`
-
-### Event: `'disconnect'`
-
-Parameters:
-
-* **origin** `URL`
-* **targets** `Array<Dispatcher>`
-* **error** `Error`
-
-### Event: `'connectionError'`
-
-Parameters:
-
-* **origin** `URL`
-* **targets** `Array<Dispatcher>`
-* **error** `Error`
-
-Emitted when dispatcher fails to connect to
-origin.
-
-### Event: `'drain'`
-
-Parameters:
-
-* **origin** `URL`
-
-Emitted when dispatcher is no longer busy.
-
-## Parameter: `UndiciHeaders`
-
-* `Record<string, string | string[] | undefined> | string[] | null`
-
-Header arguments such as `options.headers` in [`Client.dispatch`](Client.md#clientdispatchoptions-handlers) can be specified in two forms; either as an object specified by the `Record<string, string | string[] | undefined>` (`IncomingHttpHeaders`) type, or an array of strings. An array representation of a header list must have an even length or an `InvalidArgumentError` will be thrown.
-
-Keys are lowercase and values are not modified.
-
-Response headers will derive a `host` from the `url` of the [Client](Client.md#class-client) instance if no `host` header was previously specified.
-
-### Example 1 - Object
-
-```js
-{
-  'content-length': '123',
-  'content-type': 'text/plain',
-  connection: 'keep-alive',
-  host: 'mysite.com',
-  accept: '*/*'
-}
-```
-
-### Example 2 - Array
-
-```js
-[
-  'content-length', '123',
-  'content-type', 'text/plain',
-  'connection', 'keep-alive',
-  'host', 'mysite.com',
-  'accept', '*/*'
-]
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Errors.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Errors.md
deleted file mode 100644
index 917e45d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Errors.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# Errors
-
-Undici exposes a variety of error objects that you can use to enhance your error handling.
-You can find all the error objects inside the `errors` key.
-
-```js
-import { errors } from 'undici'
-```
-
-| Error                                | Error Codes                           | Description                                                               |
-| ------------------------------------ | ------------------------------------- | ------------------------------------------------------------------------- |
-| `UndiciError`                        | `UND_ERR`                             | all errors below are extended from `UndiciError`.                         |
-| `ConnectTimeoutError`                | `UND_ERR_CONNECT_TIMEOUT`             | socket is destroyed due to connect timeout.                               |
-| `HeadersTimeoutError`                | `UND_ERR_HEADERS_TIMEOUT`             | socket is destroyed due to headers timeout.                               |
-| `HeadersOverflowError`               | `UND_ERR_HEADERS_OVERFLOW`            | socket is destroyed due to headers' max size being exceeded.              |
-| `BodyTimeoutError`                   | `UND_ERR_BODY_TIMEOUT`                | socket is destroyed due to body timeout.                                  |
-| `ResponseStatusCodeError`            | `UND_ERR_RESPONSE_STATUS_CODE`        | an error is thrown when `throwOnError` is `true` for status codes >= 400. |
-| `InvalidArgumentError`               | `UND_ERR_INVALID_ARG`                 | passed an invalid argument.                                               |
-| `InvalidReturnValueError`            | `UND_ERR_INVALID_RETURN_VALUE`        | returned an invalid value.                                                |
-| `RequestAbortedError`                | `UND_ERR_ABORTED`                     | the request has been aborted by the user                                  |
-| `ClientDestroyedError`               | `UND_ERR_DESTROYED`                   | trying to use a destroyed client.                                         |
-| `ClientClosedError`                  | `UND_ERR_CLOSED`                      | trying to use a closed client.                                            |
-| `SocketError`                        | `UND_ERR_SOCKET`                      | there is an error with the socket.                                        |
-| `NotSupportedError`                  | `UND_ERR_NOT_SUPPORTED`               | encountered unsupported functionality.                                    |
-| `RequestContentLengthMismatchError`  | `UND_ERR_REQ_CONTENT_LENGTH_MISMATCH` | request body does not match content-length header                         |
-| `ResponseContentLengthMismatchError` | `UND_ERR_RES_CONTENT_LENGTH_MISMATCH` | response body does not match content-length header                        |
-| `InformationalError`                 | `UND_ERR_INFO`                        | expected error with reason                                                |
-| `ResponseExceededMaxSizeError`       | `UND_ERR_RES_EXCEEDED_MAX_SIZE`       | response body exceed the max size allowed                                 |
-
-### `SocketError`
-
-The `SocketError` has a `.socket` property which holds socket metadata:
-
-```ts
-interface SocketInfo {
-  localAddress?: string
-  localPort?: number
-  remoteAddress?: string
-  remotePort?: number
-  remoteFamily?: string
-  timeout?: number
-  bytesWritten?: number
-  bytesRead?: number
-}
-```
-
-Be aware that in some cases the `.socket` property can be `null`.
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Fetch.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Fetch.md
deleted file mode 100644
index b5a6242..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Fetch.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# Fetch
-
-Undici exposes a fetch() method starts the process of fetching a resource from the network.
-
-Documentation and examples can be found on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/fetch).
-
-## File
-
-This API is implemented as per the standard, you can find documentation on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/File)
-
-In Node versions v18.13.0 and above and v19.2.0 and above, undici will default to using Node's [File](https://nodejs.org/api/buffer.html#class-file) class. In versions where it's not available, it will default to the undici one.
-
-## FormData
-
-This API is implemented as per the standard, you can find documentation on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/FormData)
-
-## Response
-
-This API is implemented as per the standard, you can find documentation on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Response)
-
-## Request
-
-This API is implemented as per the standard, you can find documentation on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Request)
-
-## Header
-
-This API is implemented as per the standard, you can find documentation on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Headers)
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/MockAgent.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/MockAgent.md
deleted file mode 100644
index 85ae690..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/MockAgent.md
+++ /dev/null
@@ -1,540 +0,0 @@
-# Class: MockAgent
-
-Extends: `undici.Dispatcher`
-
-A mocked Agent class that implements the Agent API. It allows one to intercept HTTP requests made through undici and return mocked responses instead.
-
-## `new MockAgent([options])`
-
-Arguments:
-
-* **options** `MockAgentOptions` (optional) - It extends the `Agent` options.
-
-Returns: `MockAgent`
-
-### Parameter: `MockAgentOptions`
-
-Extends: [`AgentOptions`](Agent.md#parameter-agentoptions)
-
-* **agent** `Agent` (optional) - Default: `new Agent([options])` - a custom agent encapsulated by the MockAgent.
-
-### Example - Basic MockAgent instantiation
-
-This will instantiate the MockAgent. It will not do anything until registered as the agent to use with requests and mock interceptions are added.
-
-```js
-import { MockAgent } from 'undici'
-
-const mockAgent = new MockAgent()
-```
-
-### Example - Basic MockAgent instantiation with custom agent
-
-```js
-import { Agent, MockAgent } from 'undici'
-
-const agent = new Agent()
-
-const mockAgent = new MockAgent({ agent })
-```
-
-## Instance Methods
-
-### `MockAgent.get(origin)`
-
-This method creates and retrieves MockPool or MockClient instances which can then be used to intercept HTTP requests. If the number of connections on the mock agent is set to 1, a MockClient instance is returned. Otherwise a MockPool instance is returned.
-
-For subsequent `MockAgent.get` calls on the same origin, the same mock instance will be returned.
-
-Arguments:
-
-* **origin** `string | RegExp | (value) => boolean` - a matcher for the pool origin to be retrieved from the MockAgent.
-
-| Matcher type | Condition to pass          |
-|:------------:| -------------------------- |
-| `string`     | Exact match against string |
-| `RegExp`     | Regex must pass            |
-| `Function`   | Function must return true  |
-
-Returns: `MockClient | MockPool`.
-
-| `MockAgentOptions`   | Mock instance returned |
-| -------------------- | ---------------------- |
-| `connections === 1`  | `MockClient`           |
-| `connections` > `1`  | `MockPool`             |
-
-#### Example - Basic Mocked Request
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-mockPool.intercept({ path: '/foo' }).reply(200, 'foo')
-
-const { statusCode, body } = await request('http://localhost:3000/foo')
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
-
-#### Example - Basic Mocked Request with local mock agent dispatcher
-
-```js
-import { MockAgent, request } from 'undici'
-
-const mockAgent = new MockAgent()
-
-const mockPool = mockAgent.get('http://localhost:3000')
-mockPool.intercept({ path: '/foo' }).reply(200, 'foo')
-
-const {
-  statusCode,
-  body
-} = await request('http://localhost:3000/foo', { dispatcher: mockAgent })
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
-
-#### Example - Basic Mocked Request with local mock pool dispatcher
-
-```js
-import { MockAgent, request } from 'undici'
-
-const mockAgent = new MockAgent()
-
-const mockPool = mockAgent.get('http://localhost:3000')
-mockPool.intercept({ path: '/foo' }).reply(200, 'foo')
-
-const {
-  statusCode,
-  body
-} = await request('http://localhost:3000/foo', { dispatcher: mockPool })
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
-
-#### Example - Basic Mocked Request with local mock client dispatcher
-
-```js
-import { MockAgent, request } from 'undici'
-
-const mockAgent = new MockAgent({ connections: 1 })
-
-const mockClient = mockAgent.get('http://localhost:3000')
-mockClient.intercept({ path: '/foo' }).reply(200, 'foo')
-
-const {
-  statusCode,
-  body
-} = await request('http://localhost:3000/foo', { dispatcher: mockClient })
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
-
-#### Example - Basic Mocked requests with multiple intercepts
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-mockPool.intercept({ path: '/foo' }).reply(200, 'foo')
-mockPool.intercept({ path: '/hello'}).reply(200, 'hello')
-
-const result1 = await request('http://localhost:3000/foo')
-
-console.log('response received', result1.statusCode) // response received 200
-
-for await (const data of result1.body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-
-const result2 = await request('http://localhost:3000/hello')
-
-console.log('response received', result2.statusCode) // response received 200
-
-for await (const data of result2.body) {
-  console.log('data', data.toString('utf8')) // data hello
-}
-```
-#### Example - Mock different requests within the same file
-```js
-const { MockAgent, setGlobalDispatcher } = require('undici');
-const agent = new MockAgent();
-agent.disableNetConnect();
-setGlobalDispatcher(agent);
-describe('Test', () => {
-  it('200', async () => {
-    const mockAgent = agent.get('http://test.com');
-    // your test
-  });
-  it('200', async () => {
-    const mockAgent = agent.get('http://testing.com');
-    // your test
-  });
-});
-```
-
-#### Example - Mocked request with query body, headers and trailers
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/foo?hello=there&see=ya',
-  method: 'POST',
-  body: 'form1=data1&form2=data2'
-}).reply(200, { foo: 'bar' }, {
-  headers: { 'content-type': 'application/json' },
-  trailers: { 'Content-MD5': 'test' }
-})
-
-const {
-  statusCode,
-  headers,
-  trailers,
-  body
-} = await request('http://localhost:3000/foo?hello=there&see=ya', {
-  method: 'POST',
-  body: 'form1=data1&form2=data2'
-})
-
-console.log('response received', statusCode) // response received 200
-console.log('headers', headers) // { 'content-type': 'application/json' }
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // '{"foo":"bar"}'
-}
-
-console.log('trailers', trailers) // { 'content-md5': 'test' }
-```
-
-#### Example - Mocked request with origin regex
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get(new RegExp('http://localhost:3000'))
-mockPool.intercept({ path: '/foo' }).reply(200, 'foo')
-
-const {
-  statusCode,
-  body
-} = await request('http://localhost:3000/foo')
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
-
-#### Example - Mocked request with origin function
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get((origin) => origin === 'http://localhost:3000')
-mockPool.intercept({ path: '/foo' }).reply(200, 'foo')
-
-const {
-  statusCode,
-  body
-} = await request('http://localhost:3000/foo')
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
-
-### `MockAgent.close()`
-
-Closes the mock agent and waits for registered mock pools and clients to also close before resolving.
-
-Returns: `Promise<void>`
-
-#### Example - clean up after tests are complete
-
-```js
-import { MockAgent, setGlobalDispatcher } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-await mockAgent.close()
-```
-
-### `MockAgent.dispatch(options, handlers)`
-
-Implements [`Agent.dispatch(options, handlers)`](Agent.md#parameter-agentdispatchoptions).
-
-### `MockAgent.request(options[, callback])`
-
-See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback).
-
-#### Example - MockAgent request
-
-```js
-import { MockAgent } from 'undici'
-
-const mockAgent = new MockAgent()
-
-const mockPool = mockAgent.get('http://localhost:3000')
-mockPool.intercept({ path: '/foo' }).reply(200, 'foo')
-
-const {
-  statusCode,
-  body
-} = await mockAgent.request({
-  origin: 'http://localhost:3000',
-  path: '/foo',
-  method: 'GET'
-})
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
-
-### `MockAgent.deactivate()`
-
-This method disables mocking in MockAgent.
-
-Returns: `void`
-
-#### Example - Deactivate Mocking
-
-```js
-import { MockAgent, setGlobalDispatcher } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-mockAgent.deactivate()
-```
-
-### `MockAgent.activate()`
-
-This method enables mocking in a MockAgent instance. When instantiated, a MockAgent is automatically activated. Therefore, this method is only effective after `MockAgent.deactivate` has been called.
-
-Returns: `void`
-
-#### Example - Activate Mocking
-
-```js
-import { MockAgent, setGlobalDispatcher } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-mockAgent.deactivate()
-// No mocking will occur
-
-// Later
-mockAgent.activate()
-```
-
-### `MockAgent.enableNetConnect([host])`
-
-When requests are not matched in a MockAgent intercept, a real HTTP request is attempted. We can control this further through the use of `enableNetConnect`. This is achieved by defining host matchers so only matching requests will be attempted.
-
-When using a string, it should only include the **hostname and optionally, the port**. In addition, calling this method multiple times with a string will allow all HTTP requests that match these values.
-
-Arguments:
-
-* **host** `string | RegExp | (value) => boolean` - (optional)
-
-Returns: `void`
-
-#### Example - Allow all non-matching urls to be dispatched in a real HTTP request
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-mockAgent.enableNetConnect()
-
-await request('http://example.com')
-// A real request is made
-```
-
-#### Example - Allow requests matching a host string to make real requests
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-mockAgent.enableNetConnect('example-1.com')
-mockAgent.enableNetConnect('example-2.com:8080')
-
-await request('http://example-1.com')
-// A real request is made
-
-await request('http://example-2.com:8080')
-// A real request is made
-
-await request('http://example-3.com')
-// Will throw
-```
-
-#### Example - Allow requests matching a host regex to make real requests
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-mockAgent.enableNetConnect(new RegExp('example.com'))
-
-await request('http://example.com')
-// A real request is made
-```
-
-#### Example - Allow requests matching a host function to make real requests
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-mockAgent.enableNetConnect((value) => value === 'example.com')
-
-await request('http://example.com')
-// A real request is made
-```
-
-### `MockAgent.disableNetConnect()`
-
-This method causes all requests to throw when requests are not matched in a MockAgent intercept.
-
-Returns: `void`
-
-#### Example - Disable all non-matching requests by throwing an error for each
-
-```js
-import { MockAgent, request } from 'undici'
-
-const mockAgent = new MockAgent()
-
-mockAgent.disableNetConnect()
-
-await request('http://example.com')
-// Will throw
-```
-
-### `MockAgent.pendingInterceptors()`
-
-This method returns any pending interceptors registered on a mock agent. A pending interceptor meets one of the following criteria:
-
-- Is registered with neither `.times(<number>)` nor `.persist()`, and has not been invoked;
-- Is persistent (i.e., registered with `.persist()`) and has not been invoked;
-- Is registered with `.times(<number>)` and has not been invoked `<number>` of times.
-
-Returns: `PendingInterceptor[]` (where `PendingInterceptor` is a `MockDispatch` with an additional `origin: string`)
-
-#### Example - List all pending inteceptors
-
-```js
-const agent = new MockAgent()
-agent.disableNetConnect()
-
-agent
-  .get('https://example.com')
-  .intercept({ method: 'GET', path: '/' })
-  .reply(200)
-
-const pendingInterceptors = agent.pendingInterceptors()
-// Returns [
-//   {
-//     timesInvoked: 0,
-//     times: 1,
-//     persist: false,
-//     consumed: false,
-//     pending: true,
-//     path: '/',
-//     method: 'GET',
-//     body: undefined,
-//     headers: undefined,
-//     data: {
-//       error: null,
-//       statusCode: 200,
-//       data: '',
-//       headers: {},
-//       trailers: {}
-//     },
-//     origin: 'https://example.com'
-//   }
-// ]
-```
-
-### `MockAgent.assertNoPendingInterceptors([options])`
-
-This method throws if the mock agent has any pending interceptors. A pending interceptor meets one of the following criteria:
-
-- Is registered with neither `.times(<number>)` nor `.persist()`, and has not been invoked;
-- Is persistent (i.e., registered with `.persist()`) and has not been invoked;
-- Is registered with `.times(<number>)` and has not been invoked `<number>` of times.
-
-#### Example - Check that there are no pending interceptors
-
-```js
-const agent = new MockAgent()
-agent.disableNetConnect()
-
-agent
-  .get('https://example.com')
-  .intercept({ method: 'GET', path: '/' })
-  .reply(200)
-
-agent.assertNoPendingInterceptors()
-// Throws an UndiciError with the following message:
-//
-// 1 interceptor is pending:
-//
-// ┌─────────┬────────┬───────────────────────┬──────┬─────────────┬────────────┬─────────────┬───────────┐
-// │ (index) │ Method │        Origin         │ Path │ Status code │ Persistent │ Invocations │ Remaining │
-// ├─────────┼────────┼───────────────────────┼──────┼─────────────┼────────────┼─────────────┼───────────┤
-// │    0    │ 'GET'  │ 'https://example.com' │ '/'  │     200     │    '❌'    │      0      │     1     │
-// └─────────┴────────┴───────────────────────┴──────┴─────────────┴────────────┴─────────────┴───────────┘
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/MockClient.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/MockClient.md
deleted file mode 100644
index ac54691..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/MockClient.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# Class: MockClient
-
-Extends: `undici.Client`
-
-A mock client class that implements the same api as [MockPool](MockPool.md).
-
-## `new MockClient(origin, [options])`
-
-Arguments:
-
-* **origin** `string` - It should only include the **protocol, hostname, and port**.
-* **options** `MockClientOptions` - It extends the `Client` options.
-
-Returns: `MockClient`
-
-### Parameter: `MockClientOptions`
-
-Extends: `ClientOptions`
-
-* **agent** `Agent` - the agent to associate this MockClient with.
-
-### Example - Basic MockClient instantiation
-
-We can use MockAgent to instantiate a MockClient ready to be used to intercept specified requests. It will not do anything until registered as the agent to use and any mock request are registered.
-
-```js
-import { MockAgent } from 'undici'
-
-// Connections must be set to 1 to return a MockClient instance
-const mockAgent = new MockAgent({ connections: 1 })
-
-const mockClient = mockAgent.get('http://localhost:3000')
-```
-
-## Instance Methods
-
-### `MockClient.intercept(options)`
-
-Implements: [`MockPool.intercept(options)`](MockPool.md#mockpoolinterceptoptions)
-
-### `MockClient.close()`
-
-Implements: [`MockPool.close()`](MockPool.md#mockpoolclose)
-
-### `MockClient.dispatch(options, handlers)`
-
-Implements [`Dispatcher.dispatch(options, handlers)`](Dispatcher.md#dispatcherdispatchoptions-handler).
-
-### `MockClient.request(options[, callback])`
-
-See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback).
-
-#### Example - MockClient request
-
-```js
-import { MockAgent } from 'undici'
-
-const mockAgent = new MockAgent({ connections: 1 })
-
-const mockClient = mockAgent.get('http://localhost:3000')
-mockClient.intercept({ path: '/foo' }).reply(200, 'foo')
-
-const {
-  statusCode,
-  body
-} = await mockClient.request({
-  origin: 'http://localhost:3000',
-  path: '/foo',
-  method: 'GET'
-})
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/MockErrors.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/MockErrors.md
deleted file mode 100644
index c1aa3db..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/MockErrors.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# MockErrors
-
-Undici exposes a variety of mock error objects that you can use to enhance your mock error handling.
-You can find all the mock error objects inside the `mockErrors` key.
-
-```js
-import { mockErrors } from 'undici'
-```
-
-| Mock Error            | Mock Error Codes                | Description                                                |
-| --------------------- | ------------------------------- | ---------------------------------------------------------- |
-| `MockNotMatchedError` | `UND_MOCK_ERR_MOCK_NOT_MATCHED` | The request does not match any registered mock dispatches. |
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/MockPool.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/MockPool.md
deleted file mode 100644
index 96a986f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/MockPool.md
+++ /dev/null
@@ -1,547 +0,0 @@
-# Class: MockPool
-
-Extends: `undici.Pool`
-
-A mock Pool class that implements the Pool API and is used by MockAgent to intercept real requests and return mocked responses.
-
-## `new MockPool(origin, [options])`
-
-Arguments:
-
-* **origin** `string` - It should only include the **protocol, hostname, and port**.
-* **options** `MockPoolOptions` - It extends the `Pool` options.
-
-Returns: `MockPool`
-
-### Parameter: `MockPoolOptions`
-
-Extends: `PoolOptions`
-
-* **agent** `Agent` - the agent to associate this MockPool with.
-
-### Example - Basic MockPool instantiation
-
-We can use MockAgent to instantiate a MockPool ready to be used to intercept specified requests. It will not do anything until registered as the agent to use and any mock request are registered.
-
-```js
-import { MockAgent } from 'undici'
-
-const mockAgent = new MockAgent()
-
-const mockPool = mockAgent.get('http://localhost:3000')
-```
-
-## Instance Methods
-
-### `MockPool.intercept(options)`
-
-This method defines the interception rules for matching against requests for a MockPool or MockPool. We can intercept multiple times on a single instance, but each intercept is only used once. For example if you expect to make 2 requests inside a test, you need to call `intercept()` twice. Assuming you use `disableNetConnect()` you will get `MockNotMatchedError` on the second request when you only call `intercept()` once.
-
-When defining interception rules, all the rules must pass for a request to be intercepted. If a request is not intercepted, a real request will be attempted.
-
-| Matcher type | Condition to pass          |
-|:------------:| -------------------------- |
-| `string`     | Exact match against string |
-| `RegExp`     | Regex must pass            |
-| `Function`   | Function must return true  |
-
-Arguments:
-
-* **options** `MockPoolInterceptOptions` - Interception options.
-
-Returns: `MockInterceptor` corresponding to the input options.
-
-### Parameter: `MockPoolInterceptOptions`
-
-* **path** `string | RegExp | (path: string) => boolean` - a matcher for the HTTP request path. When a `RegExp` or callback is used, it will match against the request path including all query parameters in alphabetical order. When a `string` is provided, the query parameters can be conveniently specified through the `MockPoolInterceptOptions.query` setting.
-* **method** `string | RegExp | (method: string) => boolean` - (optional) - a matcher for the HTTP request method. Defaults to `GET`.
-* **body** `string | RegExp | (body: string) => boolean` - (optional) - a matcher for the HTTP request body.
-* **headers** `Record<string, string | RegExp | (body: string) => boolean`> - (optional) - a matcher for the HTTP request headers. To be intercepted, a request must match all defined headers. Extra headers not defined here may (or may not) be included in the request and do not affect the interception in any way.
-* **query** `Record<string, any> | null` - (optional) - a matcher for the HTTP request query string params. Only applies when a `string` was provided for `MockPoolInterceptOptions.path`.
-
-### Return: `MockInterceptor`
-
-We can define the behaviour of an intercepted request with the following options.
-
-* **reply** `(statusCode: number, replyData: string | Buffer | object | MockInterceptor.MockResponseDataHandler, responseOptions?: MockResponseOptions) => MockScope` - define a reply for a matching request. You can define the replyData as a callback to read incoming request data. Default for `responseOptions` is `{}`.
-* **reply** `(callback: MockInterceptor.MockReplyOptionsCallback) => MockScope` - define a reply for a matching request, allowing dynamic mocking of all reply options rather than just the data.
-* **replyWithError** `(error: Error) => MockScope` - define an error for a matching request to throw.
-* **defaultReplyHeaders** `(headers: Record<string, string>) => MockInterceptor` - define default headers to be included in subsequent replies. These are in addition to headers on a specific reply.
-* **defaultReplyTrailers** `(trailers: Record<string, string>) => MockInterceptor` - define default trailers to be included in subsequent replies. These are in addition to trailers on a specific reply.
-* **replyContentLength** `() => MockInterceptor` - define automatically calculated `content-length` headers to be included in subsequent replies.
-
-The reply data of an intercepted request may either be a string, buffer, or JavaScript object. Objects are converted to JSON while strings and buffers are sent as-is.
-
-By default, `reply` and `replyWithError` define the behaviour for the first matching request only. Subsequent requests will not be affected (this can be changed using the returned `MockScope`).
-
-### Parameter: `MockResponseOptions`
-
-* **headers** `Record<string, string>` - headers to be included on the mocked reply.
-* **trailers** `Record<string, string>` - trailers to be included on the mocked reply.
-
-### Return: `MockScope`
-
-A `MockScope` is associated with a single `MockInterceptor`. With this, we can configure the default behaviour of a intercepted reply.
-
-* **delay** `(waitInMs: number) => MockScope` - delay the associated reply by a set amount in ms.
-* **persist** `() => MockScope` - any matching request will always reply with the defined response indefinitely.
-* **times** `(repeatTimes: number) => MockScope` - any matching request will reply with the defined response a fixed amount of times. This is overridden by **persist**.
-
-#### Example - Basic Mocked Request
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-// MockPool
-const mockPool = mockAgent.get('http://localhost:3000')
-mockPool.intercept({ path: '/foo' }).reply(200, 'foo')
-
-const {
-  statusCode,
-  body
-} = await request('http://localhost:3000/foo')
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
-
-#### Example - Mocked request using reply data callbacks
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/echo',
-  method: 'GET',
-  headers: {
-    'User-Agent': 'undici',
-    Host: 'example.com'
-  }
-}).reply(200, ({ headers }) => ({ message: headers.get('message') }))
-
-const { statusCode, body, headers } = await request('http://localhost:3000', {
-  headers: {
-    message: 'hello world!'
-  }
-})
-
-console.log('response received', statusCode) // response received 200
-console.log('headers', headers) // { 'content-type': 'application/json' }
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // { "message":"hello world!" }
-}
-```
-
-#### Example - Mocked request using reply options callback
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/echo',
-  method: 'GET',
-  headers: {
-    'User-Agent': 'undici',
-    Host: 'example.com'
-  }
-}).reply(({ headers }) => ({ statusCode: 200, data: { message: headers.get('message') }})))
-
-const { statusCode, body, headers } = await request('http://localhost:3000', {
-  headers: {
-    message: 'hello world!'
-  }
-})
-
-console.log('response received', statusCode) // response received 200
-console.log('headers', headers) // { 'content-type': 'application/json' }
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // { "message":"hello world!" }
-}
-```
-
-#### Example - Basic Mocked requests with multiple intercepts
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/foo',
-  method: 'GET'
-}).reply(200, 'foo')
-
-mockPool.intercept({
-  path: '/hello',
-  method: 'GET',
-}).reply(200, 'hello')
-
-const result1 = await request('http://localhost:3000/foo')
-
-console.log('response received', result1.statusCode) // response received 200
-
-for await (const data of result1.body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-
-const result2 = await request('http://localhost:3000/hello')
-
-console.log('response received', result2.statusCode) // response received 200
-
-for await (const data of result2.body) {
-  console.log('data', data.toString('utf8')) // data hello
-}
-```
-
-#### Example - Mocked request with query body, request headers and response headers and trailers
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/foo?hello=there&see=ya',
-  method: 'POST',
-  body: 'form1=data1&form2=data2',
-  headers: {
-    'User-Agent': 'undici',
-    Host: 'example.com'
-  }
-}).reply(200, { foo: 'bar' }, {
-  headers: { 'content-type': 'application/json' },
-  trailers: { 'Content-MD5': 'test' }
-})
-
-const {
-  statusCode,
-  headers,
-  trailers,
-  body
-} = await request('http://localhost:3000/foo?hello=there&see=ya', {
-    method: 'POST',
-    body: 'form1=data1&form2=data2',
-    headers: {
-      foo: 'bar',
-      'User-Agent': 'undici',
-      Host: 'example.com'
-    }
-  })
-
-console.log('response received', statusCode) // response received 200
-console.log('headers', headers) // { 'content-type': 'application/json' }
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // '{"foo":"bar"}'
-}
-
-console.log('trailers', trailers) // { 'content-md5': 'test' }
-```
-
-#### Example - Mocked request using different matchers
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/foo',
-  method: /^GET$/,
-  body: (value) => value === 'form=data',
-  headers: {
-    'User-Agent': 'undici',
-    Host: /^example.com$/
-  }
-}).reply(200, 'foo')
-
-const {
-  statusCode,
-  body
-} = await request('http://localhost:3000/foo', {
-  method: 'GET',
-  body: 'form=data',
-  headers: {
-    foo: 'bar',
-    'User-Agent': 'undici',
-    Host: 'example.com'
-  }
-})
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
-
-#### Example - Mocked request with reply with a defined error
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/foo',
-  method: 'GET'
-}).replyWithError(new Error('kaboom'))
-
-try {
-  await request('http://localhost:3000/foo', {
-    method: 'GET'
-  })
-} catch (error) {
-  console.error(error) // Error: kaboom
-}
-```
-
-#### Example - Mocked request with defaultReplyHeaders
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/foo',
-  method: 'GET'
-}).defaultReplyHeaders({ foo: 'bar' })
-  .reply(200, 'foo')
-
-const { headers } = await request('http://localhost:3000/foo')
-
-console.log('headers', headers) // headers { foo: 'bar' }
-```
-
-#### Example - Mocked request with defaultReplyTrailers
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/foo',
-  method: 'GET'
-}).defaultReplyTrailers({ foo: 'bar' })
-  .reply(200, 'foo')
-
-const { trailers } = await request('http://localhost:3000/foo')
-
-console.log('trailers', trailers) // trailers { foo: 'bar' }
-```
-
-#### Example - Mocked request with automatic content-length calculation
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/foo',
-  method: 'GET'
-}).replyContentLength().reply(200, 'foo')
-
-const { headers } = await request('http://localhost:3000/foo')
-
-console.log('headers', headers) // headers { 'content-length': '3' }
-```
-
-#### Example - Mocked request with automatic content-length calculation on an object
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/foo',
-  method: 'GET'
-}).replyContentLength().reply(200, { foo: 'bar' })
-
-const { headers } = await request('http://localhost:3000/foo')
-
-console.log('headers', headers) // headers { 'content-length': '13' }
-```
-
-#### Example - Mocked request with persist enabled
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/foo',
-  method: 'GET'
-}).reply(200, 'foo').persist()
-
-const result1 = await request('http://localhost:3000/foo')
-// Will match and return mocked data
-
-const result2 = await request('http://localhost:3000/foo')
-// Will match and return mocked data
-
-// Etc
-```
-
-#### Example - Mocked request with times enabled
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-mockPool.intercept({
-  path: '/foo',
-  method: 'GET'
-}).reply(200, 'foo').times(2)
-
-const result1 = await request('http://localhost:3000/foo')
-// Will match and return mocked data
-
-const result2 = await request('http://localhost:3000/foo')
-// Will match and return mocked data
-
-const result3 = await request('http://localhost:3000/foo')
-// Will not match and make attempt a real request
-```
-
-#### Example - Mocked request with path callback
-
-```js
-import { MockAgent, setGlobalDispatcher, request } from 'undici'
-import querystring from 'querystring'
-
-const mockAgent = new MockAgent()
-setGlobalDispatcher(mockAgent)
-
-const mockPool = mockAgent.get('http://localhost:3000')
-
-const matchPath = requestPath => {
-  const [pathname, search] = requestPath.split('?')
-  const requestQuery = querystring.parse(search)
-
-  if (!pathname.startsWith('/foo')) {
-    return false
-  }
-
-  if (!Object.keys(requestQuery).includes('foo') || requestQuery.foo !== 'bar') {
-    return false
-  }
-
-  return true
-}
-
-mockPool.intercept({
-  path: matchPath,
-  method: 'GET'
-}).reply(200, 'foo')
-
-const result = await request('http://localhost:3000/foo?foo=bar')
-// Will match and return mocked data
-```
-
-### `MockPool.close()`
-
-Closes the mock pool and de-registers from associated MockAgent.
-
-Returns: `Promise<void>`
-
-#### Example - clean up after tests are complete
-
-```js
-import { MockAgent } from 'undici'
-
-const mockAgent = new MockAgent()
-const mockPool = mockAgent.get('http://localhost:3000')
-
-await mockPool.close()
-```
-
-### `MockPool.dispatch(options, handlers)`
-
-Implements [`Dispatcher.dispatch(options, handlers)`](Dispatcher.md#dispatcherdispatchoptions-handler).
-
-### `MockPool.request(options[, callback])`
-
-See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback).
-
-#### Example - MockPool request
-
-```js
-import { MockAgent } from 'undici'
-
-const mockAgent = new MockAgent()
-
-const mockPool = mockAgent.get('http://localhost:3000')
-mockPool.intercept({
-  path: '/foo',
-  method: 'GET',
-}).reply(200, 'foo')
-
-const {
-  statusCode,
-  body
-} = await mockPool.request({
-  origin: 'http://localhost:3000',
-  path: '/foo',
-  method: 'GET'
-})
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Pool.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Pool.md
deleted file mode 100644
index 8fcabac..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/Pool.md
+++ /dev/null
@@ -1,84 +0,0 @@
-# Class: Pool
-
-Extends: `undici.Dispatcher`
-
-A pool of [Client](Client.md) instances connected to the same upstream target.
-
-Requests are not guaranteed to be dispatched in order of invocation.
-
-## `new Pool(url[, options])`
-
-Arguments:
-
-* **url** `URL | string` - It should only include the **protocol, hostname, and port**.
-* **options** `PoolOptions` (optional)
-
-### Parameter: `PoolOptions`
-
-Extends: [`ClientOptions`](Client.md#parameter-clientoptions)
-
-* **factory** `(origin: URL, opts: Object) => Dispatcher` - Default: `(origin, opts) => new Client(origin, opts)`
-* **connections** `number | null` (optional) - Default: `null` - The number of `Client` instances to create. When set to `null`, the `Pool` instance will create an unlimited amount of `Client` instances.
-* **interceptors** `{ Pool: DispatchInterceptor[] } }` - Default: `{ Pool: [] }` - A list of interceptors that are applied to the dispatch method. Additional logic can be applied (such as, but not limited to: 302 status code handling, authentication, cookies, compression and caching).
-
-## Instance Properties
-
-### `Pool.closed`
-
-Implements [Client.closed](Client.md#clientclosed)
-
-### `Pool.destroyed`
-
-Implements [Client.destroyed](Client.md#clientdestroyed)
-
-### `Pool.stats`
-
-Returns [`PoolStats`](PoolStats.md) instance for this pool.
-
-## Instance Methods
-
-### `Pool.close([callback])`
-
-Implements [`Dispatcher.close([callback])`](Dispatcher.md#dispatcherclosecallback-promise).
-
-### `Pool.destroy([error, callback])`
-
-Implements [`Dispatcher.destroy([error, callback])`](Dispatcher.md#dispatcherdestroyerror-callback-promise).
-
-### `Pool.connect(options[, callback])`
-
-See [`Dispatcher.connect(options[, callback])`](Dispatcher.md#dispatcherconnectoptions-callback).
-
-### `Pool.dispatch(options, handler)`
-
-Implements [`Dispatcher.dispatch(options, handler)`](Dispatcher.md#dispatcherdispatchoptions-handler).
-
-### `Pool.pipeline(options, handler)`
-
-See [`Dispatcher.pipeline(options, handler)`](Dispatcher.md#dispatcherpipelineoptions-handler).
-
-### `Pool.request(options[, callback])`
-
-See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback).
-
-### `Pool.stream(options, factory[, callback])`
-
-See [`Dispatcher.stream(options, factory[, callback])`](Dispatcher.md#dispatcherstreamoptions-factory-callback).
-
-### `Pool.upgrade(options[, callback])`
-
-See [`Dispatcher.upgrade(options[, callback])`](Dispatcher.md#dispatcherupgradeoptions-callback).
-
-## Instance Events
-
-### Event: `'connect'`
-
-See [Dispatcher Event: `'connect'`](Dispatcher.md#event-connect).
-
-### Event: `'disconnect'`
-
-See [Dispatcher Event: `'disconnect'`](Dispatcher.md#event-disconnect).
-
-### Event: `'drain'`
-
-See [Dispatcher Event: `'drain'`](Dispatcher.md#event-drain).
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/PoolStats.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/PoolStats.md
deleted file mode 100644
index 16b6dc2..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/PoolStats.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Class: PoolStats
-
-Aggregate stats for a [Pool](Pool.md) or [BalancedPool](BalancedPool.md).
-
-## `new PoolStats(pool)`
-
-Arguments:
-
-* **pool** `Pool` - Pool or BalancedPool from which to return stats.
-
-## Instance Properties
-
-### `PoolStats.connected`
-
-Number of open socket connections in this pool.
-
-### `PoolStats.free`
-
-Number of open socket connections in this pool that do not have an active request.
-
-### `PoolStats.pending`
-
-Number of pending requests across all clients in this pool.
-
-### `PoolStats.queued`
-
-Number of queued requests across all clients in this pool.
-
-### `PoolStats.running`
-
-Number of currently active requests across all clients in this pool.
-
-### `PoolStats.size`
-
-Number of active, pending, or queued requests across all clients in this pool.
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/ProxyAgent.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/ProxyAgent.md
deleted file mode 100644
index cebfe68..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/ProxyAgent.md
+++ /dev/null
@@ -1,126 +0,0 @@
-# Class: ProxyAgent
-
-Extends: `undici.Dispatcher`
-
-A Proxy Agent class that implements the Agent API. It allows the connection through proxy in a simple way.
-
-## `new ProxyAgent([options])`
-
-Arguments:
-
-* **options** `ProxyAgentOptions` (required) - It extends the `Agent` options.
-
-Returns: `ProxyAgent`
-
-### Parameter: `ProxyAgentOptions`
-
-Extends: [`AgentOptions`](Agent.md#parameter-agentoptions)
-
-* **uri** `string` (required) - It can be passed either by a string or a object containing `uri` as string.
-* **token** `string` (optional) - It can be passed by a string of token for authentication.
-* **auth** `string` (**deprecated**) - Use token.
-* **clientFactory** `(origin: URL, opts: Object) => Dispatcher` (optional) - Default: `(origin, opts) => new Pool(origin, opts)`
-* **requestTls** `BuildOptions` (optional) - Options object passed when creating the underlying socket via the connector builder for the request. See [TLS](https://nodejs.org/api/tls.html#tlsconnectoptions-callback).
-* **proxyTls** `BuildOptions` (optional) - Options object passed when creating the underlying socket via the connector builder for the proxy server. See [TLS](https://nodejs.org/api/tls.html#tlsconnectoptions-callback).
-
-Examples:
-
-```js
-import { ProxyAgent } from 'undici'
-
-const proxyAgent = new ProxyAgent('my.proxy.server')
-// or
-const proxyAgent = new ProxyAgent({ uri: 'my.proxy.server' })
-```
-
-#### Example - Basic ProxyAgent instantiation
-
-This will instantiate the ProxyAgent. It will not do anything until registered as the agent to use with requests.
-
-```js
-import { ProxyAgent } from 'undici'
-
-const proxyAgent = new ProxyAgent('my.proxy.server')
-```
-
-#### Example - Basic Proxy Request with global agent dispatcher
-
-```js
-import { setGlobalDispatcher, request, ProxyAgent } from 'undici'
-
-const proxyAgent = new ProxyAgent('my.proxy.server')
-setGlobalDispatcher(proxyAgent)
-
-const { statusCode, body } = await request('http://localhost:3000/foo')
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
-
-#### Example - Basic Proxy Request with local agent dispatcher
-
-```js
-import { ProxyAgent, request } from 'undici'
-
-const proxyAgent = new ProxyAgent('my.proxy.server')
-
-const {
-  statusCode,
-  body
-} = await request('http://localhost:3000/foo', { dispatcher: proxyAgent })
-
-console.log('response received', statusCode) // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')) // data foo
-}
-```
-
-#### Example - Basic Proxy Request with authentication
-
-```js
-import { setGlobalDispatcher, request, ProxyAgent } from 'undici';
-
-const proxyAgent = new ProxyAgent({
-  uri: 'my.proxy.server',
-  // token: 'Bearer xxxx'
-  token: `Basic ${Buffer.from('username:password').toString('base64')}`
-});
-setGlobalDispatcher(proxyAgent);
-
-const { statusCode, body } = await request('http://localhost:3000/foo');
-
-console.log('response received', statusCode); // response received 200
-
-for await (const data of body) {
-  console.log('data', data.toString('utf8')); // data foo
-}
-```
-
-### `ProxyAgent.close()`
-
-Closes the proxy agent and waits for registered pools and clients to also close before resolving.
-
-Returns: `Promise<void>`
-
-#### Example - clean up after tests are complete
-
-```js
-import { ProxyAgent, setGlobalDispatcher } from 'undici'
-
-const proxyAgent = new ProxyAgent('my.proxy.server')
-setGlobalDispatcher(proxyAgent)
-
-await proxyAgent.close()
-```
-
-### `ProxyAgent.dispatch(options, handlers)`
-
-Implements [`Agent.dispatch(options, handlers)`](Agent.md#parameter-agentdispatchoptions).
-
-### `ProxyAgent.request(options[, callback])`
-
-See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback).
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/RetryHandler.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/RetryHandler.md
deleted file mode 100644
index 2323ce4..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/RetryHandler.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# Class: RetryHandler
-
-Extends: `undici.DispatcherHandlers`
-
-A handler class that implements the retry logic for a request.
-
-## `new RetryHandler(dispatchOptions, retryHandlers, [retryOptions])`
-
-Arguments:
-
-- **options** `Dispatch.DispatchOptions & RetryOptions` (required) - It is an intersection of `Dispatcher.DispatchOptions` and `RetryOptions`.
-- **retryHandlers** `RetryHandlers` (required) - Object containing the `dispatch` to be used on every retry, and `handler` for handling the `dispatch` lifecycle.
-
-Returns: `retryHandler`
-
-### Parameter: `Dispatch.DispatchOptions & RetryOptions`
-
-Extends: [`Dispatch.DispatchOptions`](Dispatcher.md#parameter-dispatchoptions).
-
-#### `RetryOptions`
-
-- **retry** `(err: Error, context: RetryContext, callback: (err?: Error | null) => void) => void` (optional) - Function to be called after every retry. It should pass error if no more retries should be performed.
-- **maxRetries** `number` (optional) - Maximum number of retries. Default: `5`
-- **maxTimeout** `number` (optional) - Maximum number of milliseconds to wait before retrying. Default: `30000` (30 seconds)
-- **minTimeout** `number` (optional) - Minimum number of milliseconds to wait before retrying. Default: `500` (half a second)
-- **timeoutFactor** `number` (optional) - Factor to multiply the timeout by for each retry attempt. Default: `2`
-- **retryAfter** `boolean` (optional) - It enables automatic retry after the `Retry-After` header is received. Default: `true`
--
-- **methods** `string[]` (optional) - Array of HTTP methods to retry. Default: `['GET', 'PUT', 'HEAD', 'OPTIONS', 'DELETE']`
-- **statusCodes** `number[]` (optional) - Array of HTTP status codes to retry. Default: `[429, 500, 502, 503, 504]`
-- **errorCodes** `string[]` (optional) - Array of Error codes to retry. Default: `['ECONNRESET', 'ECONNREFUSED', 'ENOTFOUND', 'ENETDOWN','ENETUNREACH', 'EHOSTDOWN',
-
-**`RetryContext`**
-
-- `state`: `RetryState` - Current retry state. It can be mutated.
-- `opts`: `Dispatch.DispatchOptions & RetryOptions` - Options passed to the retry handler.
-
-### Parameter `RetryHandlers`
-
-- **dispatch** `(options: Dispatch.DispatchOptions, handlers: Dispatch.DispatchHandlers) => Promise<Dispatch.DispatchResponse>` (required) - Dispatch function to be called after every retry.
-- **handler** Extends [`Dispatch.DispatchHandlers`](Dispatcher.md#dispatcherdispatchoptions-handler) (required) - Handler function to be called after the request is successful or the retries are exhausted.
-
-Examples:
-
-```js
-const client = new Client(`http://localhost:${server.address().port}`);
-const chunks = [];
-const handler = new RetryHandler(
-  {
-    ...dispatchOptions,
-    retryOptions: {
-      // custom retry function
-      retry: function (err, state, callback) {
-        counter++;
-
-        if (err.code && err.code === "UND_ERR_DESTROYED") {
-          callback(err);
-          return;
-        }
-
-        if (err.statusCode === 206) {
-          callback(err);
-          return;
-        }
-
-        setTimeout(() => callback(null), 1000);
-      },
-    },
-  },
-  {
-    dispatch: (...args) => {
-      return client.dispatch(...args);
-    },
-    handler: {
-      onConnect() {},
-      onBodySent() {},
-      onHeaders(status, _rawHeaders, resume, _statusMessage) {
-        // do something with headers
-      },
-      onData(chunk) {
-        chunks.push(chunk);
-        return true;
-      },
-      onComplete() {},
-      onError() {
-        // handle error properly
-      },
-    },
-  }
-);
-```
-
-#### Example - Basic RetryHandler with defaults
-
-```js
-const client = new Client(`http://localhost:${server.address().port}`);
-const handler = new RetryHandler(dispatchOptions, {
-  dispatch: client.dispatch.bind(client),
-  handler: {
-    onConnect() {},
-    onBodySent() {},
-    onHeaders(status, _rawHeaders, resume, _statusMessage) {},
-    onData(chunk) {},
-    onComplete() {},
-    onError(err) {},
-  },
-});
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/WebSocket.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/WebSocket.md
deleted file mode 100644
index 9d374f4..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/WebSocket.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# Class: WebSocket
-
-> ⚠️ Warning: the WebSocket API is experimental.
-
-Extends: [`EventTarget`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget)
-
-The WebSocket object provides a way to manage a WebSocket connection to a server, allowing bidirectional communication. The API follows the [WebSocket spec](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) and [RFC 6455](https://datatracker.ietf.org/doc/html/rfc6455).
-
-## `new WebSocket(url[, protocol])`
-
-Arguments:
-
-* **url** `URL | string` - The url's protocol *must* be `ws` or `wss`.
-* **protocol** `string | string[] | WebSocketInit` (optional) - Subprotocol(s) to request the server use, or a [`Dispatcher`](./Dispatcher.md).
-
-### Example:
-
-This example will not work in browsers or other platforms that don't allow passing an object.
-
-```mjs
-import { WebSocket, ProxyAgent } from 'undici'
-
-const proxyAgent = new ProxyAgent('my.proxy.server')
-
-const ws = new WebSocket('wss://echo.websocket.events', {
-  dispatcher: proxyAgent,
-  protocols: ['echo', 'chat']
-})
-```
-
-If you do not need a custom Dispatcher, it's recommended to use the following pattern:
-
-```mjs
-import { WebSocket } from 'undici'
-
-const ws = new WebSocket('wss://echo.websocket.events', ['echo', 'chat'])
-```
-
-## Read More
-
-- [MDN - WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket)
-- [The WebSocket Specification](https://www.rfc-editor.org/rfc/rfc6455)
-- [The WHATWG WebSocket Specification](https://websockets.spec.whatwg.org/)
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/api-lifecycle.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/api-lifecycle.md
deleted file mode 100644
index d158126..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/api/api-lifecycle.md
+++ /dev/null
@@ -1,62 +0,0 @@
-# Client Lifecycle
-
-An Undici [Client](Client.md) can be best described as a state machine. The following list is a summary of the various state transitions the `Client` will go through in its lifecycle. This document also contains detailed breakdowns of each state.
-
-> This diagram is not a perfect representation of the undici Client. Since the Client class is not actually implemented as a state-machine, actual execution may deviate slightly from what is described below. Consider this as a general resource for understanding the inner workings of the Undici client rather than some kind of formal specification.
-
-## State Transition Overview
-
-* A `Client` begins in the **idle** state with no socket connection and no requests in queue.
-  * The *connect* event transitions the `Client` to the **pending** state where requests can be queued prior to processing.
-  * The *close* and *destroy* events transition the `Client` to the **destroyed** state. Since there are no requests in the queue, the *close* event immediately transitions to the **destroyed** state.
-* The **pending** state indicates the underlying socket connection has been successfully established and requests are queueing.
-  * The *process* event transitions the `Client` to the **processing** state where requests are processed.
-  * If requests are queued, the *close* event transitions to the **processing** state; otherwise, it transitions to the **destroyed** state.
-  * The *destroy* event transitions to the **destroyed** state.
-* The **processing** state initializes to the **processing.running** state.
-  * If the current request requires draining, the *needDrain* event transitions the `Client` into the **processing.busy** state which will return to the **processing.running** state with the *drainComplete* event.
-  * After all queued requests are completed, the *keepalive* event transitions the `Client` back to the **pending** state. If no requests are queued during the timeout, the **close** event transitions the `Client` to the **destroyed** state.
-  * If the *close* event is fired while the `Client` still has queued requests, the `Client` transitions to the **process.closing** state where it will complete all existing requests before firing the *done* event.
-  * The *done* event gracefully transitions the `Client` to the **destroyed** state.
-  * At any point in time, the *destroy* event will transition the `Client` from the **processing** state to the **destroyed** state, destroying any queued requests.
-* The **destroyed** state is a final state and the `Client` is no longer functional.
-
-![A state diagram representing an Undici Client instance](../assets/lifecycle-diagram.png)
-
-> The diagram was generated using Mermaid.js Live Editor. Modify the state diagram [here](https://mermaid-js.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic3RhdGVEaWFncmFtLXYyXG4gICAgWypdIC0tPiBpZGxlXG4gICAgaWRsZSAtLT4gcGVuZGluZyA6IGNvbm5lY3RcbiAgICBpZGxlIC0tPiBkZXN0cm95ZWQgOiBkZXN0cm95L2Nsb3NlXG4gICAgXG4gICAgcGVuZGluZyAtLT4gaWRsZSA6IHRpbWVvdXRcbiAgICBwZW5kaW5nIC0tPiBkZXN0cm95ZWQgOiBkZXN0cm95XG5cbiAgICBzdGF0ZSBjbG9zZV9mb3JrIDw8Zm9yaz4-XG4gICAgcGVuZGluZyAtLT4gY2xvc2VfZm9yayA6IGNsb3NlXG4gICAgY2xvc2VfZm9yayAtLT4gcHJvY2Vzc2luZ1xuICAgIGNsb3NlX2ZvcmsgLS0-IGRlc3Ryb3llZFxuXG4gICAgcGVuZGluZyAtLT4gcHJvY2Vzc2luZyA6IHByb2Nlc3NcblxuICAgIHByb2Nlc3NpbmcgLS0-IHBlbmRpbmcgOiBrZWVwYWxpdmVcbiAgICBwcm9jZXNzaW5nIC0tPiBkZXN0cm95ZWQgOiBkb25lXG4gICAgcHJvY2Vzc2luZyAtLT4gZGVzdHJveWVkIDogZGVzdHJveVxuXG4gICAgc3RhdGUgcHJvY2Vzc2luZyB7XG4gICAgICAgIHJ1bm5pbmcgLS0-IGJ1c3kgOiBuZWVkRHJhaW5cbiAgICAgICAgYnVzeSAtLT4gcnVubmluZyA6IGRyYWluQ29tcGxldGVcbiAgICAgICAgcnVubmluZyAtLT4gWypdIDoga2VlcGFsaXZlXG4gICAgICAgIHJ1bm5pbmcgLS0-IGNsb3NpbmcgOiBjbG9zZVxuICAgICAgICBjbG9zaW5nIC0tPiBbKl0gOiBkb25lXG4gICAgICAgIFsqXSAtLT4gcnVubmluZ1xuICAgIH1cbiAgICAiLCJtZXJtYWlkIjp7InRoZW1lIjoiYmFzZSJ9LCJ1cGRhdGVFZGl0b3IiOmZhbHNlfQ)
-
-## State details
-
-### idle
-
-The **idle** state is the initial state of a `Client` instance. While an `origin` is required for instantiating a `Client` instance, the underlying socket connection will not be established until a request is queued using [`Client.dispatch()`](Client.md#clientdispatchoptions-handlers). By calling `Client.dispatch()` directly or using one of the multiple implementations ([`Client.connect()`](Client.md#clientconnectoptions-callback), [`Client.pipeline()`](Client.md#clientpipelineoptions-handler), [`Client.request()`](Client.md#clientrequestoptions-callback), [`Client.stream()`](Client.md#clientstreamoptions-factory-callback), and [`Client.upgrade()`](Client.md#clientupgradeoptions-callback)), the `Client` instance will transition from **idle** to [**pending**](#pending) and then most likely directly to [**processing**](#processing).
-
-Calling [`Client.close()`](Client.md#clientclosecallback) or [`Client.destroy()`](Client.md#clientdestroyerror-callback) transitions directly to the [**destroyed**](#destroyed) state since the `Client` instance will have no queued requests in this state.
-
-### pending
-
-The **pending** state signifies a non-processing `Client`. Upon entering this state, the `Client` establishes a socket connection and emits the [`'connect'`](Client.md#event-connect) event signalling a connection was successfully established with the `origin` provided during `Client` instantiation. The internal queue is initially empty, and requests can start queueing.
-
-Calling [`Client.close()`](Client.md#clientclosecallback) with queued requests, transitions the `Client` to the [**processing**](#processing) state. Without queued requests, it transitions to the [**destroyed**](#destroyed) state.
-
-Calling [`Client.destroy()`](Client.md#clientdestroyerror-callback) transitions directly to the [**destroyed**](#destroyed) state regardless of existing requests.
-
-### processing
-
-The **processing** state is a state machine within itself. It initializes to the [**processing.running**](#running) state. The [`Client.dispatch()`](Client.md#clientdispatchoptions-handlers), [`Client.close()`](Client.md#clientclosecallback), and [`Client.destroy()`](Client.md#clientdestroyerror-callback) can be called at any time while the `Client` is in this state. `Client.dispatch()` will add more requests to the queue while existing requests continue to be processed. `Client.close()` will transition to the [**processing.closing**](#closing) state. And `Client.destroy()` will transition to [**destroyed**](#destroyed).
-
-#### running
-
-In the **processing.running** sub-state, queued requests are being processed in a FIFO order. If a request body requires draining, the *needDrain* event transitions to the [**processing.busy**](#busy) sub-state. The *close* event transitions the Client to the [**process.closing**](#closing) sub-state. If all queued requests are processed and neither [`Client.close()`](Client.md#clientclosecallback) nor [`Client.destroy()`](Client.md#clientdestroyerror-callback) are called, then the [**processing**](#processing) machine will trigger a *keepalive* event transitioning the `Client` back to the [**pending**](#pending) state. During this time, the `Client` is waiting for the socket connection to timeout, and once it does, it triggers the *timeout* event and transitions to the [**idle**](#idle) state.
-
-#### busy
-
-This sub-state is only entered when a request body is an instance of [Stream](https://nodejs.org/api/stream.html) and requires draining. The `Client` cannot process additional requests while in this state and must wait until the currently processing request body is completely drained before transitioning back to [**processing.running**](#running).
-
-#### closing
-
-This sub-state is only entered when a `Client` instance has queued requests and the [`Client.close()`](Client.md#clientclosecallback) method is called. In this state, the `Client` instance continues to process requests as usual, with the one exception that no additional requests can be queued. Once all of the queued requests are processed, the `Client` will trigger the *done* event gracefully entering the [**destroyed**](#destroyed) state without an error.
-
-### destroyed
-
-The **destroyed** state is a final state for the `Client` instance. Once in this state, a `Client` is nonfunctional. Calling any other `Client` methods will result in an `ClientDestroyedError`.
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/assets/lifecycle-diagram.png b/actions/bcr-pr-review-notifier/node_modules/undici/docs/assets/lifecycle-diagram.png
deleted file mode 100644
index 4ef17b5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/assets/lifecycle-diagram.png
+++ /dev/null
Binary files differ
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/best-practices/client-certificate.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/best-practices/client-certificate.md
deleted file mode 100644
index 4fc84ec..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/best-practices/client-certificate.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# Client certificate
-
-Client certificate authentication can be configured with the `Client`, the required options are passed along through the `connect` option.
-
-The client certificates must be signed by a trusted CA. The Node.js default is to trust the well-known CAs curated by Mozilla.
-
-Setting the server option `requestCert: true` tells the server to request the client certificate.
-
-The server option `rejectUnauthorized: false` allows us to handle any invalid certificate errors in client code. The `authorized` property on the socket of the incoming request will show if the client certificate was valid. The `authorizationError` property will give the reason if the certificate was not valid.
-
-### Client Certificate Authentication
-
-```js
-const { readFileSync } = require('fs')
-const { join } = require('path')
-const { createServer } = require('https')
-const { Client } = require('undici')
-
-const serverOptions = {
-  ca: [
-    readFileSync(join(__dirname, 'client-ca-crt.pem'), 'utf8')
-  ],
-  key: readFileSync(join(__dirname, 'server-key.pem'), 'utf8'),
-  cert: readFileSync(join(__dirname, 'server-crt.pem'), 'utf8'),
-  requestCert: true,
-  rejectUnauthorized: false
-}
-
-const server = createServer(serverOptions, (req, res) => {
-  // true if client cert is valid
-  if(req.client.authorized === true) {
-    console.log('valid')
-  } else {
-    console.error(req.client.authorizationError)
-  }
-  res.end()
-})
-
-server.listen(0, function () {
-  const tls = {
-    ca: [
-      readFileSync(join(__dirname, 'server-ca-crt.pem'), 'utf8')
-    ],
-    key: readFileSync(join(__dirname, 'client-key.pem'), 'utf8'),
-    cert: readFileSync(join(__dirname, 'client-crt.pem'), 'utf8'),
-    rejectUnauthorized: false,
-    servername: 'agent1'
-  }
-  const client = new Client(`https://localhost:${server.address().port}`, {
-    connect: tls
-  })
-
-  client.request({
-    path: '/',
-    method: 'GET'
-  }, (err, { body }) => {
-    body.on('data', (buf) => {})
-    body.on('end', () => {
-      client.close()
-      server.close()
-    })
-  })
-})
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/best-practices/mocking-request.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/best-practices/mocking-request.md
deleted file mode 100644
index 6954392..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/best-practices/mocking-request.md
+++ /dev/null
@@ -1,136 +0,0 @@
-# Mocking Request
-
-Undici has its own mocking [utility](../api/MockAgent.md). It allow us to intercept undici HTTP requests and return mocked values instead. It can be useful for testing purposes.
-
-Example:
-
-```js
-// bank.mjs
-import { request } from 'undici'
-
-export async function bankTransfer(recipient, amount) {
-  const { body } = await request('http://localhost:3000/bank-transfer',
-    {
-      method: 'POST',
-      headers: {
-        'X-TOKEN-SECRET': 'SuperSecretToken',
-      },
-      body: JSON.stringify({
-        recipient,
-        amount
-      })
-    }
-  )
-  return await body.json()
-}
-```
-
-And this is what the test file looks like:
-
-```js
-// index.test.mjs
-import { strict as assert } from 'assert'
-import { MockAgent, setGlobalDispatcher, } from 'undici'
-import { bankTransfer } from './bank.mjs'
-
-const mockAgent = new MockAgent();
-
-setGlobalDispatcher(mockAgent);
-
-// Provide the base url to the request
-const mockPool = mockAgent.get('http://localhost:3000');
-
-// intercept the request
-mockPool.intercept({
-  path: '/bank-transfer',
-  method: 'POST',
-  headers: {
-    'X-TOKEN-SECRET': 'SuperSecretToken',
-  },
-  body: JSON.stringify({
-    recipient: '1234567890',
-    amount: '100'
-  })
-}).reply(200, {
-  message: 'transaction processed'
-})
-
-const success = await bankTransfer('1234567890', '100')
-
-assert.deepEqual(success, { message: 'transaction processed' })
-
-// if you dont want to check whether the body or the headers contain the same value
-// just remove it from interceptor
-mockPool.intercept({
-  path: '/bank-transfer',
-  method: 'POST',
-}).reply(400, {
-  message: 'bank account not found'
-})
-
-const badRequest = await bankTransfer('1234567890', '100')
-
-assert.deepEqual(badRequest, { message: 'bank account not found' })
-```
-
-Explore other MockAgent functionality [here](../api/MockAgent.md)
-
-## Debug Mock Value
-
-When the interceptor and the request options are not the same, undici will automatically make a real HTTP request. To prevent real requests from being made, use `mockAgent.disableNetConnect()`:
-
-```js
-const mockAgent = new MockAgent();
-
-setGlobalDispatcher(mockAgent);
-mockAgent.disableNetConnect()
-
-// Provide the base url to the request
-const mockPool = mockAgent.get('http://localhost:3000');
-
-mockPool.intercept({
-  path: '/bank-transfer',
-  method: 'POST',
-}).reply(200, {
-  message: 'transaction processed'
-})
-
-const badRequest = await bankTransfer('1234567890', '100')
-// Will throw an error
-// MockNotMatchedError: Mock dispatch not matched for path '/bank-transfer':
-// subsequent request to origin http://localhost:3000 was not allowed (net.connect disabled)
-```
-
-## Reply with data based on request
-
-If the mocked response needs to be dynamically derived from the request parameters, you can provide a function instead of an object to `reply`:
-
-```js
-mockPool.intercept({
-  path: '/bank-transfer',
-  method: 'POST',
-  headers: {
-    'X-TOKEN-SECRET': 'SuperSecretToken',
-  },
-  body: JSON.stringify({
-    recipient: '1234567890',
-    amount: '100'
-  })
-}).reply(200, (opts) => {
-  // do something with opts
-
-  return { message: 'transaction processed' }
-})
-```
-
-in this case opts will be
-
-```
-{
-  method: 'POST',
-  headers: { 'X-TOKEN-SECRET': 'SuperSecretToken' },
-  body: '{"recipient":"1234567890","amount":"100"}',
-  origin: 'http://localhost:3000',
-  path: '/bank-transfer'
-}
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/best-practices/proxy.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/best-practices/proxy.md
deleted file mode 100644
index bf10295..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/best-practices/proxy.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# Connecting through a proxy
-
-Connecting through a proxy is possible by:
-
-- Using [AgentProxy](../api/ProxyAgent.md).
-- Configuring `Client` or `Pool` constructor.
-
-The proxy url should be passed to the `Client` or `Pool` constructor, while the upstream server url
-should be added to every request call in the `path`.
-For instance, if you need to send a request to the `/hello` route of your upstream server,
-the `path` should be `path: 'http://upstream.server:port/hello?foo=bar'`.
-
-If you proxy requires basic authentication, you can send it via the `proxy-authorization` header.
-
-### Connect without authentication
-
-```js
-import { Client } from 'undici'
-import { createServer } from 'http'
-import proxy from 'proxy'
-
-const server = await buildServer()
-const proxyServer = await buildProxy()
-
-const serverUrl = `http://localhost:${server.address().port}`
-const proxyUrl = `http://localhost:${proxyServer.address().port}`
-
-server.on('request', (req, res) => {
-  console.log(req.url) // '/hello?foo=bar'
-  res.setHeader('content-type', 'application/json')
-  res.end(JSON.stringify({ hello: 'world' }))
-})
-
-const client = new Client(proxyUrl)
-
-const response = await client.request({
-  method: 'GET',
-  path: serverUrl + '/hello?foo=bar'
-})
-
-response.body.setEncoding('utf8')
-let data = ''
-for await (const chunk of response.body) {
-  data += chunk
-}
-console.log(response.statusCode) // 200
-console.log(JSON.parse(data)) // { hello: 'world' }
-
-server.close()
-proxyServer.close()
-client.close()
-
-function buildServer () {
-  return new Promise((resolve, reject) => {
-    const server = createServer()
-    server.listen(0, () => resolve(server))
-  })
-}
-
-function buildProxy () {
-  return new Promise((resolve, reject) => {
-    const server = proxy(createServer())
-    server.listen(0, () => resolve(server))
-  })
-}
-```
-
-### Connect with authentication
-
-```js
-import { Client } from 'undici'
-import { createServer } from 'http'
-import proxy from 'proxy'
-
-const server = await buildServer()
-const proxyServer = await buildProxy()
-
-const serverUrl = `http://localhost:${server.address().port}`
-const proxyUrl = `http://localhost:${proxyServer.address().port}`
-
-proxyServer.authenticate = function (req, fn) {
-  fn(null, req.headers['proxy-authorization'] === `Basic ${Buffer.from('user:pass').toString('base64')}`)
-}
-
-server.on('request', (req, res) => {
-  console.log(req.url) // '/hello?foo=bar'
-  res.setHeader('content-type', 'application/json')
-  res.end(JSON.stringify({ hello: 'world' }))
-})
-
-const client = new Client(proxyUrl)
-
-const response = await client.request({
-  method: 'GET',
-  path: serverUrl + '/hello?foo=bar',
-  headers: {
-    'proxy-authorization': `Basic ${Buffer.from('user:pass').toString('base64')}`
-  }
-})
-
-response.body.setEncoding('utf8')
-let data = ''
-for await (const chunk of response.body) {
-  data += chunk
-}
-console.log(response.statusCode) // 200
-console.log(JSON.parse(data)) // { hello: 'world' }
-
-server.close()
-proxyServer.close()
-client.close()
-
-function buildServer () {
-  return new Promise((resolve, reject) => {
-    const server = createServer()
-    server.listen(0, () => resolve(server))
-  })
-}
-
-function buildProxy () {
-  return new Promise((resolve, reject) => {
-    const server = proxy(createServer())
-    server.listen(0, () => resolve(server))
-  })
-}
-```
-
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/docs/best-practices/writing-tests.md b/actions/bcr-pr-review-notifier/node_modules/undici/docs/best-practices/writing-tests.md
deleted file mode 100644
index 57549de..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/docs/best-practices/writing-tests.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Writing tests
-
-Undici is tuned for a production use case and its default will keep
-a socket open for a few seconds after an HTTP request is completed to
-remove the overhead of opening up a new socket. These settings that makes
-Undici shine in production are not a good fit for using Undici in automated
-tests, as it will result in longer execution times.
-
-The following are good defaults that will keep the socket open for only 10ms:
-
-```js
-import { request, setGlobalDispatcher, Agent } from 'undici'
-
-const agent = new Agent({
-  keepAliveTimeout: 10, // milliseconds
-  keepAliveMaxTimeout: 10 // milliseconds
-})
-
-setGlobalDispatcher(agent)
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/index-fetch.js b/actions/bcr-pr-review-notifier/node_modules/undici/index-fetch.js
deleted file mode 100644
index ba31a65..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/index-fetch.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict'
-
-const fetchImpl = require('./lib/fetch').fetch
-
-module.exports.fetch = function fetch (resource, init = undefined) {
-  return fetchImpl(resource, init).catch((err) => {
-    Error.captureStackTrace(err, this)
-    throw err
-  })
-}
-module.exports.FormData = require('./lib/fetch/formdata').FormData
-module.exports.Headers = require('./lib/fetch/headers').Headers
-module.exports.Response = require('./lib/fetch/response').Response
-module.exports.Request = require('./lib/fetch/request').Request
-module.exports.WebSocket = require('./lib/websocket/websocket').WebSocket
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/index.d.ts
deleted file mode 100644
index 83a786d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/index.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from './types/index'
-import Undici from './types/index'
-export default Undici
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/index.js b/actions/bcr-pr-review-notifier/node_modules/undici/index.js
deleted file mode 100644
index 26302cc..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/index.js
+++ /dev/null
@@ -1,167 +0,0 @@
-'use strict'
-
-const Client = require('./lib/client')
-const Dispatcher = require('./lib/dispatcher')
-const errors = require('./lib/core/errors')
-const Pool = require('./lib/pool')
-const BalancedPool = require('./lib/balanced-pool')
-const Agent = require('./lib/agent')
-const util = require('./lib/core/util')
-const { InvalidArgumentError } = errors
-const api = require('./lib/api')
-const buildConnector = require('./lib/core/connect')
-const MockClient = require('./lib/mock/mock-client')
-const MockAgent = require('./lib/mock/mock-agent')
-const MockPool = require('./lib/mock/mock-pool')
-const mockErrors = require('./lib/mock/mock-errors')
-const ProxyAgent = require('./lib/proxy-agent')
-const RetryHandler = require('./lib/handler/RetryHandler')
-const { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global')
-const DecoratorHandler = require('./lib/handler/DecoratorHandler')
-const RedirectHandler = require('./lib/handler/RedirectHandler')
-const createRedirectInterceptor = require('./lib/interceptor/redirectInterceptor')
-
-let hasCrypto
-try {
-  require('crypto')
-  hasCrypto = true
-} catch {
-  hasCrypto = false
-}
-
-Object.assign(Dispatcher.prototype, api)
-
-module.exports.Dispatcher = Dispatcher
-module.exports.Client = Client
-module.exports.Pool = Pool
-module.exports.BalancedPool = BalancedPool
-module.exports.Agent = Agent
-module.exports.ProxyAgent = ProxyAgent
-module.exports.RetryHandler = RetryHandler
-
-module.exports.DecoratorHandler = DecoratorHandler
-module.exports.RedirectHandler = RedirectHandler
-module.exports.createRedirectInterceptor = createRedirectInterceptor
-
-module.exports.buildConnector = buildConnector
-module.exports.errors = errors
-
-function makeDispatcher (fn) {
-  return (url, opts, handler) => {
-    if (typeof opts === 'function') {
-      handler = opts
-      opts = null
-    }
-
-    if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {
-      throw new InvalidArgumentError('invalid url')
-    }
-
-    if (opts != null && typeof opts !== 'object') {
-      throw new InvalidArgumentError('invalid opts')
-    }
-
-    if (opts && opts.path != null) {
-      if (typeof opts.path !== 'string') {
-        throw new InvalidArgumentError('invalid opts.path')
-      }
-
-      let path = opts.path
-      if (!opts.path.startsWith('/')) {
-        path = `/${path}`
-      }
-
-      url = new URL(util.parseOrigin(url).origin + path)
-    } else {
-      if (!opts) {
-        opts = typeof url === 'object' ? url : {}
-      }
-
-      url = util.parseURL(url)
-    }
-
-    const { agent, dispatcher = getGlobalDispatcher() } = opts
-
-    if (agent) {
-      throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')
-    }
-
-    return fn.call(dispatcher, {
-      ...opts,
-      origin: url.origin,
-      path: url.search ? `${url.pathname}${url.search}` : url.pathname,
-      method: opts.method || (opts.body ? 'PUT' : 'GET')
-    }, handler)
-  }
-}
-
-module.exports.setGlobalDispatcher = setGlobalDispatcher
-module.exports.getGlobalDispatcher = getGlobalDispatcher
-
-if (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) {
-  let fetchImpl = null
-  module.exports.fetch = async function fetch (resource) {
-    if (!fetchImpl) {
-      fetchImpl = require('./lib/fetch').fetch
-    }
-
-    try {
-      return await fetchImpl(...arguments)
-    } catch (err) {
-      if (typeof err === 'object') {
-        Error.captureStackTrace(err, this)
-      }
-
-      throw err
-    }
-  }
-  module.exports.Headers = require('./lib/fetch/headers').Headers
-  module.exports.Response = require('./lib/fetch/response').Response
-  module.exports.Request = require('./lib/fetch/request').Request
-  module.exports.FormData = require('./lib/fetch/formdata').FormData
-  module.exports.File = require('./lib/fetch/file').File
-  module.exports.FileReader = require('./lib/fileapi/filereader').FileReader
-
-  const { setGlobalOrigin, getGlobalOrigin } = require('./lib/fetch/global')
-
-  module.exports.setGlobalOrigin = setGlobalOrigin
-  module.exports.getGlobalOrigin = getGlobalOrigin
-
-  const { CacheStorage } = require('./lib/cache/cachestorage')
-  const { kConstruct } = require('./lib/cache/symbols')
-
-  // Cache & CacheStorage are tightly coupled with fetch. Even if it may run
-  // in an older version of Node, it doesn't have any use without fetch.
-  module.exports.caches = new CacheStorage(kConstruct)
-}
-
-if (util.nodeMajor >= 16) {
-  const { deleteCookie, getCookies, getSetCookies, setCookie } = require('./lib/cookies')
-
-  module.exports.deleteCookie = deleteCookie
-  module.exports.getCookies = getCookies
-  module.exports.getSetCookies = getSetCookies
-  module.exports.setCookie = setCookie
-
-  const { parseMIMEType, serializeAMimeType } = require('./lib/fetch/dataURL')
-
-  module.exports.parseMIMEType = parseMIMEType
-  module.exports.serializeAMimeType = serializeAMimeType
-}
-
-if (util.nodeMajor >= 18 && hasCrypto) {
-  const { WebSocket } = require('./lib/websocket/websocket')
-
-  module.exports.WebSocket = WebSocket
-}
-
-module.exports.request = makeDispatcher(api.request)
-module.exports.stream = makeDispatcher(api.stream)
-module.exports.pipeline = makeDispatcher(api.pipeline)
-module.exports.connect = makeDispatcher(api.connect)
-module.exports.upgrade = makeDispatcher(api.upgrade)
-
-module.exports.MockClient = MockClient
-module.exports.MockPool = MockPool
-module.exports.MockAgent = MockAgent
-module.exports.mockErrors = mockErrors
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/agent.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/agent.js
deleted file mode 100644
index 0b18f2a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/agent.js
+++ /dev/null
@@ -1,148 +0,0 @@
-'use strict'
-
-const { InvalidArgumentError } = require('./core/errors')
-const { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require('./core/symbols')
-const DispatcherBase = require('./dispatcher-base')
-const Pool = require('./pool')
-const Client = require('./client')
-const util = require('./core/util')
-const createRedirectInterceptor = require('./interceptor/redirectInterceptor')
-const { WeakRef, FinalizationRegistry } = require('./compat/dispatcher-weakref')()
-
-const kOnConnect = Symbol('onConnect')
-const kOnDisconnect = Symbol('onDisconnect')
-const kOnConnectionError = Symbol('onConnectionError')
-const kMaxRedirections = Symbol('maxRedirections')
-const kOnDrain = Symbol('onDrain')
-const kFactory = Symbol('factory')
-const kFinalizer = Symbol('finalizer')
-const kOptions = Symbol('options')
-
-function defaultFactory (origin, opts) {
-  return opts && opts.connections === 1
-    ? new Client(origin, opts)
-    : new Pool(origin, opts)
-}
-
-class Agent extends DispatcherBase {
-  constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {
-    super()
-
-    if (typeof factory !== 'function') {
-      throw new InvalidArgumentError('factory must be a function.')
-    }
-
-    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {
-      throw new InvalidArgumentError('connect must be a function or an object')
-    }
-
-    if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {
-      throw new InvalidArgumentError('maxRedirections must be a positive number')
-    }
-
-    if (connect && typeof connect !== 'function') {
-      connect = { ...connect }
-    }
-
-    this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent)
-      ? options.interceptors.Agent
-      : [createRedirectInterceptor({ maxRedirections })]
-
-    this[kOptions] = { ...util.deepClone(options), connect }
-    this[kOptions].interceptors = options.interceptors
-      ? { ...options.interceptors }
-      : undefined
-    this[kMaxRedirections] = maxRedirections
-    this[kFactory] = factory
-    this[kClients] = new Map()
-    this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => {
-      const ref = this[kClients].get(key)
-      if (ref !== undefined && ref.deref() === undefined) {
-        this[kClients].delete(key)
-      }
-    })
-
-    const agent = this
-
-    this[kOnDrain] = (origin, targets) => {
-      agent.emit('drain', origin, [agent, ...targets])
-    }
-
-    this[kOnConnect] = (origin, targets) => {
-      agent.emit('connect', origin, [agent, ...targets])
-    }
-
-    this[kOnDisconnect] = (origin, targets, err) => {
-      agent.emit('disconnect', origin, [agent, ...targets], err)
-    }
-
-    this[kOnConnectionError] = (origin, targets, err) => {
-      agent.emit('connectionError', origin, [agent, ...targets], err)
-    }
-  }
-
-  get [kRunning] () {
-    let ret = 0
-    for (const ref of this[kClients].values()) {
-      const client = ref.deref()
-      /* istanbul ignore next: gc is undeterministic */
-      if (client) {
-        ret += client[kRunning]
-      }
-    }
-    return ret
-  }
-
-  [kDispatch] (opts, handler) {
-    let key
-    if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) {
-      key = String(opts.origin)
-    } else {
-      throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')
-    }
-
-    const ref = this[kClients].get(key)
-
-    let dispatcher = ref ? ref.deref() : null
-    if (!dispatcher) {
-      dispatcher = this[kFactory](opts.origin, this[kOptions])
-        .on('drain', this[kOnDrain])
-        .on('connect', this[kOnConnect])
-        .on('disconnect', this[kOnDisconnect])
-        .on('connectionError', this[kOnConnectionError])
-
-      this[kClients].set(key, new WeakRef(dispatcher))
-      this[kFinalizer].register(dispatcher, key)
-    }
-
-    return dispatcher.dispatch(opts, handler)
-  }
-
-  async [kClose] () {
-    const closePromises = []
-    for (const ref of this[kClients].values()) {
-      const client = ref.deref()
-      /* istanbul ignore else: gc is undeterministic */
-      if (client) {
-        closePromises.push(client.close())
-      }
-    }
-
-    await Promise.all(closePromises)
-  }
-
-  async [kDestroy] (err) {
-    const destroyPromises = []
-    for (const ref of this[kClients].values()) {
-      const client = ref.deref()
-      /* istanbul ignore else: gc is undeterministic */
-      if (client) {
-        destroyPromises.push(client.destroy(err))
-      }
-    }
-
-    await Promise.all(destroyPromises)
-  }
-}
-
-module.exports = Agent
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/abort-signal.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/abort-signal.js
deleted file mode 100644
index 2985c1e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/abort-signal.js
+++ /dev/null
@@ -1,54 +0,0 @@
-const { addAbortListener } = require('../core/util')
-const { RequestAbortedError } = require('../core/errors')
-
-const kListener = Symbol('kListener')
-const kSignal = Symbol('kSignal')
-
-function abort (self) {
-  if (self.abort) {
-    self.abort()
-  } else {
-    self.onError(new RequestAbortedError())
-  }
-}
-
-function addSignal (self, signal) {
-  self[kSignal] = null
-  self[kListener] = null
-
-  if (!signal) {
-    return
-  }
-
-  if (signal.aborted) {
-    abort(self)
-    return
-  }
-
-  self[kSignal] = signal
-  self[kListener] = () => {
-    abort(self)
-  }
-
-  addAbortListener(self[kSignal], self[kListener])
-}
-
-function removeSignal (self) {
-  if (!self[kSignal]) {
-    return
-  }
-
-  if ('removeEventListener' in self[kSignal]) {
-    self[kSignal].removeEventListener('abort', self[kListener])
-  } else {
-    self[kSignal].removeListener('abort', self[kListener])
-  }
-
-  self[kSignal] = null
-  self[kListener] = null
-}
-
-module.exports = {
-  addSignal,
-  removeSignal
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-connect.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-connect.js
deleted file mode 100644
index fd2b6ad..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-connect.js
+++ /dev/null
@@ -1,104 +0,0 @@
-'use strict'
-
-const { AsyncResource } = require('async_hooks')
-const { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')
-const util = require('../core/util')
-const { addSignal, removeSignal } = require('./abort-signal')
-
-class ConnectHandler extends AsyncResource {
-  constructor (opts, callback) {
-    if (!opts || typeof opts !== 'object') {
-      throw new InvalidArgumentError('invalid opts')
-    }
-
-    if (typeof callback !== 'function') {
-      throw new InvalidArgumentError('invalid callback')
-    }
-
-    const { signal, opaque, responseHeaders } = opts
-
-    if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {
-      throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')
-    }
-
-    super('UNDICI_CONNECT')
-
-    this.opaque = opaque || null
-    this.responseHeaders = responseHeaders || null
-    this.callback = callback
-    this.abort = null
-
-    addSignal(this, signal)
-  }
-
-  onConnect (abort, context) {
-    if (!this.callback) {
-      throw new RequestAbortedError()
-    }
-
-    this.abort = abort
-    this.context = context
-  }
-
-  onHeaders () {
-    throw new SocketError('bad connect', null)
-  }
-
-  onUpgrade (statusCode, rawHeaders, socket) {
-    const { callback, opaque, context } = this
-
-    removeSignal(this)
-
-    this.callback = null
-
-    let headers = rawHeaders
-    // Indicates is an HTTP2Session
-    if (headers != null) {
-      headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)
-    }
-
-    this.runInAsyncScope(callback, null, null, {
-      statusCode,
-      headers,
-      socket,
-      opaque,
-      context
-    })
-  }
-
-  onError (err) {
-    const { callback, opaque } = this
-
-    removeSignal(this)
-
-    if (callback) {
-      this.callback = null
-      queueMicrotask(() => {
-        this.runInAsyncScope(callback, null, err, { opaque })
-      })
-    }
-  }
-}
-
-function connect (opts, callback) {
-  if (callback === undefined) {
-    return new Promise((resolve, reject) => {
-      connect.call(this, opts, (err, data) => {
-        return err ? reject(err) : resolve(data)
-      })
-    })
-  }
-
-  try {
-    const connectHandler = new ConnectHandler(opts, callback)
-    this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler)
-  } catch (err) {
-    if (typeof callback !== 'function') {
-      throw err
-    }
-    const opaque = opts && opts.opaque
-    queueMicrotask(() => callback(err, { opaque }))
-  }
-}
-
-module.exports = connect
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-pipeline.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-pipeline.js
deleted file mode 100644
index af4a180..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-pipeline.js
+++ /dev/null
@@ -1,249 +0,0 @@
-'use strict'
-
-const {
-  Readable,
-  Duplex,
-  PassThrough
-} = require('stream')
-const {
-  InvalidArgumentError,
-  InvalidReturnValueError,
-  RequestAbortedError
-} = require('../core/errors')
-const util = require('../core/util')
-const { AsyncResource } = require('async_hooks')
-const { addSignal, removeSignal } = require('./abort-signal')
-const assert = require('assert')
-
-const kResume = Symbol('resume')
-
-class PipelineRequest extends Readable {
-  constructor () {
-    super({ autoDestroy: true })
-
-    this[kResume] = null
-  }
-
-  _read () {
-    const { [kResume]: resume } = this
-
-    if (resume) {
-      this[kResume] = null
-      resume()
-    }
-  }
-
-  _destroy (err, callback) {
-    this._read()
-
-    callback(err)
-  }
-}
-
-class PipelineResponse extends Readable {
-  constructor (resume) {
-    super({ autoDestroy: true })
-    this[kResume] = resume
-  }
-
-  _read () {
-    this[kResume]()
-  }
-
-  _destroy (err, callback) {
-    if (!err && !this._readableState.endEmitted) {
-      err = new RequestAbortedError()
-    }
-
-    callback(err)
-  }
-}
-
-class PipelineHandler extends AsyncResource {
-  constructor (opts, handler) {
-    if (!opts || typeof opts !== 'object') {
-      throw new InvalidArgumentError('invalid opts')
-    }
-
-    if (typeof handler !== 'function') {
-      throw new InvalidArgumentError('invalid handler')
-    }
-
-    const { signal, method, opaque, onInfo, responseHeaders } = opts
-
-    if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {
-      throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')
-    }
-
-    if (method === 'CONNECT') {
-      throw new InvalidArgumentError('invalid method')
-    }
-
-    if (onInfo && typeof onInfo !== 'function') {
-      throw new InvalidArgumentError('invalid onInfo callback')
-    }
-
-    super('UNDICI_PIPELINE')
-
-    this.opaque = opaque || null
-    this.responseHeaders = responseHeaders || null
-    this.handler = handler
-    this.abort = null
-    this.context = null
-    this.onInfo = onInfo || null
-
-    this.req = new PipelineRequest().on('error', util.nop)
-
-    this.ret = new Duplex({
-      readableObjectMode: opts.objectMode,
-      autoDestroy: true,
-      read: () => {
-        const { body } = this
-
-        if (body && body.resume) {
-          body.resume()
-        }
-      },
-      write: (chunk, encoding, callback) => {
-        const { req } = this
-
-        if (req.push(chunk, encoding) || req._readableState.destroyed) {
-          callback()
-        } else {
-          req[kResume] = callback
-        }
-      },
-      destroy: (err, callback) => {
-        const { body, req, res, ret, abort } = this
-
-        if (!err && !ret._readableState.endEmitted) {
-          err = new RequestAbortedError()
-        }
-
-        if (abort && err) {
-          abort()
-        }
-
-        util.destroy(body, err)
-        util.destroy(req, err)
-        util.destroy(res, err)
-
-        removeSignal(this)
-
-        callback(err)
-      }
-    }).on('prefinish', () => {
-      const { req } = this
-
-      // Node < 15 does not call _final in same tick.
-      req.push(null)
-    })
-
-    this.res = null
-
-    addSignal(this, signal)
-  }
-
-  onConnect (abort, context) {
-    const { ret, res } = this
-
-    assert(!res, 'pipeline cannot be retried')
-
-    if (ret.destroyed) {
-      throw new RequestAbortedError()
-    }
-
-    this.abort = abort
-    this.context = context
-  }
-
-  onHeaders (statusCode, rawHeaders, resume) {
-    const { opaque, handler, context } = this
-
-    if (statusCode < 200) {
-      if (this.onInfo) {
-        const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)
-        this.onInfo({ statusCode, headers })
-      }
-      return
-    }
-
-    this.res = new PipelineResponse(resume)
-
-    let body
-    try {
-      this.handler = null
-      const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)
-      body = this.runInAsyncScope(handler, null, {
-        statusCode,
-        headers,
-        opaque,
-        body: this.res,
-        context
-      })
-    } catch (err) {
-      this.res.on('error', util.nop)
-      throw err
-    }
-
-    if (!body || typeof body.on !== 'function') {
-      throw new InvalidReturnValueError('expected Readable')
-    }
-
-    body
-      .on('data', (chunk) => {
-        const { ret, body } = this
-
-        if (!ret.push(chunk) && body.pause) {
-          body.pause()
-        }
-      })
-      .on('error', (err) => {
-        const { ret } = this
-
-        util.destroy(ret, err)
-      })
-      .on('end', () => {
-        const { ret } = this
-
-        ret.push(null)
-      })
-      .on('close', () => {
-        const { ret } = this
-
-        if (!ret._readableState.ended) {
-          util.destroy(ret, new RequestAbortedError())
-        }
-      })
-
-    this.body = body
-  }
-
-  onData (chunk) {
-    const { res } = this
-    return res.push(chunk)
-  }
-
-  onComplete (trailers) {
-    const { res } = this
-    res.push(null)
-  }
-
-  onError (err) {
-    const { ret } = this
-    this.handler = null
-    util.destroy(ret, err)
-  }
-}
-
-function pipeline (opts, handler) {
-  try {
-    const pipelineHandler = new PipelineHandler(opts, handler)
-    this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler)
-    return pipelineHandler.ret
-  } catch (err) {
-    return new PassThrough().destroy(err)
-  }
-}
-
-module.exports = pipeline
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-request.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-request.js
deleted file mode 100644
index d4281ce..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-request.js
+++ /dev/null
@@ -1,180 +0,0 @@
-'use strict'
-
-const Readable = require('./readable')
-const {
-  InvalidArgumentError,
-  RequestAbortedError
-} = require('../core/errors')
-const util = require('../core/util')
-const { getResolveErrorBodyCallback } = require('./util')
-const { AsyncResource } = require('async_hooks')
-const { addSignal, removeSignal } = require('./abort-signal')
-
-class RequestHandler extends AsyncResource {
-  constructor (opts, callback) {
-    if (!opts || typeof opts !== 'object') {
-      throw new InvalidArgumentError('invalid opts')
-    }
-
-    const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts
-
-    try {
-      if (typeof callback !== 'function') {
-        throw new InvalidArgumentError('invalid callback')
-      }
-
-      if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) {
-        throw new InvalidArgumentError('invalid highWaterMark')
-      }
-
-      if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {
-        throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')
-      }
-
-      if (method === 'CONNECT') {
-        throw new InvalidArgumentError('invalid method')
-      }
-
-      if (onInfo && typeof onInfo !== 'function') {
-        throw new InvalidArgumentError('invalid onInfo callback')
-      }
-
-      super('UNDICI_REQUEST')
-    } catch (err) {
-      if (util.isStream(body)) {
-        util.destroy(body.on('error', util.nop), err)
-      }
-      throw err
-    }
-
-    this.responseHeaders = responseHeaders || null
-    this.opaque = opaque || null
-    this.callback = callback
-    this.res = null
-    this.abort = null
-    this.body = body
-    this.trailers = {}
-    this.context = null
-    this.onInfo = onInfo || null
-    this.throwOnError = throwOnError
-    this.highWaterMark = highWaterMark
-
-    if (util.isStream(body)) {
-      body.on('error', (err) => {
-        this.onError(err)
-      })
-    }
-
-    addSignal(this, signal)
-  }
-
-  onConnect (abort, context) {
-    if (!this.callback) {
-      throw new RequestAbortedError()
-    }
-
-    this.abort = abort
-    this.context = context
-  }
-
-  onHeaders (statusCode, rawHeaders, resume, statusMessage) {
-    const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this
-
-    const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)
-
-    if (statusCode < 200) {
-      if (this.onInfo) {
-        this.onInfo({ statusCode, headers })
-      }
-      return
-    }
-
-    const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers
-    const contentType = parsedHeaders['content-type']
-    const body = new Readable({ resume, abort, contentType, highWaterMark })
-
-    this.callback = null
-    this.res = body
-    if (callback !== null) {
-      if (this.throwOnError && statusCode >= 400) {
-        this.runInAsyncScope(getResolveErrorBodyCallback, null,
-          { callback, body, contentType, statusCode, statusMessage, headers }
-        )
-      } else {
-        this.runInAsyncScope(callback, null, null, {
-          statusCode,
-          headers,
-          trailers: this.trailers,
-          opaque,
-          body,
-          context
-        })
-      }
-    }
-  }
-
-  onData (chunk) {
-    const { res } = this
-    return res.push(chunk)
-  }
-
-  onComplete (trailers) {
-    const { res } = this
-
-    removeSignal(this)
-
-    util.parseHeaders(trailers, this.trailers)
-
-    res.push(null)
-  }
-
-  onError (err) {
-    const { res, callback, body, opaque } = this
-
-    removeSignal(this)
-
-    if (callback) {
-      // TODO: Does this need queueMicrotask?
-      this.callback = null
-      queueMicrotask(() => {
-        this.runInAsyncScope(callback, null, err, { opaque })
-      })
-    }
-
-    if (res) {
-      this.res = null
-      // Ensure all queued handlers are invoked before destroying res.
-      queueMicrotask(() => {
-        util.destroy(res, err)
-      })
-    }
-
-    if (body) {
-      this.body = null
-      util.destroy(body, err)
-    }
-  }
-}
-
-function request (opts, callback) {
-  if (callback === undefined) {
-    return new Promise((resolve, reject) => {
-      request.call(this, opts, (err, data) => {
-        return err ? reject(err) : resolve(data)
-      })
-    })
-  }
-
-  try {
-    this.dispatch(opts, new RequestHandler(opts, callback))
-  } catch (err) {
-    if (typeof callback !== 'function') {
-      throw err
-    }
-    const opaque = opts && opts.opaque
-    queueMicrotask(() => callback(err, { opaque }))
-  }
-}
-
-module.exports = request
-module.exports.RequestHandler = RequestHandler
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-stream.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-stream.js
deleted file mode 100644
index c571a6f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-stream.js
+++ /dev/null
@@ -1,220 +0,0 @@
-'use strict'
-
-const { finished, PassThrough } = require('stream')
-const {
-  InvalidArgumentError,
-  InvalidReturnValueError,
-  RequestAbortedError
-} = require('../core/errors')
-const util = require('../core/util')
-const { getResolveErrorBodyCallback } = require('./util')
-const { AsyncResource } = require('async_hooks')
-const { addSignal, removeSignal } = require('./abort-signal')
-
-class StreamHandler extends AsyncResource {
-  constructor (opts, factory, callback) {
-    if (!opts || typeof opts !== 'object') {
-      throw new InvalidArgumentError('invalid opts')
-    }
-
-    const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts
-
-    try {
-      if (typeof callback !== 'function') {
-        throw new InvalidArgumentError('invalid callback')
-      }
-
-      if (typeof factory !== 'function') {
-        throw new InvalidArgumentError('invalid factory')
-      }
-
-      if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {
-        throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')
-      }
-
-      if (method === 'CONNECT') {
-        throw new InvalidArgumentError('invalid method')
-      }
-
-      if (onInfo && typeof onInfo !== 'function') {
-        throw new InvalidArgumentError('invalid onInfo callback')
-      }
-
-      super('UNDICI_STREAM')
-    } catch (err) {
-      if (util.isStream(body)) {
-        util.destroy(body.on('error', util.nop), err)
-      }
-      throw err
-    }
-
-    this.responseHeaders = responseHeaders || null
-    this.opaque = opaque || null
-    this.factory = factory
-    this.callback = callback
-    this.res = null
-    this.abort = null
-    this.context = null
-    this.trailers = null
-    this.body = body
-    this.onInfo = onInfo || null
-    this.throwOnError = throwOnError || false
-
-    if (util.isStream(body)) {
-      body.on('error', (err) => {
-        this.onError(err)
-      })
-    }
-
-    addSignal(this, signal)
-  }
-
-  onConnect (abort, context) {
-    if (!this.callback) {
-      throw new RequestAbortedError()
-    }
-
-    this.abort = abort
-    this.context = context
-  }
-
-  onHeaders (statusCode, rawHeaders, resume, statusMessage) {
-    const { factory, opaque, context, callback, responseHeaders } = this
-
-    const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)
-
-    if (statusCode < 200) {
-      if (this.onInfo) {
-        this.onInfo({ statusCode, headers })
-      }
-      return
-    }
-
-    this.factory = null
-
-    let res
-
-    if (this.throwOnError && statusCode >= 400) {
-      const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers
-      const contentType = parsedHeaders['content-type']
-      res = new PassThrough()
-
-      this.callback = null
-      this.runInAsyncScope(getResolveErrorBodyCallback, null,
-        { callback, body: res, contentType, statusCode, statusMessage, headers }
-      )
-    } else {
-      if (factory === null) {
-        return
-      }
-
-      res = this.runInAsyncScope(factory, null, {
-        statusCode,
-        headers,
-        opaque,
-        context
-      })
-
-      if (
-        !res ||
-        typeof res.write !== 'function' ||
-        typeof res.end !== 'function' ||
-        typeof res.on !== 'function'
-      ) {
-        throw new InvalidReturnValueError('expected Writable')
-      }
-
-      // TODO: Avoid finished. It registers an unnecessary amount of listeners.
-      finished(res, { readable: false }, (err) => {
-        const { callback, res, opaque, trailers, abort } = this
-
-        this.res = null
-        if (err || !res.readable) {
-          util.destroy(res, err)
-        }
-
-        this.callback = null
-        this.runInAsyncScope(callback, null, err || null, { opaque, trailers })
-
-        if (err) {
-          abort()
-        }
-      })
-    }
-
-    res.on('drain', resume)
-
-    this.res = res
-
-    const needDrain = res.writableNeedDrain !== undefined
-      ? res.writableNeedDrain
-      : res._writableState && res._writableState.needDrain
-
-    return needDrain !== true
-  }
-
-  onData (chunk) {
-    const { res } = this
-
-    return res ? res.write(chunk) : true
-  }
-
-  onComplete (trailers) {
-    const { res } = this
-
-    removeSignal(this)
-
-    if (!res) {
-      return
-    }
-
-    this.trailers = util.parseHeaders(trailers)
-
-    res.end()
-  }
-
-  onError (err) {
-    const { res, callback, opaque, body } = this
-
-    removeSignal(this)
-
-    this.factory = null
-
-    if (res) {
-      this.res = null
-      util.destroy(res, err)
-    } else if (callback) {
-      this.callback = null
-      queueMicrotask(() => {
-        this.runInAsyncScope(callback, null, err, { opaque })
-      })
-    }
-
-    if (body) {
-      this.body = null
-      util.destroy(body, err)
-    }
-  }
-}
-
-function stream (opts, factory, callback) {
-  if (callback === undefined) {
-    return new Promise((resolve, reject) => {
-      stream.call(this, opts, factory, (err, data) => {
-        return err ? reject(err) : resolve(data)
-      })
-    })
-  }
-
-  try {
-    this.dispatch(opts, new StreamHandler(opts, factory, callback))
-  } catch (err) {
-    if (typeof callback !== 'function') {
-      throw err
-    }
-    const opaque = opts && opts.opaque
-    queueMicrotask(() => callback(err, { opaque }))
-  }
-}
-
-module.exports = stream
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-upgrade.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-upgrade.js
deleted file mode 100644
index ef783e8..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/api-upgrade.js
+++ /dev/null
@@ -1,105 +0,0 @@
-'use strict'
-
-const { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')
-const { AsyncResource } = require('async_hooks')
-const util = require('../core/util')
-const { addSignal, removeSignal } = require('./abort-signal')
-const assert = require('assert')
-
-class UpgradeHandler extends AsyncResource {
-  constructor (opts, callback) {
-    if (!opts || typeof opts !== 'object') {
-      throw new InvalidArgumentError('invalid opts')
-    }
-
-    if (typeof callback !== 'function') {
-      throw new InvalidArgumentError('invalid callback')
-    }
-
-    const { signal, opaque, responseHeaders } = opts
-
-    if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {
-      throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')
-    }
-
-    super('UNDICI_UPGRADE')
-
-    this.responseHeaders = responseHeaders || null
-    this.opaque = opaque || null
-    this.callback = callback
-    this.abort = null
-    this.context = null
-
-    addSignal(this, signal)
-  }
-
-  onConnect (abort, context) {
-    if (!this.callback) {
-      throw new RequestAbortedError()
-    }
-
-    this.abort = abort
-    this.context = null
-  }
-
-  onHeaders () {
-    throw new SocketError('bad upgrade', null)
-  }
-
-  onUpgrade (statusCode, rawHeaders, socket) {
-    const { callback, opaque, context } = this
-
-    assert.strictEqual(statusCode, 101)
-
-    removeSignal(this)
-
-    this.callback = null
-    const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)
-    this.runInAsyncScope(callback, null, null, {
-      headers,
-      socket,
-      opaque,
-      context
-    })
-  }
-
-  onError (err) {
-    const { callback, opaque } = this
-
-    removeSignal(this)
-
-    if (callback) {
-      this.callback = null
-      queueMicrotask(() => {
-        this.runInAsyncScope(callback, null, err, { opaque })
-      })
-    }
-  }
-}
-
-function upgrade (opts, callback) {
-  if (callback === undefined) {
-    return new Promise((resolve, reject) => {
-      upgrade.call(this, opts, (err, data) => {
-        return err ? reject(err) : resolve(data)
-      })
-    })
-  }
-
-  try {
-    const upgradeHandler = new UpgradeHandler(opts, callback)
-    this.dispatch({
-      ...opts,
-      method: opts.method || 'GET',
-      upgrade: opts.protocol || 'Websocket'
-    }, upgradeHandler)
-  } catch (err) {
-    if (typeof callback !== 'function') {
-      throw err
-    }
-    const opaque = opts && opts.opaque
-    queueMicrotask(() => callback(err, { opaque }))
-  }
-}
-
-module.exports = upgrade
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/index.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/index.js
deleted file mode 100644
index 8983a5e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-module.exports.request = require('./api-request')
-module.exports.stream = require('./api-stream')
-module.exports.pipeline = require('./api-pipeline')
-module.exports.upgrade = require('./api-upgrade')
-module.exports.connect = require('./api-connect')
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/readable.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/readable.js
deleted file mode 100644
index 5269dfa..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/readable.js
+++ /dev/null
@@ -1,322 +0,0 @@
-// Ported from https://github.com/nodejs/undici/pull/907
-
-'use strict'
-
-const assert = require('assert')
-const { Readable } = require('stream')
-const { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require('../core/errors')
-const util = require('../core/util')
-const { ReadableStreamFrom, toUSVString } = require('../core/util')
-
-let Blob
-
-const kConsume = Symbol('kConsume')
-const kReading = Symbol('kReading')
-const kBody = Symbol('kBody')
-const kAbort = Symbol('abort')
-const kContentType = Symbol('kContentType')
-
-const noop = () => {}
-
-module.exports = class BodyReadable extends Readable {
-  constructor ({
-    resume,
-    abort,
-    contentType = '',
-    highWaterMark = 64 * 1024 // Same as nodejs fs streams.
-  }) {
-    super({
-      autoDestroy: true,
-      read: resume,
-      highWaterMark
-    })
-
-    this._readableState.dataEmitted = false
-
-    this[kAbort] = abort
-    this[kConsume] = null
-    this[kBody] = null
-    this[kContentType] = contentType
-
-    // Is stream being consumed through Readable API?
-    // This is an optimization so that we avoid checking
-    // for 'data' and 'readable' listeners in the hot path
-    // inside push().
-    this[kReading] = false
-  }
-
-  destroy (err) {
-    if (this.destroyed) {
-      // Node < 16
-      return this
-    }
-
-    if (!err && !this._readableState.endEmitted) {
-      err = new RequestAbortedError()
-    }
-
-    if (err) {
-      this[kAbort]()
-    }
-
-    return super.destroy(err)
-  }
-
-  emit (ev, ...args) {
-    if (ev === 'data') {
-      // Node < 16.7
-      this._readableState.dataEmitted = true
-    } else if (ev === 'error') {
-      // Node < 16
-      this._readableState.errorEmitted = true
-    }
-    return super.emit(ev, ...args)
-  }
-
-  on (ev, ...args) {
-    if (ev === 'data' || ev === 'readable') {
-      this[kReading] = true
-    }
-    return super.on(ev, ...args)
-  }
-
-  addListener (ev, ...args) {
-    return this.on(ev, ...args)
-  }
-
-  off (ev, ...args) {
-    const ret = super.off(ev, ...args)
-    if (ev === 'data' || ev === 'readable') {
-      this[kReading] = (
-        this.listenerCount('data') > 0 ||
-        this.listenerCount('readable') > 0
-      )
-    }
-    return ret
-  }
-
-  removeListener (ev, ...args) {
-    return this.off(ev, ...args)
-  }
-
-  push (chunk) {
-    if (this[kConsume] && chunk !== null && this.readableLength === 0) {
-      consumePush(this[kConsume], chunk)
-      return this[kReading] ? super.push(chunk) : true
-    }
-    return super.push(chunk)
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-body-text
-  async text () {
-    return consume(this, 'text')
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-body-json
-  async json () {
-    return consume(this, 'json')
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-body-blob
-  async blob () {
-    return consume(this, 'blob')
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-body-arraybuffer
-  async arrayBuffer () {
-    return consume(this, 'arrayBuffer')
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-body-formdata
-  async formData () {
-    // TODO: Implement.
-    throw new NotSupportedError()
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-body-bodyused
-  get bodyUsed () {
-    return util.isDisturbed(this)
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-body-body
-  get body () {
-    if (!this[kBody]) {
-      this[kBody] = ReadableStreamFrom(this)
-      if (this[kConsume]) {
-        // TODO: Is this the best way to force a lock?
-        this[kBody].getReader() // Ensure stream is locked.
-        assert(this[kBody].locked)
-      }
-    }
-    return this[kBody]
-  }
-
-  dump (opts) {
-    let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144
-    const signal = opts && opts.signal
-
-    if (signal) {
-      try {
-        if (typeof signal !== 'object' || !('aborted' in signal)) {
-          throw new InvalidArgumentError('signal must be an AbortSignal')
-        }
-        util.throwIfAborted(signal)
-      } catch (err) {
-        return Promise.reject(err)
-      }
-    }
-
-    if (this.closed) {
-      return Promise.resolve(null)
-    }
-
-    return new Promise((resolve, reject) => {
-      const signalListenerCleanup = signal
-        ? util.addAbortListener(signal, () => {
-          this.destroy()
-        })
-        : noop
-
-      this
-        .on('close', function () {
-          signalListenerCleanup()
-          if (signal && signal.aborted) {
-            reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))
-          } else {
-            resolve(null)
-          }
-        })
-        .on('error', noop)
-        .on('data', function (chunk) {
-          limit -= chunk.length
-          if (limit <= 0) {
-            this.destroy()
-          }
-        })
-        .resume()
-    })
-  }
-}
-
-// https://streams.spec.whatwg.org/#readablestream-locked
-function isLocked (self) {
-  // Consume is an implicit lock.
-  return (self[kBody] && self[kBody].locked === true) || self[kConsume]
-}
-
-// https://fetch.spec.whatwg.org/#body-unusable
-function isUnusable (self) {
-  return util.isDisturbed(self) || isLocked(self)
-}
-
-async function consume (stream, type) {
-  if (isUnusable(stream)) {
-    throw new TypeError('unusable')
-  }
-
-  assert(!stream[kConsume])
-
-  return new Promise((resolve, reject) => {
-    stream[kConsume] = {
-      type,
-      stream,
-      resolve,
-      reject,
-      length: 0,
-      body: []
-    }
-
-    stream
-      .on('error', function (err) {
-        consumeFinish(this[kConsume], err)
-      })
-      .on('close', function () {
-        if (this[kConsume].body !== null) {
-          consumeFinish(this[kConsume], new RequestAbortedError())
-        }
-      })
-
-    process.nextTick(consumeStart, stream[kConsume])
-  })
-}
-
-function consumeStart (consume) {
-  if (consume.body === null) {
-    return
-  }
-
-  const { _readableState: state } = consume.stream
-
-  for (const chunk of state.buffer) {
-    consumePush(consume, chunk)
-  }
-
-  if (state.endEmitted) {
-    consumeEnd(this[kConsume])
-  } else {
-    consume.stream.on('end', function () {
-      consumeEnd(this[kConsume])
-    })
-  }
-
-  consume.stream.resume()
-
-  while (consume.stream.read() != null) {
-    // Loop
-  }
-}
-
-function consumeEnd (consume) {
-  const { type, body, resolve, stream, length } = consume
-
-  try {
-    if (type === 'text') {
-      resolve(toUSVString(Buffer.concat(body)))
-    } else if (type === 'json') {
-      resolve(JSON.parse(Buffer.concat(body)))
-    } else if (type === 'arrayBuffer') {
-      const dst = new Uint8Array(length)
-
-      let pos = 0
-      for (const buf of body) {
-        dst.set(buf, pos)
-        pos += buf.byteLength
-      }
-
-      resolve(dst.buffer)
-    } else if (type === 'blob') {
-      if (!Blob) {
-        Blob = require('buffer').Blob
-      }
-      resolve(new Blob(body, { type: stream[kContentType] }))
-    }
-
-    consumeFinish(consume)
-  } catch (err) {
-    stream.destroy(err)
-  }
-}
-
-function consumePush (consume, chunk) {
-  consume.length += chunk.length
-  consume.body.push(chunk)
-}
-
-function consumeFinish (consume, err) {
-  if (consume.body === null) {
-    return
-  }
-
-  if (err) {
-    consume.reject(err)
-  } else {
-    consume.resolve()
-  }
-
-  consume.type = null
-  consume.stream = null
-  consume.resolve = null
-  consume.reject = null
-  consume.length = 0
-  consume.body = null
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/util.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/util.js
deleted file mode 100644
index bffd702..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/api/util.js
+++ /dev/null
@@ -1,46 +0,0 @@
-const assert = require('assert')
-const {
-  ResponseStatusCodeError
-} = require('../core/errors')
-const { toUSVString } = require('../core/util')
-
-async function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) {
-  assert(body)
-
-  let chunks = []
-  let limit = 0
-
-  for await (const chunk of body) {
-    chunks.push(chunk)
-    limit += chunk.length
-    if (limit > 128 * 1024) {
-      chunks = null
-      break
-    }
-  }
-
-  if (statusCode === 204 || !contentType || !chunks) {
-    process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))
-    return
-  }
-
-  try {
-    if (contentType.startsWith('application/json')) {
-      const payload = JSON.parse(toUSVString(Buffer.concat(chunks)))
-      process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))
-      return
-    }
-
-    if (contentType.startsWith('text/')) {
-      const payload = toUSVString(Buffer.concat(chunks))
-      process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))
-      return
-    }
-  } catch (err) {
-    // Process in a fallback if error
-  }
-
-  process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))
-}
-
-module.exports = { getResolveErrorBodyCallback }
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/balanced-pool.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/balanced-pool.js
deleted file mode 100644
index 10bc6a4..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/balanced-pool.js
+++ /dev/null
@@ -1,190 +0,0 @@
-'use strict'
-
-const {
-  BalancedPoolMissingUpstreamError,
-  InvalidArgumentError
-} = require('./core/errors')
-const {
-  PoolBase,
-  kClients,
-  kNeedDrain,
-  kAddClient,
-  kRemoveClient,
-  kGetDispatcher
-} = require('./pool-base')
-const Pool = require('./pool')
-const { kUrl, kInterceptors } = require('./core/symbols')
-const { parseOrigin } = require('./core/util')
-const kFactory = Symbol('factory')
-
-const kOptions = Symbol('options')
-const kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor')
-const kCurrentWeight = Symbol('kCurrentWeight')
-const kIndex = Symbol('kIndex')
-const kWeight = Symbol('kWeight')
-const kMaxWeightPerServer = Symbol('kMaxWeightPerServer')
-const kErrorPenalty = Symbol('kErrorPenalty')
-
-function getGreatestCommonDivisor (a, b) {
-  if (b === 0) return a
-  return getGreatestCommonDivisor(b, a % b)
-}
-
-function defaultFactory (origin, opts) {
-  return new Pool(origin, opts)
-}
-
-class BalancedPool extends PoolBase {
-  constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) {
-    super()
-
-    this[kOptions] = opts
-    this[kIndex] = -1
-    this[kCurrentWeight] = 0
-
-    this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100
-    this[kErrorPenalty] = this[kOptions].errorPenalty || 15
-
-    if (!Array.isArray(upstreams)) {
-      upstreams = [upstreams]
-    }
-
-    if (typeof factory !== 'function') {
-      throw new InvalidArgumentError('factory must be a function.')
-    }
-
-    this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool)
-      ? opts.interceptors.BalancedPool
-      : []
-    this[kFactory] = factory
-
-    for (const upstream of upstreams) {
-      this.addUpstream(upstream)
-    }
-    this._updateBalancedPoolStats()
-  }
-
-  addUpstream (upstream) {
-    const upstreamOrigin = parseOrigin(upstream).origin
-
-    if (this[kClients].find((pool) => (
-      pool[kUrl].origin === upstreamOrigin &&
-      pool.closed !== true &&
-      pool.destroyed !== true
-    ))) {
-      return this
-    }
-    const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))
-
-    this[kAddClient](pool)
-    pool.on('connect', () => {
-      pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty])
-    })
-
-    pool.on('connectionError', () => {
-      pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])
-      this._updateBalancedPoolStats()
-    })
-
-    pool.on('disconnect', (...args) => {
-      const err = args[2]
-      if (err && err.code === 'UND_ERR_SOCKET') {
-        // decrease the weight of the pool.
-        pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])
-        this._updateBalancedPoolStats()
-      }
-    })
-
-    for (const client of this[kClients]) {
-      client[kWeight] = this[kMaxWeightPerServer]
-    }
-
-    this._updateBalancedPoolStats()
-
-    return this
-  }
-
-  _updateBalancedPoolStats () {
-    this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0)
-  }
-
-  removeUpstream (upstream) {
-    const upstreamOrigin = parseOrigin(upstream).origin
-
-    const pool = this[kClients].find((pool) => (
-      pool[kUrl].origin === upstreamOrigin &&
-      pool.closed !== true &&
-      pool.destroyed !== true
-    ))
-
-    if (pool) {
-      this[kRemoveClient](pool)
-    }
-
-    return this
-  }
-
-  get upstreams () {
-    return this[kClients]
-      .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true)
-      .map((p) => p[kUrl].origin)
-  }
-
-  [kGetDispatcher] () {
-    // We validate that pools is greater than 0,
-    // otherwise we would have to wait until an upstream
-    // is added, which might never happen.
-    if (this[kClients].length === 0) {
-      throw new BalancedPoolMissingUpstreamError()
-    }
-
-    const dispatcher = this[kClients].find(dispatcher => (
-      !dispatcher[kNeedDrain] &&
-      dispatcher.closed !== true &&
-      dispatcher.destroyed !== true
-    ))
-
-    if (!dispatcher) {
-      return
-    }
-
-    const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true)
-
-    if (allClientsBusy) {
-      return
-    }
-
-    let counter = 0
-
-    let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain])
-
-    while (counter++ < this[kClients].length) {
-      this[kIndex] = (this[kIndex] + 1) % this[kClients].length
-      const pool = this[kClients][this[kIndex]]
-
-      // find pool index with the largest weight
-      if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) {
-        maxWeightIndex = this[kIndex]
-      }
-
-      // decrease the current weight every `this[kClients].length`.
-      if (this[kIndex] === 0) {
-        // Set the current weight to the next lower weight.
-        this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]
-
-        if (this[kCurrentWeight] <= 0) {
-          this[kCurrentWeight] = this[kMaxWeightPerServer]
-        }
-      }
-      if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) {
-        return pool
-      }
-    }
-
-    this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]
-    this[kIndex] = maxWeightIndex
-    return this[kClients][maxWeightIndex]
-  }
-}
-
-module.exports = BalancedPool
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cache/cache.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/cache/cache.js
deleted file mode 100644
index 9b31108..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cache/cache.js
+++ /dev/null
@@ -1,838 +0,0 @@
-'use strict'
-
-const { kConstruct } = require('./symbols')
-const { urlEquals, fieldValues: getFieldValues } = require('./util')
-const { kEnumerableProperty, isDisturbed } = require('../core/util')
-const { kHeadersList } = require('../core/symbols')
-const { webidl } = require('../fetch/webidl')
-const { Response, cloneResponse } = require('../fetch/response')
-const { Request } = require('../fetch/request')
-const { kState, kHeaders, kGuard, kRealm } = require('../fetch/symbols')
-const { fetching } = require('../fetch/index')
-const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util')
-const assert = require('assert')
-const { getGlobalDispatcher } = require('../global')
-
-/**
- * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation
- * @typedef {Object} CacheBatchOperation
- * @property {'delete' | 'put'} type
- * @property {any} request
- * @property {any} response
- * @property {import('../../types/cache').CacheQueryOptions} options
- */
-
-/**
- * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list
- * @typedef {[any, any][]} requestResponseList
- */
-
-class Cache {
-  /**
-   * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list
-   * @type {requestResponseList}
-   */
-  #relevantRequestResponseList
-
-  constructor () {
-    if (arguments[0] !== kConstruct) {
-      webidl.illegalConstructor()
-    }
-
-    this.#relevantRequestResponseList = arguments[1]
-  }
-
-  async match (request, options = {}) {
-    webidl.brandCheck(this, Cache)
-    webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' })
-
-    request = webidl.converters.RequestInfo(request)
-    options = webidl.converters.CacheQueryOptions(options)
-
-    const p = await this.matchAll(request, options)
-
-    if (p.length === 0) {
-      return
-    }
-
-    return p[0]
-  }
-
-  async matchAll (request = undefined, options = {}) {
-    webidl.brandCheck(this, Cache)
-
-    if (request !== undefined) request = webidl.converters.RequestInfo(request)
-    options = webidl.converters.CacheQueryOptions(options)
-
-    // 1.
-    let r = null
-
-    // 2.
-    if (request !== undefined) {
-      if (request instanceof Request) {
-        // 2.1.1
-        r = request[kState]
-
-        // 2.1.2
-        if (r.method !== 'GET' && !options.ignoreMethod) {
-          return []
-        }
-      } else if (typeof request === 'string') {
-        // 2.2.1
-        r = new Request(request)[kState]
-      }
-    }
-
-    // 5.
-    // 5.1
-    const responses = []
-
-    // 5.2
-    if (request === undefined) {
-      // 5.2.1
-      for (const requestResponse of this.#relevantRequestResponseList) {
-        responses.push(requestResponse[1])
-      }
-    } else { // 5.3
-      // 5.3.1
-      const requestResponses = this.#queryCache(r, options)
-
-      // 5.3.2
-      for (const requestResponse of requestResponses) {
-        responses.push(requestResponse[1])
-      }
-    }
-
-    // 5.4
-    // We don't implement CORs so we don't need to loop over the responses, yay!
-
-    // 5.5.1
-    const responseList = []
-
-    // 5.5.2
-    for (const response of responses) {
-      // 5.5.2.1
-      const responseObject = new Response(response.body?.source ?? null)
-      const body = responseObject[kState].body
-      responseObject[kState] = response
-      responseObject[kState].body = body
-      responseObject[kHeaders][kHeadersList] = response.headersList
-      responseObject[kHeaders][kGuard] = 'immutable'
-
-      responseList.push(responseObject)
-    }
-
-    // 6.
-    return Object.freeze(responseList)
-  }
-
-  async add (request) {
-    webidl.brandCheck(this, Cache)
-    webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' })
-
-    request = webidl.converters.RequestInfo(request)
-
-    // 1.
-    const requests = [request]
-
-    // 2.
-    const responseArrayPromise = this.addAll(requests)
-
-    // 3.
-    return await responseArrayPromise
-  }
-
-  async addAll (requests) {
-    webidl.brandCheck(this, Cache)
-    webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' })
-
-    requests = webidl.converters['sequence<RequestInfo>'](requests)
-
-    // 1.
-    const responsePromises = []
-
-    // 2.
-    const requestList = []
-
-    // 3.
-    for (const request of requests) {
-      if (typeof request === 'string') {
-        continue
-      }
-
-      // 3.1
-      const r = request[kState]
-
-      // 3.2
-      if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') {
-        throw webidl.errors.exception({
-          header: 'Cache.addAll',
-          message: 'Expected http/s scheme when method is not GET.'
-        })
-      }
-    }
-
-    // 4.
-    /** @type {ReturnType<typeof fetching>[]} */
-    const fetchControllers = []
-
-    // 5.
-    for (const request of requests) {
-      // 5.1
-      const r = new Request(request)[kState]
-
-      // 5.2
-      if (!urlIsHttpHttpsScheme(r.url)) {
-        throw webidl.errors.exception({
-          header: 'Cache.addAll',
-          message: 'Expected http/s scheme.'
-        })
-      }
-
-      // 5.4
-      r.initiator = 'fetch'
-      r.destination = 'subresource'
-
-      // 5.5
-      requestList.push(r)
-
-      // 5.6
-      const responsePromise = createDeferredPromise()
-
-      // 5.7
-      fetchControllers.push(fetching({
-        request: r,
-        dispatcher: getGlobalDispatcher(),
-        processResponse (response) {
-          // 1.
-          if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) {
-            responsePromise.reject(webidl.errors.exception({
-              header: 'Cache.addAll',
-              message: 'Received an invalid status code or the request failed.'
-            }))
-          } else if (response.headersList.contains('vary')) { // 2.
-            // 2.1
-            const fieldValues = getFieldValues(response.headersList.get('vary'))
-
-            // 2.2
-            for (const fieldValue of fieldValues) {
-              // 2.2.1
-              if (fieldValue === '*') {
-                responsePromise.reject(webidl.errors.exception({
-                  header: 'Cache.addAll',
-                  message: 'invalid vary field value'
-                }))
-
-                for (const controller of fetchControllers) {
-                  controller.abort()
-                }
-
-                return
-              }
-            }
-          }
-        },
-        processResponseEndOfBody (response) {
-          // 1.
-          if (response.aborted) {
-            responsePromise.reject(new DOMException('aborted', 'AbortError'))
-            return
-          }
-
-          // 2.
-          responsePromise.resolve(response)
-        }
-      }))
-
-      // 5.8
-      responsePromises.push(responsePromise.promise)
-    }
-
-    // 6.
-    const p = Promise.all(responsePromises)
-
-    // 7.
-    const responses = await p
-
-    // 7.1
-    const operations = []
-
-    // 7.2
-    let index = 0
-
-    // 7.3
-    for (const response of responses) {
-      // 7.3.1
-      /** @type {CacheBatchOperation} */
-      const operation = {
-        type: 'put', // 7.3.2
-        request: requestList[index], // 7.3.3
-        response // 7.3.4
-      }
-
-      operations.push(operation) // 7.3.5
-
-      index++ // 7.3.6
-    }
-
-    // 7.5
-    const cacheJobPromise = createDeferredPromise()
-
-    // 7.6.1
-    let errorData = null
-
-    // 7.6.2
-    try {
-      this.#batchCacheOperations(operations)
-    } catch (e) {
-      errorData = e
-    }
-
-    // 7.6.3
-    queueMicrotask(() => {
-      // 7.6.3.1
-      if (errorData === null) {
-        cacheJobPromise.resolve(undefined)
-      } else {
-        // 7.6.3.2
-        cacheJobPromise.reject(errorData)
-      }
-    })
-
-    // 7.7
-    return cacheJobPromise.promise
-  }
-
-  async put (request, response) {
-    webidl.brandCheck(this, Cache)
-    webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' })
-
-    request = webidl.converters.RequestInfo(request)
-    response = webidl.converters.Response(response)
-
-    // 1.
-    let innerRequest = null
-
-    // 2.
-    if (request instanceof Request) {
-      innerRequest = request[kState]
-    } else { // 3.
-      innerRequest = new Request(request)[kState]
-    }
-
-    // 4.
-    if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') {
-      throw webidl.errors.exception({
-        header: 'Cache.put',
-        message: 'Expected an http/s scheme when method is not GET'
-      })
-    }
-
-    // 5.
-    const innerResponse = response[kState]
-
-    // 6.
-    if (innerResponse.status === 206) {
-      throw webidl.errors.exception({
-        header: 'Cache.put',
-        message: 'Got 206 status'
-      })
-    }
-
-    // 7.
-    if (innerResponse.headersList.contains('vary')) {
-      // 7.1.
-      const fieldValues = getFieldValues(innerResponse.headersList.get('vary'))
-
-      // 7.2.
-      for (const fieldValue of fieldValues) {
-        // 7.2.1
-        if (fieldValue === '*') {
-          throw webidl.errors.exception({
-            header: 'Cache.put',
-            message: 'Got * vary field value'
-          })
-        }
-      }
-    }
-
-    // 8.
-    if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) {
-      throw webidl.errors.exception({
-        header: 'Cache.put',
-        message: 'Response body is locked or disturbed'
-      })
-    }
-
-    // 9.
-    const clonedResponse = cloneResponse(innerResponse)
-
-    // 10.
-    const bodyReadPromise = createDeferredPromise()
-
-    // 11.
-    if (innerResponse.body != null) {
-      // 11.1
-      const stream = innerResponse.body.stream
-
-      // 11.2
-      const reader = stream.getReader()
-
-      // 11.3
-      readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject)
-    } else {
-      bodyReadPromise.resolve(undefined)
-    }
-
-    // 12.
-    /** @type {CacheBatchOperation[]} */
-    const operations = []
-
-    // 13.
-    /** @type {CacheBatchOperation} */
-    const operation = {
-      type: 'put', // 14.
-      request: innerRequest, // 15.
-      response: clonedResponse // 16.
-    }
-
-    // 17.
-    operations.push(operation)
-
-    // 19.
-    const bytes = await bodyReadPromise.promise
-
-    if (clonedResponse.body != null) {
-      clonedResponse.body.source = bytes
-    }
-
-    // 19.1
-    const cacheJobPromise = createDeferredPromise()
-
-    // 19.2.1
-    let errorData = null
-
-    // 19.2.2
-    try {
-      this.#batchCacheOperations(operations)
-    } catch (e) {
-      errorData = e
-    }
-
-    // 19.2.3
-    queueMicrotask(() => {
-      // 19.2.3.1
-      if (errorData === null) {
-        cacheJobPromise.resolve()
-      } else { // 19.2.3.2
-        cacheJobPromise.reject(errorData)
-      }
-    })
-
-    return cacheJobPromise.promise
-  }
-
-  async delete (request, options = {}) {
-    webidl.brandCheck(this, Cache)
-    webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' })
-
-    request = webidl.converters.RequestInfo(request)
-    options = webidl.converters.CacheQueryOptions(options)
-
-    /**
-     * @type {Request}
-     */
-    let r = null
-
-    if (request instanceof Request) {
-      r = request[kState]
-
-      if (r.method !== 'GET' && !options.ignoreMethod) {
-        return false
-      }
-    } else {
-      assert(typeof request === 'string')
-
-      r = new Request(request)[kState]
-    }
-
-    /** @type {CacheBatchOperation[]} */
-    const operations = []
-
-    /** @type {CacheBatchOperation} */
-    const operation = {
-      type: 'delete',
-      request: r,
-      options
-    }
-
-    operations.push(operation)
-
-    const cacheJobPromise = createDeferredPromise()
-
-    let errorData = null
-    let requestResponses
-
-    try {
-      requestResponses = this.#batchCacheOperations(operations)
-    } catch (e) {
-      errorData = e
-    }
-
-    queueMicrotask(() => {
-      if (errorData === null) {
-        cacheJobPromise.resolve(!!requestResponses?.length)
-      } else {
-        cacheJobPromise.reject(errorData)
-      }
-    })
-
-    return cacheJobPromise.promise
-  }
-
-  /**
-   * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys
-   * @param {any} request
-   * @param {import('../../types/cache').CacheQueryOptions} options
-   * @returns {readonly Request[]}
-   */
-  async keys (request = undefined, options = {}) {
-    webidl.brandCheck(this, Cache)
-
-    if (request !== undefined) request = webidl.converters.RequestInfo(request)
-    options = webidl.converters.CacheQueryOptions(options)
-
-    // 1.
-    let r = null
-
-    // 2.
-    if (request !== undefined) {
-      // 2.1
-      if (request instanceof Request) {
-        // 2.1.1
-        r = request[kState]
-
-        // 2.1.2
-        if (r.method !== 'GET' && !options.ignoreMethod) {
-          return []
-        }
-      } else if (typeof request === 'string') { // 2.2
-        r = new Request(request)[kState]
-      }
-    }
-
-    // 4.
-    const promise = createDeferredPromise()
-
-    // 5.
-    // 5.1
-    const requests = []
-
-    // 5.2
-    if (request === undefined) {
-      // 5.2.1
-      for (const requestResponse of this.#relevantRequestResponseList) {
-        // 5.2.1.1
-        requests.push(requestResponse[0])
-      }
-    } else { // 5.3
-      // 5.3.1
-      const requestResponses = this.#queryCache(r, options)
-
-      // 5.3.2
-      for (const requestResponse of requestResponses) {
-        // 5.3.2.1
-        requests.push(requestResponse[0])
-      }
-    }
-
-    // 5.4
-    queueMicrotask(() => {
-      // 5.4.1
-      const requestList = []
-
-      // 5.4.2
-      for (const request of requests) {
-        const requestObject = new Request('https://a')
-        requestObject[kState] = request
-        requestObject[kHeaders][kHeadersList] = request.headersList
-        requestObject[kHeaders][kGuard] = 'immutable'
-        requestObject[kRealm] = request.client
-
-        // 5.4.2.1
-        requestList.push(requestObject)
-      }
-
-      // 5.4.3
-      promise.resolve(Object.freeze(requestList))
-    })
-
-    return promise.promise
-  }
-
-  /**
-   * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm
-   * @param {CacheBatchOperation[]} operations
-   * @returns {requestResponseList}
-   */
-  #batchCacheOperations (operations) {
-    // 1.
-    const cache = this.#relevantRequestResponseList
-
-    // 2.
-    const backupCache = [...cache]
-
-    // 3.
-    const addedItems = []
-
-    // 4.1
-    const resultList = []
-
-    try {
-      // 4.2
-      for (const operation of operations) {
-        // 4.2.1
-        if (operation.type !== 'delete' && operation.type !== 'put') {
-          throw webidl.errors.exception({
-            header: 'Cache.#batchCacheOperations',
-            message: 'operation type does not match "delete" or "put"'
-          })
-        }
-
-        // 4.2.2
-        if (operation.type === 'delete' && operation.response != null) {
-          throw webidl.errors.exception({
-            header: 'Cache.#batchCacheOperations',
-            message: 'delete operation should not have an associated response'
-          })
-        }
-
-        // 4.2.3
-        if (this.#queryCache(operation.request, operation.options, addedItems).length) {
-          throw new DOMException('???', 'InvalidStateError')
-        }
-
-        // 4.2.4
-        let requestResponses
-
-        // 4.2.5
-        if (operation.type === 'delete') {
-          // 4.2.5.1
-          requestResponses = this.#queryCache(operation.request, operation.options)
-
-          // TODO: the spec is wrong, this is needed to pass WPTs
-          if (requestResponses.length === 0) {
-            return []
-          }
-
-          // 4.2.5.2
-          for (const requestResponse of requestResponses) {
-            const idx = cache.indexOf(requestResponse)
-            assert(idx !== -1)
-
-            // 4.2.5.2.1
-            cache.splice(idx, 1)
-          }
-        } else if (operation.type === 'put') { // 4.2.6
-          // 4.2.6.1
-          if (operation.response == null) {
-            throw webidl.errors.exception({
-              header: 'Cache.#batchCacheOperations',
-              message: 'put operation should have an associated response'
-            })
-          }
-
-          // 4.2.6.2
-          const r = operation.request
-
-          // 4.2.6.3
-          if (!urlIsHttpHttpsScheme(r.url)) {
-            throw webidl.errors.exception({
-              header: 'Cache.#batchCacheOperations',
-              message: 'expected http or https scheme'
-            })
-          }
-
-          // 4.2.6.4
-          if (r.method !== 'GET') {
-            throw webidl.errors.exception({
-              header: 'Cache.#batchCacheOperations',
-              message: 'not get method'
-            })
-          }
-
-          // 4.2.6.5
-          if (operation.options != null) {
-            throw webidl.errors.exception({
-              header: 'Cache.#batchCacheOperations',
-              message: 'options must not be defined'
-            })
-          }
-
-          // 4.2.6.6
-          requestResponses = this.#queryCache(operation.request)
-
-          // 4.2.6.7
-          for (const requestResponse of requestResponses) {
-            const idx = cache.indexOf(requestResponse)
-            assert(idx !== -1)
-
-            // 4.2.6.7.1
-            cache.splice(idx, 1)
-          }
-
-          // 4.2.6.8
-          cache.push([operation.request, operation.response])
-
-          // 4.2.6.10
-          addedItems.push([operation.request, operation.response])
-        }
-
-        // 4.2.7
-        resultList.push([operation.request, operation.response])
-      }
-
-      // 4.3
-      return resultList
-    } catch (e) { // 5.
-      // 5.1
-      this.#relevantRequestResponseList.length = 0
-
-      // 5.2
-      this.#relevantRequestResponseList = backupCache
-
-      // 5.3
-      throw e
-    }
-  }
-
-  /**
-   * @see https://w3c.github.io/ServiceWorker/#query-cache
-   * @param {any} requestQuery
-   * @param {import('../../types/cache').CacheQueryOptions} options
-   * @param {requestResponseList} targetStorage
-   * @returns {requestResponseList}
-   */
-  #queryCache (requestQuery, options, targetStorage) {
-    /** @type {requestResponseList} */
-    const resultList = []
-
-    const storage = targetStorage ?? this.#relevantRequestResponseList
-
-    for (const requestResponse of storage) {
-      const [cachedRequest, cachedResponse] = requestResponse
-      if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) {
-        resultList.push(requestResponse)
-      }
-    }
-
-    return resultList
-  }
-
-  /**
-   * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm
-   * @param {any} requestQuery
-   * @param {any} request
-   * @param {any | null} response
-   * @param {import('../../types/cache').CacheQueryOptions | undefined} options
-   * @returns {boolean}
-   */
-  #requestMatchesCachedItem (requestQuery, request, response = null, options) {
-    // if (options?.ignoreMethod === false && request.method === 'GET') {
-    //   return false
-    // }
-
-    const queryURL = new URL(requestQuery.url)
-
-    const cachedURL = new URL(request.url)
-
-    if (options?.ignoreSearch) {
-      cachedURL.search = ''
-
-      queryURL.search = ''
-    }
-
-    if (!urlEquals(queryURL, cachedURL, true)) {
-      return false
-    }
-
-    if (
-      response == null ||
-      options?.ignoreVary ||
-      !response.headersList.contains('vary')
-    ) {
-      return true
-    }
-
-    const fieldValues = getFieldValues(response.headersList.get('vary'))
-
-    for (const fieldValue of fieldValues) {
-      if (fieldValue === '*') {
-        return false
-      }
-
-      const requestValue = request.headersList.get(fieldValue)
-      const queryValue = requestQuery.headersList.get(fieldValue)
-
-      // If one has the header and the other doesn't, or one has
-      // a different value than the other, return false
-      if (requestValue !== queryValue) {
-        return false
-      }
-    }
-
-    return true
-  }
-}
-
-Object.defineProperties(Cache.prototype, {
-  [Symbol.toStringTag]: {
-    value: 'Cache',
-    configurable: true
-  },
-  match: kEnumerableProperty,
-  matchAll: kEnumerableProperty,
-  add: kEnumerableProperty,
-  addAll: kEnumerableProperty,
-  put: kEnumerableProperty,
-  delete: kEnumerableProperty,
-  keys: kEnumerableProperty
-})
-
-const cacheQueryOptionConverters = [
-  {
-    key: 'ignoreSearch',
-    converter: webidl.converters.boolean,
-    defaultValue: false
-  },
-  {
-    key: 'ignoreMethod',
-    converter: webidl.converters.boolean,
-    defaultValue: false
-  },
-  {
-    key: 'ignoreVary',
-    converter: webidl.converters.boolean,
-    defaultValue: false
-  }
-]
-
-webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters)
-
-webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([
-  ...cacheQueryOptionConverters,
-  {
-    key: 'cacheName',
-    converter: webidl.converters.DOMString
-  }
-])
-
-webidl.converters.Response = webidl.interfaceConverter(Response)
-
-webidl.converters['sequence<RequestInfo>'] = webidl.sequenceConverter(
-  webidl.converters.RequestInfo
-)
-
-module.exports = {
-  Cache
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cache/cachestorage.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/cache/cachestorage.js
deleted file mode 100644
index 7e7f0cf..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cache/cachestorage.js
+++ /dev/null
@@ -1,144 +0,0 @@
-'use strict'
-
-const { kConstruct } = require('./symbols')
-const { Cache } = require('./cache')
-const { webidl } = require('../fetch/webidl')
-const { kEnumerableProperty } = require('../core/util')
-
-class CacheStorage {
-  /**
-   * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map
-   * @type {Map<string, import('./cache').requestResponseList}
-   */
-  #caches = new Map()
-
-  constructor () {
-    if (arguments[0] !== kConstruct) {
-      webidl.illegalConstructor()
-    }
-  }
-
-  async match (request, options = {}) {
-    webidl.brandCheck(this, CacheStorage)
-    webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.match' })
-
-    request = webidl.converters.RequestInfo(request)
-    options = webidl.converters.MultiCacheQueryOptions(options)
-
-    // 1.
-    if (options.cacheName != null) {
-      // 1.1.1.1
-      if (this.#caches.has(options.cacheName)) {
-        // 1.1.1.1.1
-        const cacheList = this.#caches.get(options.cacheName)
-        const cache = new Cache(kConstruct, cacheList)
-
-        return await cache.match(request, options)
-      }
-    } else { // 2.
-      // 2.2
-      for (const cacheList of this.#caches.values()) {
-        const cache = new Cache(kConstruct, cacheList)
-
-        // 2.2.1.2
-        const response = await cache.match(request, options)
-
-        if (response !== undefined) {
-          return response
-        }
-      }
-    }
-  }
-
-  /**
-   * @see https://w3c.github.io/ServiceWorker/#cache-storage-has
-   * @param {string} cacheName
-   * @returns {Promise<boolean>}
-   */
-  async has (cacheName) {
-    webidl.brandCheck(this, CacheStorage)
-    webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' })
-
-    cacheName = webidl.converters.DOMString(cacheName)
-
-    // 2.1.1
-    // 2.2
-    return this.#caches.has(cacheName)
-  }
-
-  /**
-   * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open
-   * @param {string} cacheName
-   * @returns {Promise<Cache>}
-   */
-  async open (cacheName) {
-    webidl.brandCheck(this, CacheStorage)
-    webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' })
-
-    cacheName = webidl.converters.DOMString(cacheName)
-
-    // 2.1
-    if (this.#caches.has(cacheName)) {
-      // await caches.open('v1') !== await caches.open('v1')
-
-      // 2.1.1
-      const cache = this.#caches.get(cacheName)
-
-      // 2.1.1.1
-      return new Cache(kConstruct, cache)
-    }
-
-    // 2.2
-    const cache = []
-
-    // 2.3
-    this.#caches.set(cacheName, cache)
-
-    // 2.4
-    return new Cache(kConstruct, cache)
-  }
-
-  /**
-   * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete
-   * @param {string} cacheName
-   * @returns {Promise<boolean>}
-   */
-  async delete (cacheName) {
-    webidl.brandCheck(this, CacheStorage)
-    webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' })
-
-    cacheName = webidl.converters.DOMString(cacheName)
-
-    return this.#caches.delete(cacheName)
-  }
-
-  /**
-   * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys
-   * @returns {string[]}
-   */
-  async keys () {
-    webidl.brandCheck(this, CacheStorage)
-
-    // 2.1
-    const keys = this.#caches.keys()
-
-    // 2.2
-    return [...keys]
-  }
-}
-
-Object.defineProperties(CacheStorage.prototype, {
-  [Symbol.toStringTag]: {
-    value: 'CacheStorage',
-    configurable: true
-  },
-  match: kEnumerableProperty,
-  has: kEnumerableProperty,
-  open: kEnumerableProperty,
-  delete: kEnumerableProperty,
-  keys: kEnumerableProperty
-})
-
-module.exports = {
-  CacheStorage
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cache/symbols.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/cache/symbols.js
deleted file mode 100644
index 40448d6..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cache/symbols.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict'
-
-module.exports = {
-  kConstruct: require('../core/symbols').kConstruct
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cache/util.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/cache/util.js
deleted file mode 100644
index 44d52b7..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cache/util.js
+++ /dev/null
@@ -1,49 +0,0 @@
-'use strict'
-
-const assert = require('assert')
-const { URLSerializer } = require('../fetch/dataURL')
-const { isValidHeaderName } = require('../fetch/util')
-
-/**
- * @see https://url.spec.whatwg.org/#concept-url-equals
- * @param {URL} A
- * @param {URL} B
- * @param {boolean | undefined} excludeFragment
- * @returns {boolean}
- */
-function urlEquals (A, B, excludeFragment = false) {
-  const serializedA = URLSerializer(A, excludeFragment)
-
-  const serializedB = URLSerializer(B, excludeFragment)
-
-  return serializedA === serializedB
-}
-
-/**
- * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262
- * @param {string} header
- */
-function fieldValues (header) {
-  assert(header !== null)
-
-  const values = []
-
-  for (let value of header.split(',')) {
-    value = value.trim()
-
-    if (!value.length) {
-      continue
-    } else if (!isValidHeaderName(value)) {
-      continue
-    }
-
-    values.push(value)
-  }
-
-  return values
-}
-
-module.exports = {
-  urlEquals,
-  fieldValues
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/client.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/client.js
deleted file mode 100644
index 22cb390..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/client.js
+++ /dev/null
@@ -1,2283 +0,0 @@
-// @ts-check
-
-'use strict'
-
-/* global WebAssembly */
-
-const assert = require('assert')
-const net = require('net')
-const http = require('http')
-const { pipeline } = require('stream')
-const util = require('./core/util')
-const timers = require('./timers')
-const Request = require('./core/request')
-const DispatcherBase = require('./dispatcher-base')
-const {
-  RequestContentLengthMismatchError,
-  ResponseContentLengthMismatchError,
-  InvalidArgumentError,
-  RequestAbortedError,
-  HeadersTimeoutError,
-  HeadersOverflowError,
-  SocketError,
-  InformationalError,
-  BodyTimeoutError,
-  HTTPParserError,
-  ResponseExceededMaxSizeError,
-  ClientDestroyedError
-} = require('./core/errors')
-const buildConnector = require('./core/connect')
-const {
-  kUrl,
-  kReset,
-  kServerName,
-  kClient,
-  kBusy,
-  kParser,
-  kConnect,
-  kBlocking,
-  kResuming,
-  kRunning,
-  kPending,
-  kSize,
-  kWriting,
-  kQueue,
-  kConnected,
-  kConnecting,
-  kNeedDrain,
-  kNoRef,
-  kKeepAliveDefaultTimeout,
-  kHostHeader,
-  kPendingIdx,
-  kRunningIdx,
-  kError,
-  kPipelining,
-  kSocket,
-  kKeepAliveTimeoutValue,
-  kMaxHeadersSize,
-  kKeepAliveMaxTimeout,
-  kKeepAliveTimeoutThreshold,
-  kHeadersTimeout,
-  kBodyTimeout,
-  kStrictContentLength,
-  kConnector,
-  kMaxRedirections,
-  kMaxRequests,
-  kCounter,
-  kClose,
-  kDestroy,
-  kDispatch,
-  kInterceptors,
-  kLocalAddress,
-  kMaxResponseSize,
-  kHTTPConnVersion,
-  // HTTP2
-  kHost,
-  kHTTP2Session,
-  kHTTP2SessionState,
-  kHTTP2BuildRequest,
-  kHTTP2CopyHeaders,
-  kHTTP1BuildRequest
-} = require('./core/symbols')
-
-/** @type {import('http2')} */
-let http2
-try {
-  http2 = require('http2')
-} catch {
-  // @ts-ignore
-  http2 = { constants: {} }
-}
-
-const {
-  constants: {
-    HTTP2_HEADER_AUTHORITY,
-    HTTP2_HEADER_METHOD,
-    HTTP2_HEADER_PATH,
-    HTTP2_HEADER_SCHEME,
-    HTTP2_HEADER_CONTENT_LENGTH,
-    HTTP2_HEADER_EXPECT,
-    HTTP2_HEADER_STATUS
-  }
-} = http2
-
-// Experimental
-let h2ExperimentalWarned = false
-
-const FastBuffer = Buffer[Symbol.species]
-
-const kClosedResolve = Symbol('kClosedResolve')
-
-const channels = {}
-
-try {
-  const diagnosticsChannel = require('diagnostics_channel')
-  channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders')
-  channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect')
-  channels.connectError = diagnosticsChannel.channel('undici:client:connectError')
-  channels.connected = diagnosticsChannel.channel('undici:client:connected')
-} catch {
-  channels.sendHeaders = { hasSubscribers: false }
-  channels.beforeConnect = { hasSubscribers: false }
-  channels.connectError = { hasSubscribers: false }
-  channels.connected = { hasSubscribers: false }
-}
-
-/**
- * @type {import('../types/client').default}
- */
-class Client extends DispatcherBase {
-  /**
-   *
-   * @param {string|URL} url
-   * @param {import('../types/client').Client.Options} options
-   */
-  constructor (url, {
-    interceptors,
-    maxHeaderSize,
-    headersTimeout,
-    socketTimeout,
-    requestTimeout,
-    connectTimeout,
-    bodyTimeout,
-    idleTimeout,
-    keepAlive,
-    keepAliveTimeout,
-    maxKeepAliveTimeout,
-    keepAliveMaxTimeout,
-    keepAliveTimeoutThreshold,
-    socketPath,
-    pipelining,
-    tls,
-    strictContentLength,
-    maxCachedSessions,
-    maxRedirections,
-    connect,
-    maxRequestsPerClient,
-    localAddress,
-    maxResponseSize,
-    autoSelectFamily,
-    autoSelectFamilyAttemptTimeout,
-    // h2
-    allowH2,
-    maxConcurrentStreams
-  } = {}) {
-    super()
-
-    if (keepAlive !== undefined) {
-      throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')
-    }
-
-    if (socketTimeout !== undefined) {
-      throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead')
-    }
-
-    if (requestTimeout !== undefined) {
-      throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead')
-    }
-
-    if (idleTimeout !== undefined) {
-      throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead')
-    }
-
-    if (maxKeepAliveTimeout !== undefined) {
-      throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead')
-    }
-
-    if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {
-      throw new InvalidArgumentError('invalid maxHeaderSize')
-    }
-
-    if (socketPath != null && typeof socketPath !== 'string') {
-      throw new InvalidArgumentError('invalid socketPath')
-    }
-
-    if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {
-      throw new InvalidArgumentError('invalid connectTimeout')
-    }
-
-    if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {
-      throw new InvalidArgumentError('invalid keepAliveTimeout')
-    }
-
-    if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {
-      throw new InvalidArgumentError('invalid keepAliveMaxTimeout')
-    }
-
-    if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {
-      throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold')
-    }
-
-    if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {
-      throw new InvalidArgumentError('headersTimeout must be a positive integer or zero')
-    }
-
-    if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {
-      throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero')
-    }
-
-    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {
-      throw new InvalidArgumentError('connect must be a function or an object')
-    }
-
-    if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {
-      throw new InvalidArgumentError('maxRedirections must be a positive number')
-    }
-
-    if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {
-      throw new InvalidArgumentError('maxRequestsPerClient must be a positive number')
-    }
-
-    if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) {
-      throw new InvalidArgumentError('localAddress must be valid string IP address')
-    }
-
-    if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {
-      throw new InvalidArgumentError('maxResponseSize must be a positive number')
-    }
-
-    if (
-      autoSelectFamilyAttemptTimeout != null &&
-      (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)
-    ) {
-      throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number')
-    }
-
-    // h2
-    if (allowH2 != null && typeof allowH2 !== 'boolean') {
-      throw new InvalidArgumentError('allowH2 must be a valid boolean value')
-    }
-
-    if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {
-      throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0')
-    }
-
-    if (typeof connect !== 'function') {
-      connect = buildConnector({
-        ...tls,
-        maxCachedSessions,
-        allowH2,
-        socketPath,
-        timeout: connectTimeout,
-        ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),
-        ...connect
-      })
-    }
-
-    this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client)
-      ? interceptors.Client
-      : [createRedirectInterceptor({ maxRedirections })]
-    this[kUrl] = util.parseOrigin(url)
-    this[kConnector] = connect
-    this[kSocket] = null
-    this[kPipelining] = pipelining != null ? pipelining : 1
-    this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize
-    this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout
-    this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout
-    this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold
-    this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]
-    this[kServerName] = null
-    this[kLocalAddress] = localAddress != null ? localAddress : null
-    this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming
-    this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming
-    this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\r\n`
-    this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3
-    this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3
-    this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength
-    this[kMaxRedirections] = maxRedirections
-    this[kMaxRequests] = maxRequestsPerClient
-    this[kClosedResolve] = null
-    this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1
-    this[kHTTPConnVersion] = 'h1'
-
-    // HTTP/2
-    this[kHTTP2Session] = null
-    this[kHTTP2SessionState] = !allowH2
-      ? null
-      : {
-        // streams: null, // Fixed queue of streams - For future support of `push`
-          openStreams: 0, // Keep track of them to decide wether or not unref the session
-          maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server
-        }
-    this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`
-
-    // kQueue is built up of 3 sections separated by
-    // the kRunningIdx and kPendingIdx indices.
-    // |   complete   |   running   |   pending   |
-    //                ^ kRunningIdx ^ kPendingIdx ^ kQueue.length
-    // kRunningIdx points to the first running element.
-    // kPendingIdx points to the first pending element.
-    // This implements a fast queue with an amortized
-    // time of O(1).
-
-    this[kQueue] = []
-    this[kRunningIdx] = 0
-    this[kPendingIdx] = 0
-  }
-
-  get pipelining () {
-    return this[kPipelining]
-  }
-
-  set pipelining (value) {
-    this[kPipelining] = value
-    resume(this, true)
-  }
-
-  get [kPending] () {
-    return this[kQueue].length - this[kPendingIdx]
-  }
-
-  get [kRunning] () {
-    return this[kPendingIdx] - this[kRunningIdx]
-  }
-
-  get [kSize] () {
-    return this[kQueue].length - this[kRunningIdx]
-  }
-
-  get [kConnected] () {
-    return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed
-  }
-
-  get [kBusy] () {
-    const socket = this[kSocket]
-    return (
-      (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) ||
-      (this[kSize] >= (this[kPipelining] || 1)) ||
-      this[kPending] > 0
-    )
-  }
-
-  /* istanbul ignore: only used for test */
-  [kConnect] (cb) {
-    connect(this)
-    this.once('connect', cb)
-  }
-
-  [kDispatch] (opts, handler) {
-    const origin = opts.origin || this[kUrl].origin
-
-    const request = this[kHTTPConnVersion] === 'h2'
-      ? Request[kHTTP2BuildRequest](origin, opts, handler)
-      : Request[kHTTP1BuildRequest](origin, opts, handler)
-
-    this[kQueue].push(request)
-    if (this[kResuming]) {
-      // Do nothing.
-    } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {
-      // Wait a tick in case stream/iterator is ended in the same tick.
-      this[kResuming] = 1
-      process.nextTick(resume, this)
-    } else {
-      resume(this, true)
-    }
-
-    if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {
-      this[kNeedDrain] = 2
-    }
-
-    return this[kNeedDrain] < 2
-  }
-
-  async [kClose] () {
-    // TODO: for H2 we need to gracefully flush the remaining enqueued
-    // request and close each stream.
-    return new Promise((resolve) => {
-      if (!this[kSize]) {
-        resolve(null)
-      } else {
-        this[kClosedResolve] = resolve
-      }
-    })
-  }
-
-  async [kDestroy] (err) {
-    return new Promise((resolve) => {
-      const requests = this[kQueue].splice(this[kPendingIdx])
-      for (let i = 0; i < requests.length; i++) {
-        const request = requests[i]
-        errorRequest(this, request, err)
-      }
-
-      const callback = () => {
-        if (this[kClosedResolve]) {
-          // TODO (fix): Should we error here with ClientDestroyedError?
-          this[kClosedResolve]()
-          this[kClosedResolve] = null
-        }
-        resolve()
-      }
-
-      if (this[kHTTP2Session] != null) {
-        util.destroy(this[kHTTP2Session], err)
-        this[kHTTP2Session] = null
-        this[kHTTP2SessionState] = null
-      }
-
-      if (!this[kSocket]) {
-        queueMicrotask(callback)
-      } else {
-        util.destroy(this[kSocket].on('close', callback), err)
-      }
-
-      resume(this)
-    })
-  }
-}
-
-function onHttp2SessionError (err) {
-  assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')
-
-  this[kSocket][kError] = err
-
-  onError(this[kClient], err)
-}
-
-function onHttp2FrameError (type, code, id) {
-  const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`)
-
-  if (id === 0) {
-    this[kSocket][kError] = err
-    onError(this[kClient], err)
-  }
-}
-
-function onHttp2SessionEnd () {
-  util.destroy(this, new SocketError('other side closed'))
-  util.destroy(this[kSocket], new SocketError('other side closed'))
-}
-
-function onHTTP2GoAway (code) {
-  const client = this[kClient]
-  const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`)
-  client[kSocket] = null
-  client[kHTTP2Session] = null
-
-  if (client.destroyed) {
-    assert(this[kPending] === 0)
-
-    // Fail entire queue.
-    const requests = client[kQueue].splice(client[kRunningIdx])
-    for (let i = 0; i < requests.length; i++) {
-      const request = requests[i]
-      errorRequest(this, request, err)
-    }
-  } else if (client[kRunning] > 0) {
-    // Fail head of pipeline.
-    const request = client[kQueue][client[kRunningIdx]]
-    client[kQueue][client[kRunningIdx]++] = null
-
-    errorRequest(client, request, err)
-  }
-
-  client[kPendingIdx] = client[kRunningIdx]
-
-  assert(client[kRunning] === 0)
-
-  client.emit('disconnect',
-    client[kUrl],
-    [client],
-    err
-  )
-
-  resume(client)
-}
-
-const constants = require('./llhttp/constants')
-const createRedirectInterceptor = require('./interceptor/redirectInterceptor')
-const EMPTY_BUF = Buffer.alloc(0)
-
-async function lazyllhttp () {
-  const llhttpWasmData = process.env.JEST_WORKER_ID ? require('./llhttp/llhttp-wasm.js') : undefined
-
-  let mod
-  try {
-    mod = await WebAssembly.compile(Buffer.from(require('./llhttp/llhttp_simd-wasm.js'), 'base64'))
-  } catch (e) {
-    /* istanbul ignore next */
-
-    // We could check if the error was caused by the simd option not
-    // being enabled, but the occurring of this other error
-    // * https://github.com/emscripten-core/emscripten/issues/11495
-    // got me to remove that check to avoid breaking Node 12.
-    mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require('./llhttp/llhttp-wasm.js'), 'base64'))
-  }
-
-  return await WebAssembly.instantiate(mod, {
-    env: {
-      /* eslint-disable camelcase */
-
-      wasm_on_url: (p, at, len) => {
-        /* istanbul ignore next */
-        return 0
-      },
-      wasm_on_status: (p, at, len) => {
-        assert.strictEqual(currentParser.ptr, p)
-        const start = at - currentBufferPtr + currentBufferRef.byteOffset
-        return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
-      },
-      wasm_on_message_begin: (p) => {
-        assert.strictEqual(currentParser.ptr, p)
-        return currentParser.onMessageBegin() || 0
-      },
-      wasm_on_header_field: (p, at, len) => {
-        assert.strictEqual(currentParser.ptr, p)
-        const start = at - currentBufferPtr + currentBufferRef.byteOffset
-        return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
-      },
-      wasm_on_header_value: (p, at, len) => {
-        assert.strictEqual(currentParser.ptr, p)
-        const start = at - currentBufferPtr + currentBufferRef.byteOffset
-        return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
-      },
-      wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {
-        assert.strictEqual(currentParser.ptr, p)
-        return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0
-      },
-      wasm_on_body: (p, at, len) => {
-        assert.strictEqual(currentParser.ptr, p)
-        const start = at - currentBufferPtr + currentBufferRef.byteOffset
-        return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
-      },
-      wasm_on_message_complete: (p) => {
-        assert.strictEqual(currentParser.ptr, p)
-        return currentParser.onMessageComplete() || 0
-      }
-
-      /* eslint-enable camelcase */
-    }
-  })
-}
-
-let llhttpInstance = null
-let llhttpPromise = lazyllhttp()
-llhttpPromise.catch()
-
-let currentParser = null
-let currentBufferRef = null
-let currentBufferSize = 0
-let currentBufferPtr = null
-
-const TIMEOUT_HEADERS = 1
-const TIMEOUT_BODY = 2
-const TIMEOUT_IDLE = 3
-
-class Parser {
-  constructor (client, socket, { exports }) {
-    assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0)
-
-    this.llhttp = exports
-    this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)
-    this.client = client
-    this.socket = socket
-    this.timeout = null
-    this.timeoutValue = null
-    this.timeoutType = null
-    this.statusCode = null
-    this.statusText = ''
-    this.upgrade = false
-    this.headers = []
-    this.headersSize = 0
-    this.headersMaxSize = client[kMaxHeadersSize]
-    this.shouldKeepAlive = false
-    this.paused = false
-    this.resume = this.resume.bind(this)
-
-    this.bytesRead = 0
-
-    this.keepAlive = ''
-    this.contentLength = ''
-    this.connection = ''
-    this.maxResponseSize = client[kMaxResponseSize]
-  }
-
-  setTimeout (value, type) {
-    this.timeoutType = type
-    if (value !== this.timeoutValue) {
-      timers.clearTimeout(this.timeout)
-      if (value) {
-        this.timeout = timers.setTimeout(onParserTimeout, value, this)
-        // istanbul ignore else: only for jest
-        if (this.timeout.unref) {
-          this.timeout.unref()
-        }
-      } else {
-        this.timeout = null
-      }
-      this.timeoutValue = value
-    } else if (this.timeout) {
-      // istanbul ignore else: only for jest
-      if (this.timeout.refresh) {
-        this.timeout.refresh()
-      }
-    }
-  }
-
-  resume () {
-    if (this.socket.destroyed || !this.paused) {
-      return
-    }
-
-    assert(this.ptr != null)
-    assert(currentParser == null)
-
-    this.llhttp.llhttp_resume(this.ptr)
-
-    assert(this.timeoutType === TIMEOUT_BODY)
-    if (this.timeout) {
-      // istanbul ignore else: only for jest
-      if (this.timeout.refresh) {
-        this.timeout.refresh()
-      }
-    }
-
-    this.paused = false
-    this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.
-    this.readMore()
-  }
-
-  readMore () {
-    while (!this.paused && this.ptr) {
-      const chunk = this.socket.read()
-      if (chunk === null) {
-        break
-      }
-      this.execute(chunk)
-    }
-  }
-
-  execute (data) {
-    assert(this.ptr != null)
-    assert(currentParser == null)
-    assert(!this.paused)
-
-    const { socket, llhttp } = this
-
-    if (data.length > currentBufferSize) {
-      if (currentBufferPtr) {
-        llhttp.free(currentBufferPtr)
-      }
-      currentBufferSize = Math.ceil(data.length / 4096) * 4096
-      currentBufferPtr = llhttp.malloc(currentBufferSize)
-    }
-
-    new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data)
-
-    // Call `execute` on the wasm parser.
-    // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,
-    // and finally the length of bytes to parse.
-    // The return value is an error code or `constants.ERROR.OK`.
-    try {
-      let ret
-
-      try {
-        currentBufferRef = data
-        currentParser = this
-        ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length)
-        /* eslint-disable-next-line no-useless-catch */
-      } catch (err) {
-        /* istanbul ignore next: difficult to make a test case for */
-        throw err
-      } finally {
-        currentParser = null
-        currentBufferRef = null
-      }
-
-      const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr
-
-      if (ret === constants.ERROR.PAUSED_UPGRADE) {
-        this.onUpgrade(data.slice(offset))
-      } else if (ret === constants.ERROR.PAUSED) {
-        this.paused = true
-        socket.unshift(data.slice(offset))
-      } else if (ret !== constants.ERROR.OK) {
-        const ptr = llhttp.llhttp_get_error_reason(this.ptr)
-        let message = ''
-        /* istanbul ignore else: difficult to make a test case for */
-        if (ptr) {
-          const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)
-          message =
-            'Response does not match the HTTP/1.1 protocol (' +
-            Buffer.from(llhttp.memory.buffer, ptr, len).toString() +
-            ')'
-        }
-        throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset))
-      }
-    } catch (err) {
-      util.destroy(socket, err)
-    }
-  }
-
-  destroy () {
-    assert(this.ptr != null)
-    assert(currentParser == null)
-
-    this.llhttp.llhttp_free(this.ptr)
-    this.ptr = null
-
-    timers.clearTimeout(this.timeout)
-    this.timeout = null
-    this.timeoutValue = null
-    this.timeoutType = null
-
-    this.paused = false
-  }
-
-  onStatus (buf) {
-    this.statusText = buf.toString()
-  }
-
-  onMessageBegin () {
-    const { socket, client } = this
-
-    /* istanbul ignore next: difficult to make a test case for */
-    if (socket.destroyed) {
-      return -1
-    }
-
-    const request = client[kQueue][client[kRunningIdx]]
-    if (!request) {
-      return -1
-    }
-  }
-
-  onHeaderField (buf) {
-    const len = this.headers.length
-
-    if ((len & 1) === 0) {
-      this.headers.push(buf)
-    } else {
-      this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])
-    }
-
-    this.trackHeader(buf.length)
-  }
-
-  onHeaderValue (buf) {
-    let len = this.headers.length
-
-    if ((len & 1) === 1) {
-      this.headers.push(buf)
-      len += 1
-    } else {
-      this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])
-    }
-
-    const key = this.headers[len - 2]
-    if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') {
-      this.keepAlive += buf.toString()
-    } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') {
-      this.connection += buf.toString()
-    } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') {
-      this.contentLength += buf.toString()
-    }
-
-    this.trackHeader(buf.length)
-  }
-
-  trackHeader (len) {
-    this.headersSize += len
-    if (this.headersSize >= this.headersMaxSize) {
-      util.destroy(this.socket, new HeadersOverflowError())
-    }
-  }
-
-  onUpgrade (head) {
-    const { upgrade, client, socket, headers, statusCode } = this
-
-    assert(upgrade)
-
-    const request = client[kQueue][client[kRunningIdx]]
-    assert(request)
-
-    assert(!socket.destroyed)
-    assert(socket === client[kSocket])
-    assert(!this.paused)
-    assert(request.upgrade || request.method === 'CONNECT')
-
-    this.statusCode = null
-    this.statusText = ''
-    this.shouldKeepAlive = null
-
-    assert(this.headers.length % 2 === 0)
-    this.headers = []
-    this.headersSize = 0
-
-    socket.unshift(head)
-
-    socket[kParser].destroy()
-    socket[kParser] = null
-
-    socket[kClient] = null
-    socket[kError] = null
-    socket
-      .removeListener('error', onSocketError)
-      .removeListener('readable', onSocketReadable)
-      .removeListener('end', onSocketEnd)
-      .removeListener('close', onSocketClose)
-
-    client[kSocket] = null
-    client[kQueue][client[kRunningIdx]++] = null
-    client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))
-
-    try {
-      request.onUpgrade(statusCode, headers, socket)
-    } catch (err) {
-      util.destroy(socket, err)
-    }
-
-    resume(client)
-  }
-
-  onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {
-    const { client, socket, headers, statusText } = this
-
-    /* istanbul ignore next: difficult to make a test case for */
-    if (socket.destroyed) {
-      return -1
-    }
-
-    const request = client[kQueue][client[kRunningIdx]]
-
-    /* istanbul ignore next: difficult to make a test case for */
-    if (!request) {
-      return -1
-    }
-
-    assert(!this.upgrade)
-    assert(this.statusCode < 200)
-
-    if (statusCode === 100) {
-      util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))
-      return -1
-    }
-
-    /* this can only happen if server is misbehaving */
-    if (upgrade && !request.upgrade) {
-      util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))
-      return -1
-    }
-
-    assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS)
-
-    this.statusCode = statusCode
-    this.shouldKeepAlive = (
-      shouldKeepAlive ||
-      // Override llhttp value which does not allow keepAlive for HEAD.
-      (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')
-    )
-
-    if (this.statusCode >= 200) {
-      const bodyTimeout = request.bodyTimeout != null
-        ? request.bodyTimeout
-        : client[kBodyTimeout]
-      this.setTimeout(bodyTimeout, TIMEOUT_BODY)
-    } else if (this.timeout) {
-      // istanbul ignore else: only for jest
-      if (this.timeout.refresh) {
-        this.timeout.refresh()
-      }
-    }
-
-    if (request.method === 'CONNECT') {
-      assert(client[kRunning] === 1)
-      this.upgrade = true
-      return 2
-    }
-
-    if (upgrade) {
-      assert(client[kRunning] === 1)
-      this.upgrade = true
-      return 2
-    }
-
-    assert(this.headers.length % 2 === 0)
-    this.headers = []
-    this.headersSize = 0
-
-    if (this.shouldKeepAlive && client[kPipelining]) {
-      const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null
-
-      if (keepAliveTimeout != null) {
-        const timeout = Math.min(
-          keepAliveTimeout - client[kKeepAliveTimeoutThreshold],
-          client[kKeepAliveMaxTimeout]
-        )
-        if (timeout <= 0) {
-          socket[kReset] = true
-        } else {
-          client[kKeepAliveTimeoutValue] = timeout
-        }
-      } else {
-        client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]
-      }
-    } else {
-      // Stop more requests from being dispatched.
-      socket[kReset] = true
-    }
-
-    const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false
-
-    if (request.aborted) {
-      return -1
-    }
-
-    if (request.method === 'HEAD') {
-      return 1
-    }
-
-    if (statusCode < 200) {
-      return 1
-    }
-
-    if (socket[kBlocking]) {
-      socket[kBlocking] = false
-      resume(client)
-    }
-
-    return pause ? constants.ERROR.PAUSED : 0
-  }
-
-  onBody (buf) {
-    const { client, socket, statusCode, maxResponseSize } = this
-
-    if (socket.destroyed) {
-      return -1
-    }
-
-    const request = client[kQueue][client[kRunningIdx]]
-    assert(request)
-
-    assert.strictEqual(this.timeoutType, TIMEOUT_BODY)
-    if (this.timeout) {
-      // istanbul ignore else: only for jest
-      if (this.timeout.refresh) {
-        this.timeout.refresh()
-      }
-    }
-
-    assert(statusCode >= 200)
-
-    if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {
-      util.destroy(socket, new ResponseExceededMaxSizeError())
-      return -1
-    }
-
-    this.bytesRead += buf.length
-
-    if (request.onData(buf) === false) {
-      return constants.ERROR.PAUSED
-    }
-  }
-
-  onMessageComplete () {
-    const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this
-
-    if (socket.destroyed && (!statusCode || shouldKeepAlive)) {
-      return -1
-    }
-
-    if (upgrade) {
-      return
-    }
-
-    const request = client[kQueue][client[kRunningIdx]]
-    assert(request)
-
-    assert(statusCode >= 100)
-
-    this.statusCode = null
-    this.statusText = ''
-    this.bytesRead = 0
-    this.contentLength = ''
-    this.keepAlive = ''
-    this.connection = ''
-
-    assert(this.headers.length % 2 === 0)
-    this.headers = []
-    this.headersSize = 0
-
-    if (statusCode < 200) {
-      return
-    }
-
-    /* istanbul ignore next: should be handled by llhttp? */
-    if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {
-      util.destroy(socket, new ResponseContentLengthMismatchError())
-      return -1
-    }
-
-    request.onComplete(headers)
-
-    client[kQueue][client[kRunningIdx]++] = null
-
-    if (socket[kWriting]) {
-      assert.strictEqual(client[kRunning], 0)
-      // Response completed before request.
-      util.destroy(socket, new InformationalError('reset'))
-      return constants.ERROR.PAUSED
-    } else if (!shouldKeepAlive) {
-      util.destroy(socket, new InformationalError('reset'))
-      return constants.ERROR.PAUSED
-    } else if (socket[kReset] && client[kRunning] === 0) {
-      // Destroy socket once all requests have completed.
-      // The request at the tail of the pipeline is the one
-      // that requested reset and no further requests should
-      // have been queued since then.
-      util.destroy(socket, new InformationalError('reset'))
-      return constants.ERROR.PAUSED
-    } else if (client[kPipelining] === 1) {
-      // We must wait a full event loop cycle to reuse this socket to make sure
-      // that non-spec compliant servers are not closing the connection even if they
-      // said they won't.
-      setImmediate(resume, client)
-    } else {
-      resume(client)
-    }
-  }
-}
-
-function onParserTimeout (parser) {
-  const { socket, timeoutType, client } = parser
-
-  /* istanbul ignore else */
-  if (timeoutType === TIMEOUT_HEADERS) {
-    if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {
-      assert(!parser.paused, 'cannot be paused while waiting for headers')
-      util.destroy(socket, new HeadersTimeoutError())
-    }
-  } else if (timeoutType === TIMEOUT_BODY) {
-    if (!parser.paused) {
-      util.destroy(socket, new BodyTimeoutError())
-    }
-  } else if (timeoutType === TIMEOUT_IDLE) {
-    assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])
-    util.destroy(socket, new InformationalError('socket idle timeout'))
-  }
-}
-
-function onSocketReadable () {
-  const { [kParser]: parser } = this
-  if (parser) {
-    parser.readMore()
-  }
-}
-
-function onSocketError (err) {
-  const { [kClient]: client, [kParser]: parser } = this
-
-  assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')
-
-  if (client[kHTTPConnVersion] !== 'h2') {
-    // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded
-    // to the user.
-    if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {
-      // We treat all incoming data so for as a valid response.
-      parser.onMessageComplete()
-      return
-    }
-  }
-
-  this[kError] = err
-
-  onError(this[kClient], err)
-}
-
-function onError (client, err) {
-  if (
-    client[kRunning] === 0 &&
-    err.code !== 'UND_ERR_INFO' &&
-    err.code !== 'UND_ERR_SOCKET'
-  ) {
-    // Error is not caused by running request and not a recoverable
-    // socket error.
-
-    assert(client[kPendingIdx] === client[kRunningIdx])
-
-    const requests = client[kQueue].splice(client[kRunningIdx])
-    for (let i = 0; i < requests.length; i++) {
-      const request = requests[i]
-      errorRequest(client, request, err)
-    }
-    assert(client[kSize] === 0)
-  }
-}
-
-function onSocketEnd () {
-  const { [kParser]: parser, [kClient]: client } = this
-
-  if (client[kHTTPConnVersion] !== 'h2') {
-    if (parser.statusCode && !parser.shouldKeepAlive) {
-      // We treat all incoming data so far as a valid response.
-      parser.onMessageComplete()
-      return
-    }
-  }
-
-  util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))
-}
-
-function onSocketClose () {
-  const { [kClient]: client, [kParser]: parser } = this
-
-  if (client[kHTTPConnVersion] === 'h1' && parser) {
-    if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {
-      // We treat all incoming data so far as a valid response.
-      parser.onMessageComplete()
-    }
-
-    this[kParser].destroy()
-    this[kParser] = null
-  }
-
-  const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))
-
-  client[kSocket] = null
-
-  if (client.destroyed) {
-    assert(client[kPending] === 0)
-
-    // Fail entire queue.
-    const requests = client[kQueue].splice(client[kRunningIdx])
-    for (let i = 0; i < requests.length; i++) {
-      const request = requests[i]
-      errorRequest(client, request, err)
-    }
-  } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {
-    // Fail head of pipeline.
-    const request = client[kQueue][client[kRunningIdx]]
-    client[kQueue][client[kRunningIdx]++] = null
-
-    errorRequest(client, request, err)
-  }
-
-  client[kPendingIdx] = client[kRunningIdx]
-
-  assert(client[kRunning] === 0)
-
-  client.emit('disconnect', client[kUrl], [client], err)
-
-  resume(client)
-}
-
-async function connect (client) {
-  assert(!client[kConnecting])
-  assert(!client[kSocket])
-
-  let { host, hostname, protocol, port } = client[kUrl]
-
-  // Resolve ipv6
-  if (hostname[0] === '[') {
-    const idx = hostname.indexOf(']')
-
-    assert(idx !== -1)
-    const ip = hostname.substring(1, idx)
-
-    assert(net.isIP(ip))
-    hostname = ip
-  }
-
-  client[kConnecting] = true
-
-  if (channels.beforeConnect.hasSubscribers) {
-    channels.beforeConnect.publish({
-      connectParams: {
-        host,
-        hostname,
-        protocol,
-        port,
-        servername: client[kServerName],
-        localAddress: client[kLocalAddress]
-      },
-      connector: client[kConnector]
-    })
-  }
-
-  try {
-    const socket = await new Promise((resolve, reject) => {
-      client[kConnector]({
-        host,
-        hostname,
-        protocol,
-        port,
-        servername: client[kServerName],
-        localAddress: client[kLocalAddress]
-      }, (err, socket) => {
-        if (err) {
-          reject(err)
-        } else {
-          resolve(socket)
-        }
-      })
-    })
-
-    if (client.destroyed) {
-      util.destroy(socket.on('error', () => {}), new ClientDestroyedError())
-      return
-    }
-
-    client[kConnecting] = false
-
-    assert(socket)
-
-    const isH2 = socket.alpnProtocol === 'h2'
-    if (isH2) {
-      if (!h2ExperimentalWarned) {
-        h2ExperimentalWarned = true
-        process.emitWarning('H2 support is experimental, expect them to change at any time.', {
-          code: 'UNDICI-H2'
-        })
-      }
-
-      const session = http2.connect(client[kUrl], {
-        createConnection: () => socket,
-        peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams
-      })
-
-      client[kHTTPConnVersion] = 'h2'
-      session[kClient] = client
-      session[kSocket] = socket
-      session.on('error', onHttp2SessionError)
-      session.on('frameError', onHttp2FrameError)
-      session.on('end', onHttp2SessionEnd)
-      session.on('goaway', onHTTP2GoAway)
-      session.on('close', onSocketClose)
-      session.unref()
-
-      client[kHTTP2Session] = session
-      socket[kHTTP2Session] = session
-    } else {
-      if (!llhttpInstance) {
-        llhttpInstance = await llhttpPromise
-        llhttpPromise = null
-      }
-
-      socket[kNoRef] = false
-      socket[kWriting] = false
-      socket[kReset] = false
-      socket[kBlocking] = false
-      socket[kParser] = new Parser(client, socket, llhttpInstance)
-    }
-
-    socket[kCounter] = 0
-    socket[kMaxRequests] = client[kMaxRequests]
-    socket[kClient] = client
-    socket[kError] = null
-
-    socket
-      .on('error', onSocketError)
-      .on('readable', onSocketReadable)
-      .on('end', onSocketEnd)
-      .on('close', onSocketClose)
-
-    client[kSocket] = socket
-
-    if (channels.connected.hasSubscribers) {
-      channels.connected.publish({
-        connectParams: {
-          host,
-          hostname,
-          protocol,
-          port,
-          servername: client[kServerName],
-          localAddress: client[kLocalAddress]
-        },
-        connector: client[kConnector],
-        socket
-      })
-    }
-    client.emit('connect', client[kUrl], [client])
-  } catch (err) {
-    if (client.destroyed) {
-      return
-    }
-
-    client[kConnecting] = false
-
-    if (channels.connectError.hasSubscribers) {
-      channels.connectError.publish({
-        connectParams: {
-          host,
-          hostname,
-          protocol,
-          port,
-          servername: client[kServerName],
-          localAddress: client[kLocalAddress]
-        },
-        connector: client[kConnector],
-        error: err
-      })
-    }
-
-    if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {
-      assert(client[kRunning] === 0)
-      while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {
-        const request = client[kQueue][client[kPendingIdx]++]
-        errorRequest(client, request, err)
-      }
-    } else {
-      onError(client, err)
-    }
-
-    client.emit('connectionError', client[kUrl], [client], err)
-  }
-
-  resume(client)
-}
-
-function emitDrain (client) {
-  client[kNeedDrain] = 0
-  client.emit('drain', client[kUrl], [client])
-}
-
-function resume (client, sync) {
-  if (client[kResuming] === 2) {
-    return
-  }
-
-  client[kResuming] = 2
-
-  _resume(client, sync)
-  client[kResuming] = 0
-
-  if (client[kRunningIdx] > 256) {
-    client[kQueue].splice(0, client[kRunningIdx])
-    client[kPendingIdx] -= client[kRunningIdx]
-    client[kRunningIdx] = 0
-  }
-}
-
-function _resume (client, sync) {
-  while (true) {
-    if (client.destroyed) {
-      assert(client[kPending] === 0)
-      return
-    }
-
-    if (client[kClosedResolve] && !client[kSize]) {
-      client[kClosedResolve]()
-      client[kClosedResolve] = null
-      return
-    }
-
-    const socket = client[kSocket]
-
-    if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') {
-      if (client[kSize] === 0) {
-        if (!socket[kNoRef] && socket.unref) {
-          socket.unref()
-          socket[kNoRef] = true
-        }
-      } else if (socket[kNoRef] && socket.ref) {
-        socket.ref()
-        socket[kNoRef] = false
-      }
-
-      if (client[kSize] === 0) {
-        if (socket[kParser].timeoutType !== TIMEOUT_IDLE) {
-          socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE)
-        }
-      } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {
-        if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {
-          const request = client[kQueue][client[kRunningIdx]]
-          const headersTimeout = request.headersTimeout != null
-            ? request.headersTimeout
-            : client[kHeadersTimeout]
-          socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)
-        }
-      }
-    }
-
-    if (client[kBusy]) {
-      client[kNeedDrain] = 2
-    } else if (client[kNeedDrain] === 2) {
-      if (sync) {
-        client[kNeedDrain] = 1
-        process.nextTick(emitDrain, client)
-      } else {
-        emitDrain(client)
-      }
-      continue
-    }
-
-    if (client[kPending] === 0) {
-      return
-    }
-
-    if (client[kRunning] >= (client[kPipelining] || 1)) {
-      return
-    }
-
-    const request = client[kQueue][client[kPendingIdx]]
-
-    if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) {
-      if (client[kRunning] > 0) {
-        return
-      }
-
-      client[kServerName] = request.servername
-
-      if (socket && socket.servername !== request.servername) {
-        util.destroy(socket, new InformationalError('servername changed'))
-        return
-      }
-    }
-
-    if (client[kConnecting]) {
-      return
-    }
-
-    if (!socket && !client[kHTTP2Session]) {
-      connect(client)
-      return
-    }
-
-    if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) {
-      return
-    }
-
-    if (client[kRunning] > 0 && !request.idempotent) {
-      // Non-idempotent request cannot be retried.
-      // Ensure that no other requests are inflight and
-      // could cause failure.
-      return
-    }
-
-    if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {
-      // Don't dispatch an upgrade until all preceding requests have completed.
-      // A misbehaving server might upgrade the connection before all pipelined
-      // request has completed.
-      return
-    }
-
-    if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&
-      (util.isStream(request.body) || util.isAsyncIterable(request.body))) {
-      // Request with stream or iterator body can error while other requests
-      // are inflight and indirectly error those as well.
-      // Ensure this doesn't happen by waiting for inflight
-      // to complete before dispatching.
-
-      // Request with stream or iterator body cannot be retried.
-      // Ensure that no other requests are inflight and
-      // could cause failure.
-      return
-    }
-
-    if (!request.aborted && write(client, request)) {
-      client[kPendingIdx]++
-    } else {
-      client[kQueue].splice(client[kPendingIdx], 1)
-    }
-  }
-}
-
-// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2
-function shouldSendContentLength (method) {
-  return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'
-}
-
-function write (client, request) {
-  if (client[kHTTPConnVersion] === 'h2') {
-    writeH2(client, client[kHTTP2Session], request)
-    return
-  }
-
-  const { body, method, path, host, upgrade, headers, blocking, reset } = request
-
-  // https://tools.ietf.org/html/rfc7231#section-4.3.1
-  // https://tools.ietf.org/html/rfc7231#section-4.3.2
-  // https://tools.ietf.org/html/rfc7231#section-4.3.5
-
-  // Sending a payload body on a request that does not
-  // expect it can cause undefined behavior on some
-  // servers and corrupt connection state. Do not
-  // re-use the connection for further requests.
-
-  const expectsPayload = (
-    method === 'PUT' ||
-    method === 'POST' ||
-    method === 'PATCH'
-  )
-
-  if (body && typeof body.read === 'function') {
-    // Try to read EOF in order to get length.
-    body.read(0)
-  }
-
-  const bodyLength = util.bodyLength(body)
-
-  let contentLength = bodyLength
-
-  if (contentLength === null) {
-    contentLength = request.contentLength
-  }
-
-  if (contentLength === 0 && !expectsPayload) {
-    // https://tools.ietf.org/html/rfc7230#section-3.3.2
-    // A user agent SHOULD NOT send a Content-Length header field when
-    // the request message does not contain a payload body and the method
-    // semantics do not anticipate such a body.
-
-    contentLength = null
-  }
-
-  // https://github.com/nodejs/undici/issues/2046
-  // A user agent may send a Content-Length header with 0 value, this should be allowed.
-  if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {
-    if (client[kStrictContentLength]) {
-      errorRequest(client, request, new RequestContentLengthMismatchError())
-      return false
-    }
-
-    process.emitWarning(new RequestContentLengthMismatchError())
-  }
-
-  const socket = client[kSocket]
-
-  try {
-    request.onConnect((err) => {
-      if (request.aborted || request.completed) {
-        return
-      }
-
-      errorRequest(client, request, err || new RequestAbortedError())
-
-      util.destroy(socket, new InformationalError('aborted'))
-    })
-  } catch (err) {
-    errorRequest(client, request, err)
-  }
-
-  if (request.aborted) {
-    return false
-  }
-
-  if (method === 'HEAD') {
-    // https://github.com/mcollina/undici/issues/258
-    // Close after a HEAD request to interop with misbehaving servers
-    // that may send a body in the response.
-
-    socket[kReset] = true
-  }
-
-  if (upgrade || method === 'CONNECT') {
-    // On CONNECT or upgrade, block pipeline from dispatching further
-    // requests on this connection.
-
-    socket[kReset] = true
-  }
-
-  if (reset != null) {
-    socket[kReset] = reset
-  }
-
-  if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {
-    socket[kReset] = true
-  }
-
-  if (blocking) {
-    socket[kBlocking] = true
-  }
-
-  let header = `${method} ${path} HTTP/1.1\r\n`
-
-  if (typeof host === 'string') {
-    header += `host: ${host}\r\n`
-  } else {
-    header += client[kHostHeader]
-  }
-
-  if (upgrade) {
-    header += `connection: upgrade\r\nupgrade: ${upgrade}\r\n`
-  } else if (client[kPipelining] && !socket[kReset]) {
-    header += 'connection: keep-alive\r\n'
-  } else {
-    header += 'connection: close\r\n'
-  }
-
-  if (headers) {
-    header += headers
-  }
-
-  if (channels.sendHeaders.hasSubscribers) {
-    channels.sendHeaders.publish({ request, headers: header, socket })
-  }
-
-  /* istanbul ignore else: assertion */
-  if (!body || bodyLength === 0) {
-    if (contentLength === 0) {
-      socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1')
-    } else {
-      assert(contentLength === null, 'no body must not have content length')
-      socket.write(`${header}\r\n`, 'latin1')
-    }
-    request.onRequestSent()
-  } else if (util.isBuffer(body)) {
-    assert(contentLength === body.byteLength, 'buffer body must have content length')
-
-    socket.cork()
-    socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1')
-    socket.write(body)
-    socket.uncork()
-    request.onBodySent(body)
-    request.onRequestSent()
-    if (!expectsPayload) {
-      socket[kReset] = true
-    }
-  } else if (util.isBlobLike(body)) {
-    if (typeof body.stream === 'function') {
-      writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload })
-    } else {
-      writeBlob({ body, client, request, socket, contentLength, header, expectsPayload })
-    }
-  } else if (util.isStream(body)) {
-    writeStream({ body, client, request, socket, contentLength, header, expectsPayload })
-  } else if (util.isIterable(body)) {
-    writeIterable({ body, client, request, socket, contentLength, header, expectsPayload })
-  } else {
-    assert(false)
-  }
-
-  return true
-}
-
-function writeH2 (client, session, request) {
-  const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request
-
-  let headers
-  if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim())
-  else headers = reqHeaders
-
-  if (upgrade) {
-    errorRequest(client, request, new Error('Upgrade not supported for H2'))
-    return false
-  }
-
-  try {
-    // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event?
-    request.onConnect((err) => {
-      if (request.aborted || request.completed) {
-        return
-      }
-
-      errorRequest(client, request, err || new RequestAbortedError())
-    })
-  } catch (err) {
-    errorRequest(client, request, err)
-  }
-
-  if (request.aborted) {
-    return false
-  }
-
-  /** @type {import('node:http2').ClientHttp2Stream} */
-  let stream
-  const h2State = client[kHTTP2SessionState]
-
-  headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]
-  headers[HTTP2_HEADER_METHOD] = method
-
-  if (method === 'CONNECT') {
-    session.ref()
-    // we are already connected, streams are pending, first request
-    // will create a new stream. We trigger a request to create the stream and wait until
-    // `ready` event is triggered
-    // We disabled endStream to allow the user to write to the stream
-    stream = session.request(headers, { endStream: false, signal })
-
-    if (stream.id && !stream.pending) {
-      request.onUpgrade(null, null, stream)
-      ++h2State.openStreams
-    } else {
-      stream.once('ready', () => {
-        request.onUpgrade(null, null, stream)
-        ++h2State.openStreams
-      })
-    }
-
-    stream.once('close', () => {
-      h2State.openStreams -= 1
-      // TODO(HTTP/2): unref only if current streams count is 0
-      if (h2State.openStreams === 0) session.unref()
-    })
-
-    return true
-  }
-
-  // https://tools.ietf.org/html/rfc7540#section-8.3
-  // :path and :scheme headers must be omited when sending CONNECT
-
-  headers[HTTP2_HEADER_PATH] = path
-  headers[HTTP2_HEADER_SCHEME] = 'https'
-
-  // https://tools.ietf.org/html/rfc7231#section-4.3.1
-  // https://tools.ietf.org/html/rfc7231#section-4.3.2
-  // https://tools.ietf.org/html/rfc7231#section-4.3.5
-
-  // Sending a payload body on a request that does not
-  // expect it can cause undefined behavior on some
-  // servers and corrupt connection state. Do not
-  // re-use the connection for further requests.
-
-  const expectsPayload = (
-    method === 'PUT' ||
-    method === 'POST' ||
-    method === 'PATCH'
-  )
-
-  if (body && typeof body.read === 'function') {
-    // Try to read EOF in order to get length.
-    body.read(0)
-  }
-
-  let contentLength = util.bodyLength(body)
-
-  if (contentLength == null) {
-    contentLength = request.contentLength
-  }
-
-  if (contentLength === 0 || !expectsPayload) {
-    // https://tools.ietf.org/html/rfc7230#section-3.3.2
-    // A user agent SHOULD NOT send a Content-Length header field when
-    // the request message does not contain a payload body and the method
-    // semantics do not anticipate such a body.
-
-    contentLength = null
-  }
-
-  // https://github.com/nodejs/undici/issues/2046
-  // A user agent may send a Content-Length header with 0 value, this should be allowed.
-  if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {
-    if (client[kStrictContentLength]) {
-      errorRequest(client, request, new RequestContentLengthMismatchError())
-      return false
-    }
-
-    process.emitWarning(new RequestContentLengthMismatchError())
-  }
-
-  if (contentLength != null) {
-    assert(body, 'no body must not have content length')
-    headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`
-  }
-
-  session.ref()
-
-  const shouldEndStream = method === 'GET' || method === 'HEAD'
-  if (expectContinue) {
-    headers[HTTP2_HEADER_EXPECT] = '100-continue'
-    stream = session.request(headers, { endStream: shouldEndStream, signal })
-
-    stream.once('continue', writeBodyH2)
-  } else {
-    stream = session.request(headers, {
-      endStream: shouldEndStream,
-      signal
-    })
-    writeBodyH2()
-  }
-
-  // Increment counter as we have new several streams open
-  ++h2State.openStreams
-
-  stream.once('response', headers => {
-    const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers
-
-    if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) {
-      stream.pause()
-    }
-  })
-
-  stream.once('end', () => {
-    request.onComplete([])
-  })
-
-  stream.on('data', (chunk) => {
-    if (request.onData(chunk) === false) {
-      stream.pause()
-    }
-  })
-
-  stream.once('close', () => {
-    h2State.openStreams -= 1
-    // TODO(HTTP/2): unref only if current streams count is 0
-    if (h2State.openStreams === 0) {
-      session.unref()
-    }
-  })
-
-  stream.once('error', function (err) {
-    if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {
-      h2State.streams -= 1
-      util.destroy(stream, err)
-    }
-  })
-
-  stream.once('frameError', (type, code) => {
-    const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`)
-    errorRequest(client, request, err)
-
-    if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {
-      h2State.streams -= 1
-      util.destroy(stream, err)
-    }
-  })
-
-  // stream.on('aborted', () => {
-  //   // TODO(HTTP/2): Support aborted
-  // })
-
-  // stream.on('timeout', () => {
-  //   // TODO(HTTP/2): Support timeout
-  // })
-
-  // stream.on('push', headers => {
-  //   // TODO(HTTP/2): Suppor push
-  // })
-
-  // stream.on('trailers', headers => {
-  //   // TODO(HTTP/2): Support trailers
-  // })
-
-  return true
-
-  function writeBodyH2 () {
-    /* istanbul ignore else: assertion */
-    if (!body) {
-      request.onRequestSent()
-    } else if (util.isBuffer(body)) {
-      assert(contentLength === body.byteLength, 'buffer body must have content length')
-      stream.cork()
-      stream.write(body)
-      stream.uncork()
-      stream.end()
-      request.onBodySent(body)
-      request.onRequestSent()
-    } else if (util.isBlobLike(body)) {
-      if (typeof body.stream === 'function') {
-        writeIterable({
-          client,
-          request,
-          contentLength,
-          h2stream: stream,
-          expectsPayload,
-          body: body.stream(),
-          socket: client[kSocket],
-          header: ''
-        })
-      } else {
-        writeBlob({
-          body,
-          client,
-          request,
-          contentLength,
-          expectsPayload,
-          h2stream: stream,
-          header: '',
-          socket: client[kSocket]
-        })
-      }
-    } else if (util.isStream(body)) {
-      writeStream({
-        body,
-        client,
-        request,
-        contentLength,
-        expectsPayload,
-        socket: client[kSocket],
-        h2stream: stream,
-        header: ''
-      })
-    } else if (util.isIterable(body)) {
-      writeIterable({
-        body,
-        client,
-        request,
-        contentLength,
-        expectsPayload,
-        header: '',
-        h2stream: stream,
-        socket: client[kSocket]
-      })
-    } else {
-      assert(false)
-    }
-  }
-}
-
-function writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {
-  assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')
-
-  if (client[kHTTPConnVersion] === 'h2') {
-    // For HTTP/2, is enough to pipe the stream
-    const pipe = pipeline(
-      body,
-      h2stream,
-      (err) => {
-        if (err) {
-          util.destroy(body, err)
-          util.destroy(h2stream, err)
-        } else {
-          request.onRequestSent()
-        }
-      }
-    )
-
-    pipe.on('data', onPipeData)
-    pipe.once('end', () => {
-      pipe.removeListener('data', onPipeData)
-      util.destroy(pipe)
-    })
-
-    function onPipeData (chunk) {
-      request.onBodySent(chunk)
-    }
-
-    return
-  }
-
-  let finished = false
-
-  const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })
-
-  const onData = function (chunk) {
-    if (finished) {
-      return
-    }
-
-    try {
-      if (!writer.write(chunk) && this.pause) {
-        this.pause()
-      }
-    } catch (err) {
-      util.destroy(this, err)
-    }
-  }
-  const onDrain = function () {
-    if (finished) {
-      return
-    }
-
-    if (body.resume) {
-      body.resume()
-    }
-  }
-  const onAbort = function () {
-    if (finished) {
-      return
-    }
-    const err = new RequestAbortedError()
-    queueMicrotask(() => onFinished(err))
-  }
-  const onFinished = function (err) {
-    if (finished) {
-      return
-    }
-
-    finished = true
-
-    assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))
-
-    socket
-      .off('drain', onDrain)
-      .off('error', onFinished)
-
-    body
-      .removeListener('data', onData)
-      .removeListener('end', onFinished)
-      .removeListener('error', onFinished)
-      .removeListener('close', onAbort)
-
-    if (!err) {
-      try {
-        writer.end()
-      } catch (er) {
-        err = er
-      }
-    }
-
-    writer.destroy(err)
-
-    if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {
-      util.destroy(body, err)
-    } else {
-      util.destroy(body)
-    }
-  }
-
-  body
-    .on('data', onData)
-    .on('end', onFinished)
-    .on('error', onFinished)
-    .on('close', onAbort)
-
-  if (body.resume) {
-    body.resume()
-  }
-
-  socket
-    .on('drain', onDrain)
-    .on('error', onFinished)
-}
-
-async function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {
-  assert(contentLength === body.size, 'blob body must have content length')
-
-  const isH2 = client[kHTTPConnVersion] === 'h2'
-  try {
-    if (contentLength != null && contentLength !== body.size) {
-      throw new RequestContentLengthMismatchError()
-    }
-
-    const buffer = Buffer.from(await body.arrayBuffer())
-
-    if (isH2) {
-      h2stream.cork()
-      h2stream.write(buffer)
-      h2stream.uncork()
-    } else {
-      socket.cork()
-      socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1')
-      socket.write(buffer)
-      socket.uncork()
-    }
-
-    request.onBodySent(buffer)
-    request.onRequestSent()
-
-    if (!expectsPayload) {
-      socket[kReset] = true
-    }
-
-    resume(client)
-  } catch (err) {
-    util.destroy(isH2 ? h2stream : socket, err)
-  }
-}
-
-async function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {
-  assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')
-
-  let callback = null
-  function onDrain () {
-    if (callback) {
-      const cb = callback
-      callback = null
-      cb()
-    }
-  }
-
-  const waitForDrain = () => new Promise((resolve, reject) => {
-    assert(callback === null)
-
-    if (socket[kError]) {
-      reject(socket[kError])
-    } else {
-      callback = resolve
-    }
-  })
-
-  if (client[kHTTPConnVersion] === 'h2') {
-    h2stream
-      .on('close', onDrain)
-      .on('drain', onDrain)
-
-    try {
-      // It's up to the user to somehow abort the async iterable.
-      for await (const chunk of body) {
-        if (socket[kError]) {
-          throw socket[kError]
-        }
-
-        const res = h2stream.write(chunk)
-        request.onBodySent(chunk)
-        if (!res) {
-          await waitForDrain()
-        }
-      }
-    } catch (err) {
-      h2stream.destroy(err)
-    } finally {
-      request.onRequestSent()
-      h2stream.end()
-      h2stream
-        .off('close', onDrain)
-        .off('drain', onDrain)
-    }
-
-    return
-  }
-
-  socket
-    .on('close', onDrain)
-    .on('drain', onDrain)
-
-  const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })
-  try {
-    // It's up to the user to somehow abort the async iterable.
-    for await (const chunk of body) {
-      if (socket[kError]) {
-        throw socket[kError]
-      }
-
-      if (!writer.write(chunk)) {
-        await waitForDrain()
-      }
-    }
-
-    writer.end()
-  } catch (err) {
-    writer.destroy(err)
-  } finally {
-    socket
-      .off('close', onDrain)
-      .off('drain', onDrain)
-  }
-}
-
-class AsyncWriter {
-  constructor ({ socket, request, contentLength, client, expectsPayload, header }) {
-    this.socket = socket
-    this.request = request
-    this.contentLength = contentLength
-    this.client = client
-    this.bytesWritten = 0
-    this.expectsPayload = expectsPayload
-    this.header = header
-
-    socket[kWriting] = true
-  }
-
-  write (chunk) {
-    const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this
-
-    if (socket[kError]) {
-      throw socket[kError]
-    }
-
-    if (socket.destroyed) {
-      return false
-    }
-
-    const len = Buffer.byteLength(chunk)
-    if (!len) {
-      return true
-    }
-
-    // We should defer writing chunks.
-    if (contentLength !== null && bytesWritten + len > contentLength) {
-      if (client[kStrictContentLength]) {
-        throw new RequestContentLengthMismatchError()
-      }
-
-      process.emitWarning(new RequestContentLengthMismatchError())
-    }
-
-    socket.cork()
-
-    if (bytesWritten === 0) {
-      if (!expectsPayload) {
-        socket[kReset] = true
-      }
-
-      if (contentLength === null) {
-        socket.write(`${header}transfer-encoding: chunked\r\n`, 'latin1')
-      } else {
-        socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1')
-      }
-    }
-
-    if (contentLength === null) {
-      socket.write(`\r\n${len.toString(16)}\r\n`, 'latin1')
-    }
-
-    this.bytesWritten += len
-
-    const ret = socket.write(chunk)
-
-    socket.uncork()
-
-    request.onBodySent(chunk)
-
-    if (!ret) {
-      if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
-        // istanbul ignore else: only for jest
-        if (socket[kParser].timeout.refresh) {
-          socket[kParser].timeout.refresh()
-        }
-      }
-    }
-
-    return ret
-  }
-
-  end () {
-    const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this
-    request.onRequestSent()
-
-    socket[kWriting] = false
-
-    if (socket[kError]) {
-      throw socket[kError]
-    }
-
-    if (socket.destroyed) {
-      return
-    }
-
-    if (bytesWritten === 0) {
-      if (expectsPayload) {
-        // https://tools.ietf.org/html/rfc7230#section-3.3.2
-        // A user agent SHOULD send a Content-Length in a request message when
-        // no Transfer-Encoding is sent and the request method defines a meaning
-        // for an enclosed payload body.
-
-        socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1')
-      } else {
-        socket.write(`${header}\r\n`, 'latin1')
-      }
-    } else if (contentLength === null) {
-      socket.write('\r\n0\r\n\r\n', 'latin1')
-    }
-
-    if (contentLength !== null && bytesWritten !== contentLength) {
-      if (client[kStrictContentLength]) {
-        throw new RequestContentLengthMismatchError()
-      } else {
-        process.emitWarning(new RequestContentLengthMismatchError())
-      }
-    }
-
-    if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
-      // istanbul ignore else: only for jest
-      if (socket[kParser].timeout.refresh) {
-        socket[kParser].timeout.refresh()
-      }
-    }
-
-    resume(client)
-  }
-
-  destroy (err) {
-    const { socket, client } = this
-
-    socket[kWriting] = false
-
-    if (err) {
-      assert(client[kRunning] <= 1, 'pipeline should only contain this request')
-      util.destroy(socket, err)
-    }
-  }
-}
-
-function errorRequest (client, request, err) {
-  try {
-    request.onError(err)
-    assert(request.aborted)
-  } catch (err) {
-    client.emit('error', err)
-  }
-}
-
-module.exports = Client
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/compat/dispatcher-weakref.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/compat/dispatcher-weakref.js
deleted file mode 100644
index 8cb99e2..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/compat/dispatcher-weakref.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict'
-
-/* istanbul ignore file: only for Node 12 */
-
-const { kConnected, kSize } = require('../core/symbols')
-
-class CompatWeakRef {
-  constructor (value) {
-    this.value = value
-  }
-
-  deref () {
-    return this.value[kConnected] === 0 && this.value[kSize] === 0
-      ? undefined
-      : this.value
-  }
-}
-
-class CompatFinalizer {
-  constructor (finalizer) {
-    this.finalizer = finalizer
-  }
-
-  register (dispatcher, key) {
-    if (dispatcher.on) {
-      dispatcher.on('disconnect', () => {
-        if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {
-          this.finalizer(key)
-        }
-      })
-    }
-  }
-}
-
-module.exports = function () {
-  // FIXME: remove workaround when the Node bug is fixed
-  // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308
-  if (process.env.NODE_V8_COVERAGE) {
-    return {
-      WeakRef: CompatWeakRef,
-      FinalizationRegistry: CompatFinalizer
-    }
-  }
-  return {
-    WeakRef: global.WeakRef || CompatWeakRef,
-    FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cookies/constants.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/cookies/constants.js
deleted file mode 100644
index 85f1fec..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cookies/constants.js
+++ /dev/null
@@ -1,12 +0,0 @@
-'use strict'
-
-// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size
-const maxAttributeValueSize = 1024
-
-// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size
-const maxNameValuePairSize = 4096
-
-module.exports = {
-  maxAttributeValueSize,
-  maxNameValuePairSize
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cookies/index.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/cookies/index.js
deleted file mode 100644
index c9c1f28..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cookies/index.js
+++ /dev/null
@@ -1,184 +0,0 @@
-'use strict'
-
-const { parseSetCookie } = require('./parse')
-const { stringify, getHeadersList } = require('./util')
-const { webidl } = require('../fetch/webidl')
-const { Headers } = require('../fetch/headers')
-
-/**
- * @typedef {Object} Cookie
- * @property {string} name
- * @property {string} value
- * @property {Date|number|undefined} expires
- * @property {number|undefined} maxAge
- * @property {string|undefined} domain
- * @property {string|undefined} path
- * @property {boolean|undefined} secure
- * @property {boolean|undefined} httpOnly
- * @property {'Strict'|'Lax'|'None'} sameSite
- * @property {string[]} unparsed
- */
-
-/**
- * @param {Headers} headers
- * @returns {Record<string, string>}
- */
-function getCookies (headers) {
-  webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' })
-
-  webidl.brandCheck(headers, Headers, { strict: false })
-
-  const cookie = headers.get('cookie')
-  const out = {}
-
-  if (!cookie) {
-    return out
-  }
-
-  for (const piece of cookie.split(';')) {
-    const [name, ...value] = piece.split('=')
-
-    out[name.trim()] = value.join('=')
-  }
-
-  return out
-}
-
-/**
- * @param {Headers} headers
- * @param {string} name
- * @param {{ path?: string, domain?: string }|undefined} attributes
- * @returns {void}
- */
-function deleteCookie (headers, name, attributes) {
-  webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' })
-
-  webidl.brandCheck(headers, Headers, { strict: false })
-
-  name = webidl.converters.DOMString(name)
-  attributes = webidl.converters.DeleteCookieAttributes(attributes)
-
-  // Matches behavior of
-  // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278
-  setCookie(headers, {
-    name,
-    value: '',
-    expires: new Date(0),
-    ...attributes
-  })
-}
-
-/**
- * @param {Headers} headers
- * @returns {Cookie[]}
- */
-function getSetCookies (headers) {
-  webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' })
-
-  webidl.brandCheck(headers, Headers, { strict: false })
-
-  const cookies = getHeadersList(headers).cookies
-
-  if (!cookies) {
-    return []
-  }
-
-  // In older versions of undici, cookies is a list of name:value.
-  return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))
-}
-
-/**
- * @param {Headers} headers
- * @param {Cookie} cookie
- * @returns {void}
- */
-function setCookie (headers, cookie) {
-  webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' })
-
-  webidl.brandCheck(headers, Headers, { strict: false })
-
-  cookie = webidl.converters.Cookie(cookie)
-
-  const str = stringify(cookie)
-
-  if (str) {
-    headers.append('Set-Cookie', stringify(cookie))
-  }
-}
-
-webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([
-  {
-    converter: webidl.nullableConverter(webidl.converters.DOMString),
-    key: 'path',
-    defaultValue: null
-  },
-  {
-    converter: webidl.nullableConverter(webidl.converters.DOMString),
-    key: 'domain',
-    defaultValue: null
-  }
-])
-
-webidl.converters.Cookie = webidl.dictionaryConverter([
-  {
-    converter: webidl.converters.DOMString,
-    key: 'name'
-  },
-  {
-    converter: webidl.converters.DOMString,
-    key: 'value'
-  },
-  {
-    converter: webidl.nullableConverter((value) => {
-      if (typeof value === 'number') {
-        return webidl.converters['unsigned long long'](value)
-      }
-
-      return new Date(value)
-    }),
-    key: 'expires',
-    defaultValue: null
-  },
-  {
-    converter: webidl.nullableConverter(webidl.converters['long long']),
-    key: 'maxAge',
-    defaultValue: null
-  },
-  {
-    converter: webidl.nullableConverter(webidl.converters.DOMString),
-    key: 'domain',
-    defaultValue: null
-  },
-  {
-    converter: webidl.nullableConverter(webidl.converters.DOMString),
-    key: 'path',
-    defaultValue: null
-  },
-  {
-    converter: webidl.nullableConverter(webidl.converters.boolean),
-    key: 'secure',
-    defaultValue: null
-  },
-  {
-    converter: webidl.nullableConverter(webidl.converters.boolean),
-    key: 'httpOnly',
-    defaultValue: null
-  },
-  {
-    converter: webidl.converters.USVString,
-    key: 'sameSite',
-    allowedValues: ['Strict', 'Lax', 'None']
-  },
-  {
-    converter: webidl.sequenceConverter(webidl.converters.DOMString),
-    key: 'unparsed',
-    defaultValue: []
-  }
-])
-
-module.exports = {
-  getCookies,
-  deleteCookie,
-  getSetCookies,
-  setCookie
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cookies/parse.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/cookies/parse.js
deleted file mode 100644
index aae2750..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cookies/parse.js
+++ /dev/null
@@ -1,317 +0,0 @@
-'use strict'
-
-const { maxNameValuePairSize, maxAttributeValueSize } = require('./constants')
-const { isCTLExcludingHtab } = require('./util')
-const { collectASequenceOfCodePointsFast } = require('../fetch/dataURL')
-const assert = require('assert')
-
-/**
- * @description Parses the field-value attributes of a set-cookie header string.
- * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4
- * @param {string} header
- * @returns if the header is invalid, null will be returned
- */
-function parseSetCookie (header) {
-  // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F
-  //    character (CTL characters excluding HTAB): Abort these steps and
-  //    ignore the set-cookie-string entirely.
-  if (isCTLExcludingHtab(header)) {
-    return null
-  }
-
-  let nameValuePair = ''
-  let unparsedAttributes = ''
-  let name = ''
-  let value = ''
-
-  // 2. If the set-cookie-string contains a %x3B (";") character:
-  if (header.includes(';')) {
-    // 1. The name-value-pair string consists of the characters up to,
-    //    but not including, the first %x3B (";"), and the unparsed-
-    //    attributes consist of the remainder of the set-cookie-string
-    //    (including the %x3B (";") in question).
-    const position = { position: 0 }
-
-    nameValuePair = collectASequenceOfCodePointsFast(';', header, position)
-    unparsedAttributes = header.slice(position.position)
-  } else {
-    // Otherwise:
-
-    // 1. The name-value-pair string consists of all the characters
-    //    contained in the set-cookie-string, and the unparsed-
-    //    attributes is the empty string.
-    nameValuePair = header
-  }
-
-  // 3. If the name-value-pair string lacks a %x3D ("=") character, then
-  //    the name string is empty, and the value string is the value of
-  //    name-value-pair.
-  if (!nameValuePair.includes('=')) {
-    value = nameValuePair
-  } else {
-    //    Otherwise, the name string consists of the characters up to, but
-    //    not including, the first %x3D ("=") character, and the (possibly
-    //    empty) value string consists of the characters after the first
-    //    %x3D ("=") character.
-    const position = { position: 0 }
-    name = collectASequenceOfCodePointsFast(
-      '=',
-      nameValuePair,
-      position
-    )
-    value = nameValuePair.slice(position.position + 1)
-  }
-
-  // 4. Remove any leading or trailing WSP characters from the name
-  //    string and the value string.
-  name = name.trim()
-  value = value.trim()
-
-  // 5. If the sum of the lengths of the name string and the value string
-  //    is more than 4096 octets, abort these steps and ignore the set-
-  //    cookie-string entirely.
-  if (name.length + value.length > maxNameValuePairSize) {
-    return null
-  }
-
-  // 6. The cookie-name is the name string, and the cookie-value is the
-  //    value string.
-  return {
-    name, value, ...parseUnparsedAttributes(unparsedAttributes)
-  }
-}
-
-/**
- * Parses the remaining attributes of a set-cookie header
- * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4
- * @param {string} unparsedAttributes
- * @param {[Object.<string, unknown>]={}} cookieAttributeList
- */
-function parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) {
-  // 1. If the unparsed-attributes string is empty, skip the rest of
-  //    these steps.
-  if (unparsedAttributes.length === 0) {
-    return cookieAttributeList
-  }
-
-  // 2. Discard the first character of the unparsed-attributes (which
-  //    will be a %x3B (";") character).
-  assert(unparsedAttributes[0] === ';')
-  unparsedAttributes = unparsedAttributes.slice(1)
-
-  let cookieAv = ''
-
-  // 3. If the remaining unparsed-attributes contains a %x3B (";")
-  //    character:
-  if (unparsedAttributes.includes(';')) {
-    // 1. Consume the characters of the unparsed-attributes up to, but
-    //    not including, the first %x3B (";") character.
-    cookieAv = collectASequenceOfCodePointsFast(
-      ';',
-      unparsedAttributes,
-      { position: 0 }
-    )
-    unparsedAttributes = unparsedAttributes.slice(cookieAv.length)
-  } else {
-    // Otherwise:
-
-    // 1. Consume the remainder of the unparsed-attributes.
-    cookieAv = unparsedAttributes
-    unparsedAttributes = ''
-  }
-
-  // Let the cookie-av string be the characters consumed in this step.
-
-  let attributeName = ''
-  let attributeValue = ''
-
-  // 4. If the cookie-av string contains a %x3D ("=") character:
-  if (cookieAv.includes('=')) {
-    // 1. The (possibly empty) attribute-name string consists of the
-    //    characters up to, but not including, the first %x3D ("=")
-    //    character, and the (possibly empty) attribute-value string
-    //    consists of the characters after the first %x3D ("=")
-    //    character.
-    const position = { position: 0 }
-
-    attributeName = collectASequenceOfCodePointsFast(
-      '=',
-      cookieAv,
-      position
-    )
-    attributeValue = cookieAv.slice(position.position + 1)
-  } else {
-    // Otherwise:
-
-    // 1. The attribute-name string consists of the entire cookie-av
-    //    string, and the attribute-value string is empty.
-    attributeName = cookieAv
-  }
-
-  // 5. Remove any leading or trailing WSP characters from the attribute-
-  //    name string and the attribute-value string.
-  attributeName = attributeName.trim()
-  attributeValue = attributeValue.trim()
-
-  // 6. If the attribute-value is longer than 1024 octets, ignore the
-  //    cookie-av string and return to Step 1 of this algorithm.
-  if (attributeValue.length > maxAttributeValueSize) {
-    return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)
-  }
-
-  // 7. Process the attribute-name and attribute-value according to the
-  //    requirements in the following subsections.  (Notice that
-  //    attributes with unrecognized attribute-names are ignored.)
-  const attributeNameLowercase = attributeName.toLowerCase()
-
-  // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1
-  // If the attribute-name case-insensitively matches the string
-  // "Expires", the user agent MUST process the cookie-av as follows.
-  if (attributeNameLowercase === 'expires') {
-    // 1. Let the expiry-time be the result of parsing the attribute-value
-    //    as cookie-date (see Section 5.1.1).
-    const expiryTime = new Date(attributeValue)
-
-    // 2. If the attribute-value failed to parse as a cookie date, ignore
-    //    the cookie-av.
-
-    cookieAttributeList.expires = expiryTime
-  } else if (attributeNameLowercase === 'max-age') {
-    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2
-    // If the attribute-name case-insensitively matches the string "Max-
-    // Age", the user agent MUST process the cookie-av as follows.
-
-    // 1. If the first character of the attribute-value is not a DIGIT or a
-    //    "-" character, ignore the cookie-av.
-    const charCode = attributeValue.charCodeAt(0)
-
-    if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') {
-      return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)
-    }
-
-    // 2. If the remainder of attribute-value contains a non-DIGIT
-    //    character, ignore the cookie-av.
-    if (!/^\d+$/.test(attributeValue)) {
-      return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)
-    }
-
-    // 3. Let delta-seconds be the attribute-value converted to an integer.
-    const deltaSeconds = Number(attributeValue)
-
-    // 4. Let cookie-age-limit be the maximum age of the cookie (which
-    //    SHOULD be 400 days or less, see Section 4.1.2.2).
-
-    // 5. Set delta-seconds to the smaller of its present value and cookie-
-    //    age-limit.
-    // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs)
-
-    // 6. If delta-seconds is less than or equal to zero (0), let expiry-
-    //    time be the earliest representable date and time.  Otherwise, let
-    //    the expiry-time be the current date and time plus delta-seconds
-    //    seconds.
-    // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds
-
-    // 7. Append an attribute to the cookie-attribute-list with an
-    //    attribute-name of Max-Age and an attribute-value of expiry-time.
-    cookieAttributeList.maxAge = deltaSeconds
-  } else if (attributeNameLowercase === 'domain') {
-    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3
-    // If the attribute-name case-insensitively matches the string "Domain",
-    // the user agent MUST process the cookie-av as follows.
-
-    // 1. Let cookie-domain be the attribute-value.
-    let cookieDomain = attributeValue
-
-    // 2. If cookie-domain starts with %x2E ("."), let cookie-domain be
-    //    cookie-domain without its leading %x2E (".").
-    if (cookieDomain[0] === '.') {
-      cookieDomain = cookieDomain.slice(1)
-    }
-
-    // 3. Convert the cookie-domain to lower case.
-    cookieDomain = cookieDomain.toLowerCase()
-
-    // 4. Append an attribute to the cookie-attribute-list with an
-    //    attribute-name of Domain and an attribute-value of cookie-domain.
-    cookieAttributeList.domain = cookieDomain
-  } else if (attributeNameLowercase === 'path') {
-    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4
-    // If the attribute-name case-insensitively matches the string "Path",
-    // the user agent MUST process the cookie-av as follows.
-
-    // 1. If the attribute-value is empty or if the first character of the
-    //    attribute-value is not %x2F ("/"):
-    let cookiePath = ''
-    if (attributeValue.length === 0 || attributeValue[0] !== '/') {
-      // 1. Let cookie-path be the default-path.
-      cookiePath = '/'
-    } else {
-      // Otherwise:
-
-      // 1. Let cookie-path be the attribute-value.
-      cookiePath = attributeValue
-    }
-
-    // 2. Append an attribute to the cookie-attribute-list with an
-    //    attribute-name of Path and an attribute-value of cookie-path.
-    cookieAttributeList.path = cookiePath
-  } else if (attributeNameLowercase === 'secure') {
-    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5
-    // If the attribute-name case-insensitively matches the string "Secure",
-    // the user agent MUST append an attribute to the cookie-attribute-list
-    // with an attribute-name of Secure and an empty attribute-value.
-
-    cookieAttributeList.secure = true
-  } else if (attributeNameLowercase === 'httponly') {
-    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6
-    // If the attribute-name case-insensitively matches the string
-    // "HttpOnly", the user agent MUST append an attribute to the cookie-
-    // attribute-list with an attribute-name of HttpOnly and an empty
-    // attribute-value.
-
-    cookieAttributeList.httpOnly = true
-  } else if (attributeNameLowercase === 'samesite') {
-    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7
-    // If the attribute-name case-insensitively matches the string
-    // "SameSite", the user agent MUST process the cookie-av as follows:
-
-    // 1. Let enforcement be "Default".
-    let enforcement = 'Default'
-
-    const attributeValueLowercase = attributeValue.toLowerCase()
-    // 2. If cookie-av's attribute-value is a case-insensitive match for
-    //    "None", set enforcement to "None".
-    if (attributeValueLowercase.includes('none')) {
-      enforcement = 'None'
-    }
-
-    // 3. If cookie-av's attribute-value is a case-insensitive match for
-    //    "Strict", set enforcement to "Strict".
-    if (attributeValueLowercase.includes('strict')) {
-      enforcement = 'Strict'
-    }
-
-    // 4. If cookie-av's attribute-value is a case-insensitive match for
-    //    "Lax", set enforcement to "Lax".
-    if (attributeValueLowercase.includes('lax')) {
-      enforcement = 'Lax'
-    }
-
-    // 5. Append an attribute to the cookie-attribute-list with an
-    //    attribute-name of "SameSite" and an attribute-value of
-    //    enforcement.
-    cookieAttributeList.sameSite = enforcement
-  } else {
-    cookieAttributeList.unparsed ??= []
-
-    cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)
-  }
-
-  // 8. Return to Step 1 of this algorithm.
-  return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)
-}
-
-module.exports = {
-  parseSetCookie,
-  parseUnparsedAttributes
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cookies/util.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/cookies/util.js
deleted file mode 100644
index 2290329..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/cookies/util.js
+++ /dev/null
@@ -1,291 +0,0 @@
-'use strict'
-
-const assert = require('assert')
-const { kHeadersList } = require('../core/symbols')
-
-function isCTLExcludingHtab (value) {
-  if (value.length === 0) {
-    return false
-  }
-
-  for (const char of value) {
-    const code = char.charCodeAt(0)
-
-    if (
-      (code >= 0x00 || code <= 0x08) ||
-      (code >= 0x0A || code <= 0x1F) ||
-      code === 0x7F
-    ) {
-      return false
-    }
-  }
-}
-
-/**
- CHAR           = <any US-ASCII character (octets 0 - 127)>
- token          = 1*<any CHAR except CTLs or separators>
- separators     = "(" | ")" | "<" | ">" | "@"
-                | "," | ";" | ":" | "\" | <">
-                | "/" | "[" | "]" | "?" | "="
-                | "{" | "}" | SP | HT
- * @param {string} name
- */
-function validateCookieName (name) {
-  for (const char of name) {
-    const code = char.charCodeAt(0)
-
-    if (
-      (code <= 0x20 || code > 0x7F) ||
-      char === '(' ||
-      char === ')' ||
-      char === '>' ||
-      char === '<' ||
-      char === '@' ||
-      char === ',' ||
-      char === ';' ||
-      char === ':' ||
-      char === '\\' ||
-      char === '"' ||
-      char === '/' ||
-      char === '[' ||
-      char === ']' ||
-      char === '?' ||
-      char === '=' ||
-      char === '{' ||
-      char === '}'
-    ) {
-      throw new Error('Invalid cookie name')
-    }
-  }
-}
-
-/**
- cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )
- cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
-                       ; US-ASCII characters excluding CTLs,
-                       ; whitespace DQUOTE, comma, semicolon,
-                       ; and backslash
- * @param {string} value
- */
-function validateCookieValue (value) {
-  for (const char of value) {
-    const code = char.charCodeAt(0)
-
-    if (
-      code < 0x21 || // exclude CTLs (0-31)
-      code === 0x22 ||
-      code === 0x2C ||
-      code === 0x3B ||
-      code === 0x5C ||
-      code > 0x7E // non-ascii
-    ) {
-      throw new Error('Invalid header value')
-    }
-  }
-}
-
-/**
- * path-value        = <any CHAR except CTLs or ";">
- * @param {string} path
- */
-function validateCookiePath (path) {
-  for (const char of path) {
-    const code = char.charCodeAt(0)
-
-    if (code < 0x21 || char === ';') {
-      throw new Error('Invalid cookie path')
-    }
-  }
-}
-
-/**
- * I have no idea why these values aren't allowed to be honest,
- * but Deno tests these. - Khafra
- * @param {string} domain
- */
-function validateCookieDomain (domain) {
-  if (
-    domain.startsWith('-') ||
-    domain.endsWith('.') ||
-    domain.endsWith('-')
-  ) {
-    throw new Error('Invalid cookie domain')
-  }
-}
-
-/**
- * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1
- * @param {number|Date} date
-  IMF-fixdate  = day-name "," SP date1 SP time-of-day SP GMT
-  ; fixed length/zone/capitalization subset of the format
-  ; see Section 3.3 of [RFC5322]
-
-  day-name     = %x4D.6F.6E ; "Mon", case-sensitive
-              / %x54.75.65 ; "Tue", case-sensitive
-              / %x57.65.64 ; "Wed", case-sensitive
-              / %x54.68.75 ; "Thu", case-sensitive
-              / %x46.72.69 ; "Fri", case-sensitive
-              / %x53.61.74 ; "Sat", case-sensitive
-              / %x53.75.6E ; "Sun", case-sensitive
-  date1        = day SP month SP year
-                  ; e.g., 02 Jun 1982
-
-  day          = 2DIGIT
-  month        = %x4A.61.6E ; "Jan", case-sensitive
-              / %x46.65.62 ; "Feb", case-sensitive
-              / %x4D.61.72 ; "Mar", case-sensitive
-              / %x41.70.72 ; "Apr", case-sensitive
-              / %x4D.61.79 ; "May", case-sensitive
-              / %x4A.75.6E ; "Jun", case-sensitive
-              / %x4A.75.6C ; "Jul", case-sensitive
-              / %x41.75.67 ; "Aug", case-sensitive
-              / %x53.65.70 ; "Sep", case-sensitive
-              / %x4F.63.74 ; "Oct", case-sensitive
-              / %x4E.6F.76 ; "Nov", case-sensitive
-              / %x44.65.63 ; "Dec", case-sensitive
-  year         = 4DIGIT
-
-  GMT          = %x47.4D.54 ; "GMT", case-sensitive
-
-  time-of-day  = hour ":" minute ":" second
-              ; 00:00:00 - 23:59:60 (leap second)
-
-  hour         = 2DIGIT
-  minute       = 2DIGIT
-  second       = 2DIGIT
- */
-function toIMFDate (date) {
-  if (typeof date === 'number') {
-    date = new Date(date)
-  }
-
-  const days = [
-    'Sun', 'Mon', 'Tue', 'Wed',
-    'Thu', 'Fri', 'Sat'
-  ]
-
-  const months = [
-    'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
-    'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
-  ]
-
-  const dayName = days[date.getUTCDay()]
-  const day = date.getUTCDate().toString().padStart(2, '0')
-  const month = months[date.getUTCMonth()]
-  const year = date.getUTCFullYear()
-  const hour = date.getUTCHours().toString().padStart(2, '0')
-  const minute = date.getUTCMinutes().toString().padStart(2, '0')
-  const second = date.getUTCSeconds().toString().padStart(2, '0')
-
-  return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`
-}
-
-/**
- max-age-av        = "Max-Age=" non-zero-digit *DIGIT
-                       ; In practice, both expires-av and max-age-av
-                       ; are limited to dates representable by the
-                       ; user agent.
- * @param {number} maxAge
- */
-function validateCookieMaxAge (maxAge) {
-  if (maxAge < 0) {
-    throw new Error('Invalid cookie max-age')
-  }
-}
-
-/**
- * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1
- * @param {import('./index').Cookie} cookie
- */
-function stringify (cookie) {
-  if (cookie.name.length === 0) {
-    return null
-  }
-
-  validateCookieName(cookie.name)
-  validateCookieValue(cookie.value)
-
-  const out = [`${cookie.name}=${cookie.value}`]
-
-  // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1
-  // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2
-  if (cookie.name.startsWith('__Secure-')) {
-    cookie.secure = true
-  }
-
-  if (cookie.name.startsWith('__Host-')) {
-    cookie.secure = true
-    cookie.domain = null
-    cookie.path = '/'
-  }
-
-  if (cookie.secure) {
-    out.push('Secure')
-  }
-
-  if (cookie.httpOnly) {
-    out.push('HttpOnly')
-  }
-
-  if (typeof cookie.maxAge === 'number') {
-    validateCookieMaxAge(cookie.maxAge)
-    out.push(`Max-Age=${cookie.maxAge}`)
-  }
-
-  if (cookie.domain) {
-    validateCookieDomain(cookie.domain)
-    out.push(`Domain=${cookie.domain}`)
-  }
-
-  if (cookie.path) {
-    validateCookiePath(cookie.path)
-    out.push(`Path=${cookie.path}`)
-  }
-
-  if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') {
-    out.push(`Expires=${toIMFDate(cookie.expires)}`)
-  }
-
-  if (cookie.sameSite) {
-    out.push(`SameSite=${cookie.sameSite}`)
-  }
-
-  for (const part of cookie.unparsed) {
-    if (!part.includes('=')) {
-      throw new Error('Invalid unparsed')
-    }
-
-    const [key, ...value] = part.split('=')
-
-    out.push(`${key.trim()}=${value.join('=')}`)
-  }
-
-  return out.join('; ')
-}
-
-let kHeadersListNode
-
-function getHeadersList (headers) {
-  if (headers[kHeadersList]) {
-    return headers[kHeadersList]
-  }
-
-  if (!kHeadersListNode) {
-    kHeadersListNode = Object.getOwnPropertySymbols(headers).find(
-      (symbol) => symbol.description === 'headers list'
-    )
-
-    assert(kHeadersListNode, 'Headers cannot be parsed')
-  }
-
-  const headersList = headers[kHeadersListNode]
-  assert(headersList)
-
-  return headersList
-}
-
-module.exports = {
-  isCTLExcludingHtab,
-  stringify,
-  getHeadersList
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/connect.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/connect.js
deleted file mode 100644
index 3309117..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/connect.js
+++ /dev/null
@@ -1,189 +0,0 @@
-'use strict'
-
-const net = require('net')
-const assert = require('assert')
-const util = require('./util')
-const { InvalidArgumentError, ConnectTimeoutError } = require('./errors')
-
-let tls // include tls conditionally since it is not always available
-
-// TODO: session re-use does not wait for the first
-// connection to resolve the session and might therefore
-// resolve the same servername multiple times even when
-// re-use is enabled.
-
-let SessionCache
-// FIXME: remove workaround when the Node bug is fixed
-// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308
-if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) {
-  SessionCache = class WeakSessionCache {
-    constructor (maxCachedSessions) {
-      this._maxCachedSessions = maxCachedSessions
-      this._sessionCache = new Map()
-      this._sessionRegistry = new global.FinalizationRegistry((key) => {
-        if (this._sessionCache.size < this._maxCachedSessions) {
-          return
-        }
-
-        const ref = this._sessionCache.get(key)
-        if (ref !== undefined && ref.deref() === undefined) {
-          this._sessionCache.delete(key)
-        }
-      })
-    }
-
-    get (sessionKey) {
-      const ref = this._sessionCache.get(sessionKey)
-      return ref ? ref.deref() : null
-    }
-
-    set (sessionKey, session) {
-      if (this._maxCachedSessions === 0) {
-        return
-      }
-
-      this._sessionCache.set(sessionKey, new WeakRef(session))
-      this._sessionRegistry.register(session, sessionKey)
-    }
-  }
-} else {
-  SessionCache = class SimpleSessionCache {
-    constructor (maxCachedSessions) {
-      this._maxCachedSessions = maxCachedSessions
-      this._sessionCache = new Map()
-    }
-
-    get (sessionKey) {
-      return this._sessionCache.get(sessionKey)
-    }
-
-    set (sessionKey, session) {
-      if (this._maxCachedSessions === 0) {
-        return
-      }
-
-      if (this._sessionCache.size >= this._maxCachedSessions) {
-        // remove the oldest session
-        const { value: oldestKey } = this._sessionCache.keys().next()
-        this._sessionCache.delete(oldestKey)
-      }
-
-      this._sessionCache.set(sessionKey, session)
-    }
-  }
-}
-
-function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) {
-  if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {
-    throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')
-  }
-
-  const options = { path: socketPath, ...opts }
-  const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)
-  timeout = timeout == null ? 10e3 : timeout
-  allowH2 = allowH2 != null ? allowH2 : false
-  return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {
-    let socket
-    if (protocol === 'https:') {
-      if (!tls) {
-        tls = require('tls')
-      }
-      servername = servername || options.servername || util.getServerName(host) || null
-
-      const sessionKey = servername || hostname
-      const session = sessionCache.get(sessionKey) || null
-
-      assert(sessionKey)
-
-      socket = tls.connect({
-        highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...
-        ...options,
-        servername,
-        session,
-        localAddress,
-        // TODO(HTTP/2): Add support for h2c
-        ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],
-        socket: httpSocket, // upgrade socket connection
-        port: port || 443,
-        host: hostname
-      })
-
-      socket
-        .on('session', function (session) {
-          // TODO (fix): Can a session become invalid once established? Don't think so?
-          sessionCache.set(sessionKey, session)
-        })
-    } else {
-      assert(!httpSocket, 'httpSocket can only be sent on TLS update')
-      socket = net.connect({
-        highWaterMark: 64 * 1024, // Same as nodejs fs streams.
-        ...options,
-        localAddress,
-        port: port || 80,
-        host: hostname
-      })
-    }
-
-    // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket
-    if (options.keepAlive == null || options.keepAlive) {
-      const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay
-      socket.setKeepAlive(true, keepAliveInitialDelay)
-    }
-
-    const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout)
-
-    socket
-      .setNoDelay(true)
-      .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {
-        cancelTimeout()
-
-        if (callback) {
-          const cb = callback
-          callback = null
-          cb(null, this)
-        }
-      })
-      .on('error', function (err) {
-        cancelTimeout()
-
-        if (callback) {
-          const cb = callback
-          callback = null
-          cb(err)
-        }
-      })
-
-    return socket
-  }
-}
-
-function setupTimeout (onConnectTimeout, timeout) {
-  if (!timeout) {
-    return () => {}
-  }
-
-  let s1 = null
-  let s2 = null
-  const timeoutId = setTimeout(() => {
-    // setImmediate is added to make sure that we priotorise socket error events over timeouts
-    s1 = setImmediate(() => {
-      if (process.platform === 'win32') {
-        // Windows needs an extra setImmediate probably due to implementation differences in the socket logic
-        s2 = setImmediate(() => onConnectTimeout())
-      } else {
-        onConnectTimeout()
-      }
-    })
-  }, timeout)
-  return () => {
-    clearTimeout(timeoutId)
-    clearImmediate(s1)
-    clearImmediate(s2)
-  }
-}
-
-function onConnectTimeout (socket) {
-  util.destroy(socket, new ConnectTimeoutError())
-}
-
-module.exports = buildConnector
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/errors.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/errors.js
deleted file mode 100644
index 7af704b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/errors.js
+++ /dev/null
@@ -1,230 +0,0 @@
-'use strict'
-
-class UndiciError extends Error {
-  constructor (message) {
-    super(message)
-    this.name = 'UndiciError'
-    this.code = 'UND_ERR'
-  }
-}
-
-class ConnectTimeoutError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, ConnectTimeoutError)
-    this.name = 'ConnectTimeoutError'
-    this.message = message || 'Connect Timeout Error'
-    this.code = 'UND_ERR_CONNECT_TIMEOUT'
-  }
-}
-
-class HeadersTimeoutError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, HeadersTimeoutError)
-    this.name = 'HeadersTimeoutError'
-    this.message = message || 'Headers Timeout Error'
-    this.code = 'UND_ERR_HEADERS_TIMEOUT'
-  }
-}
-
-class HeadersOverflowError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, HeadersOverflowError)
-    this.name = 'HeadersOverflowError'
-    this.message = message || 'Headers Overflow Error'
-    this.code = 'UND_ERR_HEADERS_OVERFLOW'
-  }
-}
-
-class BodyTimeoutError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, BodyTimeoutError)
-    this.name = 'BodyTimeoutError'
-    this.message = message || 'Body Timeout Error'
-    this.code = 'UND_ERR_BODY_TIMEOUT'
-  }
-}
-
-class ResponseStatusCodeError extends UndiciError {
-  constructor (message, statusCode, headers, body) {
-    super(message)
-    Error.captureStackTrace(this, ResponseStatusCodeError)
-    this.name = 'ResponseStatusCodeError'
-    this.message = message || 'Response Status Code Error'
-    this.code = 'UND_ERR_RESPONSE_STATUS_CODE'
-    this.body = body
-    this.status = statusCode
-    this.statusCode = statusCode
-    this.headers = headers
-  }
-}
-
-class InvalidArgumentError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, InvalidArgumentError)
-    this.name = 'InvalidArgumentError'
-    this.message = message || 'Invalid Argument Error'
-    this.code = 'UND_ERR_INVALID_ARG'
-  }
-}
-
-class InvalidReturnValueError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, InvalidReturnValueError)
-    this.name = 'InvalidReturnValueError'
-    this.message = message || 'Invalid Return Value Error'
-    this.code = 'UND_ERR_INVALID_RETURN_VALUE'
-  }
-}
-
-class RequestAbortedError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, RequestAbortedError)
-    this.name = 'AbortError'
-    this.message = message || 'Request aborted'
-    this.code = 'UND_ERR_ABORTED'
-  }
-}
-
-class InformationalError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, InformationalError)
-    this.name = 'InformationalError'
-    this.message = message || 'Request information'
-    this.code = 'UND_ERR_INFO'
-  }
-}
-
-class RequestContentLengthMismatchError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, RequestContentLengthMismatchError)
-    this.name = 'RequestContentLengthMismatchError'
-    this.message = message || 'Request body length does not match content-length header'
-    this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'
-  }
-}
-
-class ResponseContentLengthMismatchError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, ResponseContentLengthMismatchError)
-    this.name = 'ResponseContentLengthMismatchError'
-    this.message = message || 'Response body length does not match content-length header'
-    this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'
-  }
-}
-
-class ClientDestroyedError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, ClientDestroyedError)
-    this.name = 'ClientDestroyedError'
-    this.message = message || 'The client is destroyed'
-    this.code = 'UND_ERR_DESTROYED'
-  }
-}
-
-class ClientClosedError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, ClientClosedError)
-    this.name = 'ClientClosedError'
-    this.message = message || 'The client is closed'
-    this.code = 'UND_ERR_CLOSED'
-  }
-}
-
-class SocketError extends UndiciError {
-  constructor (message, socket) {
-    super(message)
-    Error.captureStackTrace(this, SocketError)
-    this.name = 'SocketError'
-    this.message = message || 'Socket error'
-    this.code = 'UND_ERR_SOCKET'
-    this.socket = socket
-  }
-}
-
-class NotSupportedError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, NotSupportedError)
-    this.name = 'NotSupportedError'
-    this.message = message || 'Not supported error'
-    this.code = 'UND_ERR_NOT_SUPPORTED'
-  }
-}
-
-class BalancedPoolMissingUpstreamError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, NotSupportedError)
-    this.name = 'MissingUpstreamError'
-    this.message = message || 'No upstream has been added to the BalancedPool'
-    this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'
-  }
-}
-
-class HTTPParserError extends Error {
-  constructor (message, code, data) {
-    super(message)
-    Error.captureStackTrace(this, HTTPParserError)
-    this.name = 'HTTPParserError'
-    this.code = code ? `HPE_${code}` : undefined
-    this.data = data ? data.toString() : undefined
-  }
-}
-
-class ResponseExceededMaxSizeError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, ResponseExceededMaxSizeError)
-    this.name = 'ResponseExceededMaxSizeError'
-    this.message = message || 'Response content exceeded max size'
-    this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'
-  }
-}
-
-class RequestRetryError extends UndiciError {
-  constructor (message, code, { headers, data }) {
-    super(message)
-    Error.captureStackTrace(this, RequestRetryError)
-    this.name = 'RequestRetryError'
-    this.message = message || 'Request retry error'
-    this.code = 'UND_ERR_REQ_RETRY'
-    this.statusCode = code
-    this.data = data
-    this.headers = headers
-  }
-}
-
-module.exports = {
-  HTTPParserError,
-  UndiciError,
-  HeadersTimeoutError,
-  HeadersOverflowError,
-  BodyTimeoutError,
-  RequestContentLengthMismatchError,
-  ConnectTimeoutError,
-  ResponseStatusCodeError,
-  InvalidArgumentError,
-  InvalidReturnValueError,
-  RequestAbortedError,
-  ClientDestroyedError,
-  ClientClosedError,
-  InformationalError,
-  SocketError,
-  NotSupportedError,
-  ResponseContentLengthMismatchError,
-  BalancedPoolMissingUpstreamError,
-  ResponseExceededMaxSizeError,
-  RequestRetryError
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/request.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/request.js
deleted file mode 100644
index 3697e6a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/request.js
+++ /dev/null
@@ -1,499 +0,0 @@
-'use strict'
-
-const {
-  InvalidArgumentError,
-  NotSupportedError
-} = require('./errors')
-const assert = require('assert')
-const { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require('./symbols')
-const util = require('./util')
-
-// tokenRegExp and headerCharRegex have been lifted from
-// https://github.com/nodejs/node/blob/main/lib/_http_common.js
-
-/**
- * Verifies that the given val is a valid HTTP token
- * per the rules defined in RFC 7230
- * See https://tools.ietf.org/html/rfc7230#section-3.2.6
- */
-const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/
-
-/**
- * Matches if val contains an invalid field-vchar
- *  field-value    = *( field-content / obs-fold )
- *  field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]
- *  field-vchar    = VCHAR / obs-text
- */
-const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/
-
-// Verifies that a given path is valid does not contain control chars \x00 to \x20
-const invalidPathRegex = /[^\u0021-\u00ff]/
-
-const kHandler = Symbol('handler')
-
-const channels = {}
-
-let extractBody
-
-try {
-  const diagnosticsChannel = require('diagnostics_channel')
-  channels.create = diagnosticsChannel.channel('undici:request:create')
-  channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent')
-  channels.headers = diagnosticsChannel.channel('undici:request:headers')
-  channels.trailers = diagnosticsChannel.channel('undici:request:trailers')
-  channels.error = diagnosticsChannel.channel('undici:request:error')
-} catch {
-  channels.create = { hasSubscribers: false }
-  channels.bodySent = { hasSubscribers: false }
-  channels.headers = { hasSubscribers: false }
-  channels.trailers = { hasSubscribers: false }
-  channels.error = { hasSubscribers: false }
-}
-
-class Request {
-  constructor (origin, {
-    path,
-    method,
-    body,
-    headers,
-    query,
-    idempotent,
-    blocking,
-    upgrade,
-    headersTimeout,
-    bodyTimeout,
-    reset,
-    throwOnError,
-    expectContinue
-  }, handler) {
-    if (typeof path !== 'string') {
-      throw new InvalidArgumentError('path must be a string')
-    } else if (
-      path[0] !== '/' &&
-      !(path.startsWith('http://') || path.startsWith('https://')) &&
-      method !== 'CONNECT'
-    ) {
-      throw new InvalidArgumentError('path must be an absolute URL or start with a slash')
-    } else if (invalidPathRegex.exec(path) !== null) {
-      throw new InvalidArgumentError('invalid request path')
-    }
-
-    if (typeof method !== 'string') {
-      throw new InvalidArgumentError('method must be a string')
-    } else if (tokenRegExp.exec(method) === null) {
-      throw new InvalidArgumentError('invalid request method')
-    }
-
-    if (upgrade && typeof upgrade !== 'string') {
-      throw new InvalidArgumentError('upgrade must be a string')
-    }
-
-    if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {
-      throw new InvalidArgumentError('invalid headersTimeout')
-    }
-
-    if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {
-      throw new InvalidArgumentError('invalid bodyTimeout')
-    }
-
-    if (reset != null && typeof reset !== 'boolean') {
-      throw new InvalidArgumentError('invalid reset')
-    }
-
-    if (expectContinue != null && typeof expectContinue !== 'boolean') {
-      throw new InvalidArgumentError('invalid expectContinue')
-    }
-
-    this.headersTimeout = headersTimeout
-
-    this.bodyTimeout = bodyTimeout
-
-    this.throwOnError = throwOnError === true
-
-    this.method = method
-
-    this.abort = null
-
-    if (body == null) {
-      this.body = null
-    } else if (util.isStream(body)) {
-      this.body = body
-
-      const rState = this.body._readableState
-      if (!rState || !rState.autoDestroy) {
-        this.endHandler = function autoDestroy () {
-          util.destroy(this)
-        }
-        this.body.on('end', this.endHandler)
-      }
-
-      this.errorHandler = err => {
-        if (this.abort) {
-          this.abort(err)
-        } else {
-          this.error = err
-        }
-      }
-      this.body.on('error', this.errorHandler)
-    } else if (util.isBuffer(body)) {
-      this.body = body.byteLength ? body : null
-    } else if (ArrayBuffer.isView(body)) {
-      this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null
-    } else if (body instanceof ArrayBuffer) {
-      this.body = body.byteLength ? Buffer.from(body) : null
-    } else if (typeof body === 'string') {
-      this.body = body.length ? Buffer.from(body) : null
-    } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) {
-      this.body = body
-    } else {
-      throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable')
-    }
-
-    this.completed = false
-
-    this.aborted = false
-
-    this.upgrade = upgrade || null
-
-    this.path = query ? util.buildURL(path, query) : path
-
-    this.origin = origin
-
-    this.idempotent = idempotent == null
-      ? method === 'HEAD' || method === 'GET'
-      : idempotent
-
-    this.blocking = blocking == null ? false : blocking
-
-    this.reset = reset == null ? null : reset
-
-    this.host = null
-
-    this.contentLength = null
-
-    this.contentType = null
-
-    this.headers = ''
-
-    // Only for H2
-    this.expectContinue = expectContinue != null ? expectContinue : false
-
-    if (Array.isArray(headers)) {
-      if (headers.length % 2 !== 0) {
-        throw new InvalidArgumentError('headers array must be even')
-      }
-      for (let i = 0; i < headers.length; i += 2) {
-        processHeader(this, headers[i], headers[i + 1])
-      }
-    } else if (headers && typeof headers === 'object') {
-      const keys = Object.keys(headers)
-      for (let i = 0; i < keys.length; i++) {
-        const key = keys[i]
-        processHeader(this, key, headers[key])
-      }
-    } else if (headers != null) {
-      throw new InvalidArgumentError('headers must be an object or an array')
-    }
-
-    if (util.isFormDataLike(this.body)) {
-      if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) {
-        throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.')
-      }
-
-      if (!extractBody) {
-        extractBody = require('../fetch/body.js').extractBody
-      }
-
-      const [bodyStream, contentType] = extractBody(body)
-      if (this.contentType == null) {
-        this.contentType = contentType
-        this.headers += `content-type: ${contentType}\r\n`
-      }
-      this.body = bodyStream.stream
-      this.contentLength = bodyStream.length
-    } else if (util.isBlobLike(body) && this.contentType == null && body.type) {
-      this.contentType = body.type
-      this.headers += `content-type: ${body.type}\r\n`
-    }
-
-    util.validateHandler(handler, method, upgrade)
-
-    this.servername = util.getServerName(this.host)
-
-    this[kHandler] = handler
-
-    if (channels.create.hasSubscribers) {
-      channels.create.publish({ request: this })
-    }
-  }
-
-  onBodySent (chunk) {
-    if (this[kHandler].onBodySent) {
-      try {
-        return this[kHandler].onBodySent(chunk)
-      } catch (err) {
-        this.abort(err)
-      }
-    }
-  }
-
-  onRequestSent () {
-    if (channels.bodySent.hasSubscribers) {
-      channels.bodySent.publish({ request: this })
-    }
-
-    if (this[kHandler].onRequestSent) {
-      try {
-        return this[kHandler].onRequestSent()
-      } catch (err) {
-        this.abort(err)
-      }
-    }
-  }
-
-  onConnect (abort) {
-    assert(!this.aborted)
-    assert(!this.completed)
-
-    if (this.error) {
-      abort(this.error)
-    } else {
-      this.abort = abort
-      return this[kHandler].onConnect(abort)
-    }
-  }
-
-  onHeaders (statusCode, headers, resume, statusText) {
-    assert(!this.aborted)
-    assert(!this.completed)
-
-    if (channels.headers.hasSubscribers) {
-      channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })
-    }
-
-    try {
-      return this[kHandler].onHeaders(statusCode, headers, resume, statusText)
-    } catch (err) {
-      this.abort(err)
-    }
-  }
-
-  onData (chunk) {
-    assert(!this.aborted)
-    assert(!this.completed)
-
-    try {
-      return this[kHandler].onData(chunk)
-    } catch (err) {
-      this.abort(err)
-      return false
-    }
-  }
-
-  onUpgrade (statusCode, headers, socket) {
-    assert(!this.aborted)
-    assert(!this.completed)
-
-    return this[kHandler].onUpgrade(statusCode, headers, socket)
-  }
-
-  onComplete (trailers) {
-    this.onFinally()
-
-    assert(!this.aborted)
-
-    this.completed = true
-    if (channels.trailers.hasSubscribers) {
-      channels.trailers.publish({ request: this, trailers })
-    }
-
-    try {
-      return this[kHandler].onComplete(trailers)
-    } catch (err) {
-      // TODO (fix): This might be a bad idea?
-      this.onError(err)
-    }
-  }
-
-  onError (error) {
-    this.onFinally()
-
-    if (channels.error.hasSubscribers) {
-      channels.error.publish({ request: this, error })
-    }
-
-    if (this.aborted) {
-      return
-    }
-    this.aborted = true
-
-    return this[kHandler].onError(error)
-  }
-
-  onFinally () {
-    if (this.errorHandler) {
-      this.body.off('error', this.errorHandler)
-      this.errorHandler = null
-    }
-
-    if (this.endHandler) {
-      this.body.off('end', this.endHandler)
-      this.endHandler = null
-    }
-  }
-
-  // TODO: adjust to support H2
-  addHeader (key, value) {
-    processHeader(this, key, value)
-    return this
-  }
-
-  static [kHTTP1BuildRequest] (origin, opts, handler) {
-    // TODO: Migrate header parsing here, to make Requests
-    // HTTP agnostic
-    return new Request(origin, opts, handler)
-  }
-
-  static [kHTTP2BuildRequest] (origin, opts, handler) {
-    const headers = opts.headers
-    opts = { ...opts, headers: null }
-
-    const request = new Request(origin, opts, handler)
-
-    request.headers = {}
-
-    if (Array.isArray(headers)) {
-      if (headers.length % 2 !== 0) {
-        throw new InvalidArgumentError('headers array must be even')
-      }
-      for (let i = 0; i < headers.length; i += 2) {
-        processHeader(request, headers[i], headers[i + 1], true)
-      }
-    } else if (headers && typeof headers === 'object') {
-      const keys = Object.keys(headers)
-      for (let i = 0; i < keys.length; i++) {
-        const key = keys[i]
-        processHeader(request, key, headers[key], true)
-      }
-    } else if (headers != null) {
-      throw new InvalidArgumentError('headers must be an object or an array')
-    }
-
-    return request
-  }
-
-  static [kHTTP2CopyHeaders] (raw) {
-    const rawHeaders = raw.split('\r\n')
-    const headers = {}
-
-    for (const header of rawHeaders) {
-      const [key, value] = header.split(': ')
-
-      if (value == null || value.length === 0) continue
-
-      if (headers[key]) headers[key] += `,${value}`
-      else headers[key] = value
-    }
-
-    return headers
-  }
-}
-
-function processHeaderValue (key, val, skipAppend) {
-  if (val && typeof val === 'object') {
-    throw new InvalidArgumentError(`invalid ${key} header`)
-  }
-
-  val = val != null ? `${val}` : ''
-
-  if (headerCharRegex.exec(val) !== null) {
-    throw new InvalidArgumentError(`invalid ${key} header`)
-  }
-
-  return skipAppend ? val : `${key}: ${val}\r\n`
-}
-
-function processHeader (request, key, val, skipAppend = false) {
-  if (val && (typeof val === 'object' && !Array.isArray(val))) {
-    throw new InvalidArgumentError(`invalid ${key} header`)
-  } else if (val === undefined) {
-    return
-  }
-
-  if (
-    request.host === null &&
-    key.length === 4 &&
-    key.toLowerCase() === 'host'
-  ) {
-    if (headerCharRegex.exec(val) !== null) {
-      throw new InvalidArgumentError(`invalid ${key} header`)
-    }
-    // Consumed by Client
-    request.host = val
-  } else if (
-    request.contentLength === null &&
-    key.length === 14 &&
-    key.toLowerCase() === 'content-length'
-  ) {
-    request.contentLength = parseInt(val, 10)
-    if (!Number.isFinite(request.contentLength)) {
-      throw new InvalidArgumentError('invalid content-length header')
-    }
-  } else if (
-    request.contentType === null &&
-    key.length === 12 &&
-    key.toLowerCase() === 'content-type'
-  ) {
-    request.contentType = val
-    if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)
-    else request.headers += processHeaderValue(key, val)
-  } else if (
-    key.length === 17 &&
-    key.toLowerCase() === 'transfer-encoding'
-  ) {
-    throw new InvalidArgumentError('invalid transfer-encoding header')
-  } else if (
-    key.length === 10 &&
-    key.toLowerCase() === 'connection'
-  ) {
-    const value = typeof val === 'string' ? val.toLowerCase() : null
-    if (value !== 'close' && value !== 'keep-alive') {
-      throw new InvalidArgumentError('invalid connection header')
-    } else if (value === 'close') {
-      request.reset = true
-    }
-  } else if (
-    key.length === 10 &&
-    key.toLowerCase() === 'keep-alive'
-  ) {
-    throw new InvalidArgumentError('invalid keep-alive header')
-  } else if (
-    key.length === 7 &&
-    key.toLowerCase() === 'upgrade'
-  ) {
-    throw new InvalidArgumentError('invalid upgrade header')
-  } else if (
-    key.length === 6 &&
-    key.toLowerCase() === 'expect'
-  ) {
-    throw new NotSupportedError('expect header not supported')
-  } else if (tokenRegExp.exec(key) === null) {
-    throw new InvalidArgumentError('invalid header key')
-  } else {
-    if (Array.isArray(val)) {
-      for (let i = 0; i < val.length; i++) {
-        if (skipAppend) {
-          if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`
-          else request.headers[key] = processHeaderValue(key, val[i], skipAppend)
-        } else {
-          request.headers += processHeaderValue(key, val[i])
-        }
-      }
-    } else {
-      if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)
-      else request.headers += processHeaderValue(key, val)
-    }
-  }
-}
-
-module.exports = Request
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/symbols.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/symbols.js
deleted file mode 100644
index 68d8566..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/symbols.js
+++ /dev/null
@@ -1,63 +0,0 @@
-module.exports = {
-  kClose: Symbol('close'),
-  kDestroy: Symbol('destroy'),
-  kDispatch: Symbol('dispatch'),
-  kUrl: Symbol('url'),
-  kWriting: Symbol('writing'),
-  kResuming: Symbol('resuming'),
-  kQueue: Symbol('queue'),
-  kConnect: Symbol('connect'),
-  kConnecting: Symbol('connecting'),
-  kHeadersList: Symbol('headers list'),
-  kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),
-  kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),
-  kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),
-  kKeepAliveTimeoutValue: Symbol('keep alive timeout'),
-  kKeepAlive: Symbol('keep alive'),
-  kHeadersTimeout: Symbol('headers timeout'),
-  kBodyTimeout: Symbol('body timeout'),
-  kServerName: Symbol('server name'),
-  kLocalAddress: Symbol('local address'),
-  kHost: Symbol('host'),
-  kNoRef: Symbol('no ref'),
-  kBodyUsed: Symbol('used'),
-  kRunning: Symbol('running'),
-  kBlocking: Symbol('blocking'),
-  kPending: Symbol('pending'),
-  kSize: Symbol('size'),
-  kBusy: Symbol('busy'),
-  kQueued: Symbol('queued'),
-  kFree: Symbol('free'),
-  kConnected: Symbol('connected'),
-  kClosed: Symbol('closed'),
-  kNeedDrain: Symbol('need drain'),
-  kReset: Symbol('reset'),
-  kDestroyed: Symbol.for('nodejs.stream.destroyed'),
-  kMaxHeadersSize: Symbol('max headers size'),
-  kRunningIdx: Symbol('running index'),
-  kPendingIdx: Symbol('pending index'),
-  kError: Symbol('error'),
-  kClients: Symbol('clients'),
-  kClient: Symbol('client'),
-  kParser: Symbol('parser'),
-  kOnDestroyed: Symbol('destroy callbacks'),
-  kPipelining: Symbol('pipelining'),
-  kSocket: Symbol('socket'),
-  kHostHeader: Symbol('host header'),
-  kConnector: Symbol('connector'),
-  kStrictContentLength: Symbol('strict content length'),
-  kMaxRedirections: Symbol('maxRedirections'),
-  kMaxRequests: Symbol('maxRequestsPerClient'),
-  kProxy: Symbol('proxy agent options'),
-  kCounter: Symbol('socket request counter'),
-  kInterceptors: Symbol('dispatch interceptors'),
-  kMaxResponseSize: Symbol('max response size'),
-  kHTTP2Session: Symbol('http2Session'),
-  kHTTP2SessionState: Symbol('http2Session state'),
-  kHTTP2BuildRequest: Symbol('http2 build request'),
-  kHTTP1BuildRequest: Symbol('http1 build request'),
-  kHTTP2CopyHeaders: Symbol('http2 copy headers'),
-  kHTTPConnVersion: Symbol('http connection version'),
-  kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),
-  kConstruct: Symbol('constructable')
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/util.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/util.js
deleted file mode 100644
index 8d5450b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/core/util.js
+++ /dev/null
@@ -1,511 +0,0 @@
-'use strict'
-
-const assert = require('assert')
-const { kDestroyed, kBodyUsed } = require('./symbols')
-const { IncomingMessage } = require('http')
-const stream = require('stream')
-const net = require('net')
-const { InvalidArgumentError } = require('./errors')
-const { Blob } = require('buffer')
-const nodeUtil = require('util')
-const { stringify } = require('querystring')
-
-const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))
-
-function nop () {}
-
-function isStream (obj) {
-  return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'
-}
-
-// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License)
-function isBlobLike (object) {
-  return (Blob && object instanceof Blob) || (
-    object &&
-    typeof object === 'object' &&
-    (typeof object.stream === 'function' ||
-      typeof object.arrayBuffer === 'function') &&
-    /^(Blob|File)$/.test(object[Symbol.toStringTag])
-  )
-}
-
-function buildURL (url, queryParams) {
-  if (url.includes('?') || url.includes('#')) {
-    throw new Error('Query params cannot be passed when url already contains "?" or "#".')
-  }
-
-  const stringified = stringify(queryParams)
-
-  if (stringified) {
-    url += '?' + stringified
-  }
-
-  return url
-}
-
-function parseURL (url) {
-  if (typeof url === 'string') {
-    url = new URL(url)
-
-    if (!/^https?:/.test(url.origin || url.protocol)) {
-      throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')
-    }
-
-    return url
-  }
-
-  if (!url || typeof url !== 'object') {
-    throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.')
-  }
-
-  if (!/^https?:/.test(url.origin || url.protocol)) {
-    throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')
-  }
-
-  if (!(url instanceof URL)) {
-    if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) {
-      throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.')
-    }
-
-    if (url.path != null && typeof url.path !== 'string') {
-      throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.')
-    }
-
-    if (url.pathname != null && typeof url.pathname !== 'string') {
-      throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.')
-    }
-
-    if (url.hostname != null && typeof url.hostname !== 'string') {
-      throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.')
-    }
-
-    if (url.origin != null && typeof url.origin !== 'string') {
-      throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.')
-    }
-
-    const port = url.port != null
-      ? url.port
-      : (url.protocol === 'https:' ? 443 : 80)
-    let origin = url.origin != null
-      ? url.origin
-      : `${url.protocol}//${url.hostname}:${port}`
-    let path = url.path != null
-      ? url.path
-      : `${url.pathname || ''}${url.search || ''}`
-
-    if (origin.endsWith('/')) {
-      origin = origin.substring(0, origin.length - 1)
-    }
-
-    if (path && !path.startsWith('/')) {
-      path = `/${path}`
-    }
-    // new URL(path, origin) is unsafe when `path` contains an absolute URL
-    // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL:
-    // If first parameter is a relative URL, second param is required, and will be used as the base URL.
-    // If first parameter is an absolute URL, a given second param will be ignored.
-    url = new URL(origin + path)
-  }
-
-  return url
-}
-
-function parseOrigin (url) {
-  url = parseURL(url)
-
-  if (url.pathname !== '/' || url.search || url.hash) {
-    throw new InvalidArgumentError('invalid url')
-  }
-
-  return url
-}
-
-function getHostname (host) {
-  if (host[0] === '[') {
-    const idx = host.indexOf(']')
-
-    assert(idx !== -1)
-    return host.substring(1, idx)
-  }
-
-  const idx = host.indexOf(':')
-  if (idx === -1) return host
-
-  return host.substring(0, idx)
-}
-
-// IP addresses are not valid server names per RFC6066
-// > Currently, the only server names supported are DNS hostnames
-function getServerName (host) {
-  if (!host) {
-    return null
-  }
-
-  assert.strictEqual(typeof host, 'string')
-
-  const servername = getHostname(host)
-  if (net.isIP(servername)) {
-    return ''
-  }
-
-  return servername
-}
-
-function deepClone (obj) {
-  return JSON.parse(JSON.stringify(obj))
-}
-
-function isAsyncIterable (obj) {
-  return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function')
-}
-
-function isIterable (obj) {
-  return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function'))
-}
-
-function bodyLength (body) {
-  if (body == null) {
-    return 0
-  } else if (isStream(body)) {
-    const state = body._readableState
-    return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length)
-      ? state.length
-      : null
-  } else if (isBlobLike(body)) {
-    return body.size != null ? body.size : null
-  } else if (isBuffer(body)) {
-    return body.byteLength
-  }
-
-  return null
-}
-
-function isDestroyed (stream) {
-  return !stream || !!(stream.destroyed || stream[kDestroyed])
-}
-
-function isReadableAborted (stream) {
-  const state = stream && stream._readableState
-  return isDestroyed(stream) && state && !state.endEmitted
-}
-
-function destroy (stream, err) {
-  if (stream == null || !isStream(stream) || isDestroyed(stream)) {
-    return
-  }
-
-  if (typeof stream.destroy === 'function') {
-    if (Object.getPrototypeOf(stream).constructor === IncomingMessage) {
-      // See: https://github.com/nodejs/node/pull/38505/files
-      stream.socket = null
-    }
-
-    stream.destroy(err)
-  } else if (err) {
-    process.nextTick((stream, err) => {
-      stream.emit('error', err)
-    }, stream, err)
-  }
-
-  if (stream.destroyed !== true) {
-    stream[kDestroyed] = true
-  }
-}
-
-const KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/
-function parseKeepAliveTimeout (val) {
-  const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR)
-  return m ? parseInt(m[1], 10) * 1000 : null
-}
-
-function parseHeaders (headers, obj = {}) {
-  // For H2 support
-  if (!Array.isArray(headers)) return headers
-
-  for (let i = 0; i < headers.length; i += 2) {
-    const key = headers[i].toString().toLowerCase()
-    let val = obj[key]
-
-    if (!val) {
-      if (Array.isArray(headers[i + 1])) {
-        obj[key] = headers[i + 1].map(x => x.toString('utf8'))
-      } else {
-        obj[key] = headers[i + 1].toString('utf8')
-      }
-    } else {
-      if (!Array.isArray(val)) {
-        val = [val]
-        obj[key] = val
-      }
-      val.push(headers[i + 1].toString('utf8'))
-    }
-  }
-
-  // See https://github.com/nodejs/node/pull/46528
-  if ('content-length' in obj && 'content-disposition' in obj) {
-    obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1')
-  }
-
-  return obj
-}
-
-function parseRawHeaders (headers) {
-  const ret = []
-  let hasContentLength = false
-  let contentDispositionIdx = -1
-
-  for (let n = 0; n < headers.length; n += 2) {
-    const key = headers[n + 0].toString()
-    const val = headers[n + 1].toString('utf8')
-
-    if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) {
-      ret.push(key, val)
-      hasContentLength = true
-    } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) {
-      contentDispositionIdx = ret.push(key, val) - 1
-    } else {
-      ret.push(key, val)
-    }
-  }
-
-  // See https://github.com/nodejs/node/pull/46528
-  if (hasContentLength && contentDispositionIdx !== -1) {
-    ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1')
-  }
-
-  return ret
-}
-
-function isBuffer (buffer) {
-  // See, https://github.com/mcollina/undici/pull/319
-  return buffer instanceof Uint8Array || Buffer.isBuffer(buffer)
-}
-
-function validateHandler (handler, method, upgrade) {
-  if (!handler || typeof handler !== 'object') {
-    throw new InvalidArgumentError('handler must be an object')
-  }
-
-  if (typeof handler.onConnect !== 'function') {
-    throw new InvalidArgumentError('invalid onConnect method')
-  }
-
-  if (typeof handler.onError !== 'function') {
-    throw new InvalidArgumentError('invalid onError method')
-  }
-
-  if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) {
-    throw new InvalidArgumentError('invalid onBodySent method')
-  }
-
-  if (upgrade || method === 'CONNECT') {
-    if (typeof handler.onUpgrade !== 'function') {
-      throw new InvalidArgumentError('invalid onUpgrade method')
-    }
-  } else {
-    if (typeof handler.onHeaders !== 'function') {
-      throw new InvalidArgumentError('invalid onHeaders method')
-    }
-
-    if (typeof handler.onData !== 'function') {
-      throw new InvalidArgumentError('invalid onData method')
-    }
-
-    if (typeof handler.onComplete !== 'function') {
-      throw new InvalidArgumentError('invalid onComplete method')
-    }
-  }
-}
-
-// A body is disturbed if it has been read from and it cannot
-// be re-used without losing state or data.
-function isDisturbed (body) {
-  return !!(body && (
-    stream.isDisturbed
-      ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed?
-      : body[kBodyUsed] ||
-        body.readableDidRead ||
-        (body._readableState && body._readableState.dataEmitted) ||
-        isReadableAborted(body)
-  ))
-}
-
-function isErrored (body) {
-  return !!(body && (
-    stream.isErrored
-      ? stream.isErrored(body)
-      : /state: 'errored'/.test(nodeUtil.inspect(body)
-      )))
-}
-
-function isReadable (body) {
-  return !!(body && (
-    stream.isReadable
-      ? stream.isReadable(body)
-      : /state: 'readable'/.test(nodeUtil.inspect(body)
-      )))
-}
-
-function getSocketInfo (socket) {
-  return {
-    localAddress: socket.localAddress,
-    localPort: socket.localPort,
-    remoteAddress: socket.remoteAddress,
-    remotePort: socket.remotePort,
-    remoteFamily: socket.remoteFamily,
-    timeout: socket.timeout,
-    bytesWritten: socket.bytesWritten,
-    bytesRead: socket.bytesRead
-  }
-}
-
-async function * convertIterableToBuffer (iterable) {
-  for await (const chunk of iterable) {
-    yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)
-  }
-}
-
-let ReadableStream
-function ReadableStreamFrom (iterable) {
-  if (!ReadableStream) {
-    ReadableStream = require('stream/web').ReadableStream
-  }
-
-  if (ReadableStream.from) {
-    return ReadableStream.from(convertIterableToBuffer(iterable))
-  }
-
-  let iterator
-  return new ReadableStream(
-    {
-      async start () {
-        iterator = iterable[Symbol.asyncIterator]()
-      },
-      async pull (controller) {
-        const { done, value } = await iterator.next()
-        if (done) {
-          queueMicrotask(() => {
-            controller.close()
-          })
-        } else {
-          const buf = Buffer.isBuffer(value) ? value : Buffer.from(value)
-          controller.enqueue(new Uint8Array(buf))
-        }
-        return controller.desiredSize > 0
-      },
-      async cancel (reason) {
-        await iterator.return()
-      }
-    },
-    0
-  )
-}
-
-// The chunk should be a FormData instance and contains
-// all the required methods.
-function isFormDataLike (object) {
-  return (
-    object &&
-    typeof object === 'object' &&
-    typeof object.append === 'function' &&
-    typeof object.delete === 'function' &&
-    typeof object.get === 'function' &&
-    typeof object.getAll === 'function' &&
-    typeof object.has === 'function' &&
-    typeof object.set === 'function' &&
-    object[Symbol.toStringTag] === 'FormData'
-  )
-}
-
-function throwIfAborted (signal) {
-  if (!signal) { return }
-  if (typeof signal.throwIfAborted === 'function') {
-    signal.throwIfAborted()
-  } else {
-    if (signal.aborted) {
-      // DOMException not available < v17.0.0
-      const err = new Error('The operation was aborted')
-      err.name = 'AbortError'
-      throw err
-    }
-  }
-}
-
-function addAbortListener (signal, listener) {
-  if ('addEventListener' in signal) {
-    signal.addEventListener('abort', listener, { once: true })
-    return () => signal.removeEventListener('abort', listener)
-  }
-  signal.addListener('abort', listener)
-  return () => signal.removeListener('abort', listener)
-}
-
-const hasToWellFormed = !!String.prototype.toWellFormed
-
-/**
- * @param {string} val
- */
-function toUSVString (val) {
-  if (hasToWellFormed) {
-    return `${val}`.toWellFormed()
-  } else if (nodeUtil.toUSVString) {
-    return nodeUtil.toUSVString(val)
-  }
-
-  return `${val}`
-}
-
-// Parsed accordingly to RFC 9110
-// https://www.rfc-editor.org/rfc/rfc9110#field.content-range
-function parseRangeHeader (range) {
-  if (range == null || range === '') return { start: 0, end: null, size: null }
-
-  const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null
-  return m
-    ? {
-        start: parseInt(m[1]),
-        end: m[2] ? parseInt(m[2]) : null,
-        size: m[3] ? parseInt(m[3]) : null
-      }
-    : null
-}
-
-const kEnumerableProperty = Object.create(null)
-kEnumerableProperty.enumerable = true
-
-module.exports = {
-  kEnumerableProperty,
-  nop,
-  isDisturbed,
-  isErrored,
-  isReadable,
-  toUSVString,
-  isReadableAborted,
-  isBlobLike,
-  parseOrigin,
-  parseURL,
-  getServerName,
-  isStream,
-  isIterable,
-  isAsyncIterable,
-  isDestroyed,
-  parseRawHeaders,
-  parseHeaders,
-  parseKeepAliveTimeout,
-  destroy,
-  bodyLength,
-  deepClone,
-  ReadableStreamFrom,
-  isBuffer,
-  validateHandler,
-  getSocketInfo,
-  isFormDataLike,
-  buildURL,
-  throwIfAborted,
-  addAbortListener,
-  parseRangeHeader,
-  nodeMajor,
-  nodeMinor,
-  nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13),
-  safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE']
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/dispatcher-base.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/dispatcher-base.js
deleted file mode 100644
index 5c0220b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/dispatcher-base.js
+++ /dev/null
@@ -1,192 +0,0 @@
-'use strict'
-
-const Dispatcher = require('./dispatcher')
-const {
-  ClientDestroyedError,
-  ClientClosedError,
-  InvalidArgumentError
-} = require('./core/errors')
-const { kDestroy, kClose, kDispatch, kInterceptors } = require('./core/symbols')
-
-const kDestroyed = Symbol('destroyed')
-const kClosed = Symbol('closed')
-const kOnDestroyed = Symbol('onDestroyed')
-const kOnClosed = Symbol('onClosed')
-const kInterceptedDispatch = Symbol('Intercepted Dispatch')
-
-class DispatcherBase extends Dispatcher {
-  constructor () {
-    super()
-
-    this[kDestroyed] = false
-    this[kOnDestroyed] = null
-    this[kClosed] = false
-    this[kOnClosed] = []
-  }
-
-  get destroyed () {
-    return this[kDestroyed]
-  }
-
-  get closed () {
-    return this[kClosed]
-  }
-
-  get interceptors () {
-    return this[kInterceptors]
-  }
-
-  set interceptors (newInterceptors) {
-    if (newInterceptors) {
-      for (let i = newInterceptors.length - 1; i >= 0; i--) {
-        const interceptor = this[kInterceptors][i]
-        if (typeof interceptor !== 'function') {
-          throw new InvalidArgumentError('interceptor must be an function')
-        }
-      }
-    }
-
-    this[kInterceptors] = newInterceptors
-  }
-
-  close (callback) {
-    if (callback === undefined) {
-      return new Promise((resolve, reject) => {
-        this.close((err, data) => {
-          return err ? reject(err) : resolve(data)
-        })
-      })
-    }
-
-    if (typeof callback !== 'function') {
-      throw new InvalidArgumentError('invalid callback')
-    }
-
-    if (this[kDestroyed]) {
-      queueMicrotask(() => callback(new ClientDestroyedError(), null))
-      return
-    }
-
-    if (this[kClosed]) {
-      if (this[kOnClosed]) {
-        this[kOnClosed].push(callback)
-      } else {
-        queueMicrotask(() => callback(null, null))
-      }
-      return
-    }
-
-    this[kClosed] = true
-    this[kOnClosed].push(callback)
-
-    const onClosed = () => {
-      const callbacks = this[kOnClosed]
-      this[kOnClosed] = null
-      for (let i = 0; i < callbacks.length; i++) {
-        callbacks[i](null, null)
-      }
-    }
-
-    // Should not error.
-    this[kClose]()
-      .then(() => this.destroy())
-      .then(() => {
-        queueMicrotask(onClosed)
-      })
-  }
-
-  destroy (err, callback) {
-    if (typeof err === 'function') {
-      callback = err
-      err = null
-    }
-
-    if (callback === undefined) {
-      return new Promise((resolve, reject) => {
-        this.destroy(err, (err, data) => {
-          return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data)
-        })
-      })
-    }
-
-    if (typeof callback !== 'function') {
-      throw new InvalidArgumentError('invalid callback')
-    }
-
-    if (this[kDestroyed]) {
-      if (this[kOnDestroyed]) {
-        this[kOnDestroyed].push(callback)
-      } else {
-        queueMicrotask(() => callback(null, null))
-      }
-      return
-    }
-
-    if (!err) {
-      err = new ClientDestroyedError()
-    }
-
-    this[kDestroyed] = true
-    this[kOnDestroyed] = this[kOnDestroyed] || []
-    this[kOnDestroyed].push(callback)
-
-    const onDestroyed = () => {
-      const callbacks = this[kOnDestroyed]
-      this[kOnDestroyed] = null
-      for (let i = 0; i < callbacks.length; i++) {
-        callbacks[i](null, null)
-      }
-    }
-
-    // Should not error.
-    this[kDestroy](err).then(() => {
-      queueMicrotask(onDestroyed)
-    })
-  }
-
-  [kInterceptedDispatch] (opts, handler) {
-    if (!this[kInterceptors] || this[kInterceptors].length === 0) {
-      this[kInterceptedDispatch] = this[kDispatch]
-      return this[kDispatch](opts, handler)
-    }
-
-    let dispatch = this[kDispatch].bind(this)
-    for (let i = this[kInterceptors].length - 1; i >= 0; i--) {
-      dispatch = this[kInterceptors][i](dispatch)
-    }
-    this[kInterceptedDispatch] = dispatch
-    return dispatch(opts, handler)
-  }
-
-  dispatch (opts, handler) {
-    if (!handler || typeof handler !== 'object') {
-      throw new InvalidArgumentError('handler must be an object')
-    }
-
-    try {
-      if (!opts || typeof opts !== 'object') {
-        throw new InvalidArgumentError('opts must be an object.')
-      }
-
-      if (this[kDestroyed] || this[kOnDestroyed]) {
-        throw new ClientDestroyedError()
-      }
-
-      if (this[kClosed]) {
-        throw new ClientClosedError()
-      }
-
-      return this[kInterceptedDispatch](opts, handler)
-    } catch (err) {
-      if (typeof handler.onError !== 'function') {
-        throw new InvalidArgumentError('invalid onError method')
-      }
-
-      handler.onError(err)
-
-      return false
-    }
-  }
-}
-
-module.exports = DispatcherBase
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/dispatcher.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/dispatcher.js
deleted file mode 100644
index 9b809d8..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/dispatcher.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict'
-
-const EventEmitter = require('events')
-
-class Dispatcher extends EventEmitter {
-  dispatch () {
-    throw new Error('not implemented')
-  }
-
-  close () {
-    throw new Error('not implemented')
-  }
-
-  destroy () {
-    throw new Error('not implemented')
-  }
-}
-
-module.exports = Dispatcher
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/LICENSE b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/LICENSE
deleted file mode 100644
index 2943500..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 Ethan Arrowood
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/body.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/body.js
deleted file mode 100644
index fd8481b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/body.js
+++ /dev/null
@@ -1,605 +0,0 @@
-'use strict'
-
-const Busboy = require('@fastify/busboy')
-const util = require('../core/util')
-const {
-  ReadableStreamFrom,
-  isBlobLike,
-  isReadableStreamLike,
-  readableStreamClose,
-  createDeferredPromise,
-  fullyReadBody
-} = require('./util')
-const { FormData } = require('./formdata')
-const { kState } = require('./symbols')
-const { webidl } = require('./webidl')
-const { DOMException, structuredClone } = require('./constants')
-const { Blob, File: NativeFile } = require('buffer')
-const { kBodyUsed } = require('../core/symbols')
-const assert = require('assert')
-const { isErrored } = require('../core/util')
-const { isUint8Array, isArrayBuffer } = require('util/types')
-const { File: UndiciFile } = require('./file')
-const { parseMIMEType, serializeAMimeType } = require('./dataURL')
-
-let ReadableStream = globalThis.ReadableStream
-
-/** @type {globalThis['File']} */
-const File = NativeFile ?? UndiciFile
-const textEncoder = new TextEncoder()
-const textDecoder = new TextDecoder()
-
-// https://fetch.spec.whatwg.org/#concept-bodyinit-extract
-function extractBody (object, keepalive = false) {
-  if (!ReadableStream) {
-    ReadableStream = require('stream/web').ReadableStream
-  }
-
-  // 1. Let stream be null.
-  let stream = null
-
-  // 2. If object is a ReadableStream object, then set stream to object.
-  if (object instanceof ReadableStream) {
-    stream = object
-  } else if (isBlobLike(object)) {
-    // 3. Otherwise, if object is a Blob object, set stream to the
-    //    result of running object’s get stream.
-    stream = object.stream()
-  } else {
-    // 4. Otherwise, set stream to a new ReadableStream object, and set
-    //    up stream.
-    stream = new ReadableStream({
-      async pull (controller) {
-        controller.enqueue(
-          typeof source === 'string' ? textEncoder.encode(source) : source
-        )
-        queueMicrotask(() => readableStreamClose(controller))
-      },
-      start () {},
-      type: undefined
-    })
-  }
-
-  // 5. Assert: stream is a ReadableStream object.
-  assert(isReadableStreamLike(stream))
-
-  // 6. Let action be null.
-  let action = null
-
-  // 7. Let source be null.
-  let source = null
-
-  // 8. Let length be null.
-  let length = null
-
-  // 9. Let type be null.
-  let type = null
-
-  // 10. Switch on object:
-  if (typeof object === 'string') {
-    // Set source to the UTF-8 encoding of object.
-    // Note: setting source to a Uint8Array here breaks some mocking assumptions.
-    source = object
-
-    // Set type to `text/plain;charset=UTF-8`.
-    type = 'text/plain;charset=UTF-8'
-  } else if (object instanceof URLSearchParams) {
-    // URLSearchParams
-
-    // spec says to run application/x-www-form-urlencoded on body.list
-    // this is implemented in Node.js as apart of an URLSearchParams instance toString method
-    // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490
-    // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100
-
-    // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list.
-    source = object.toString()
-
-    // Set type to `application/x-www-form-urlencoded;charset=UTF-8`.
-    type = 'application/x-www-form-urlencoded;charset=UTF-8'
-  } else if (isArrayBuffer(object)) {
-    // BufferSource/ArrayBuffer
-
-    // Set source to a copy of the bytes held by object.
-    source = new Uint8Array(object.slice())
-  } else if (ArrayBuffer.isView(object)) {
-    // BufferSource/ArrayBufferView
-
-    // Set source to a copy of the bytes held by object.
-    source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))
-  } else if (util.isFormDataLike(object)) {
-    const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, '0')}`
-    const prefix = `--${boundary}\r\nContent-Disposition: form-data`
-
-    /*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
-    const escape = (str) =>
-      str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22')
-    const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, '\r\n')
-
-    // Set action to this step: run the multipart/form-data
-    // encoding algorithm, with object’s entry list and UTF-8.
-    // - This ensures that the body is immutable and can't be changed afterwords
-    // - That the content-length is calculated in advance.
-    // - And that all parts are pre-encoded and ready to be sent.
-
-    const blobParts = []
-    const rn = new Uint8Array([13, 10]) // '\r\n'
-    length = 0
-    let hasUnknownSizeValue = false
-
-    for (const [name, value] of object) {
-      if (typeof value === 'string') {
-        const chunk = textEncoder.encode(prefix +
-          `; name="${escape(normalizeLinefeeds(name))}"` +
-          `\r\n\r\n${normalizeLinefeeds(value)}\r\n`)
-        blobParts.push(chunk)
-        length += chunk.byteLength
-      } else {
-        const chunk = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` +
-          (value.name ? `; filename="${escape(value.name)}"` : '') + '\r\n' +
-          `Content-Type: ${
-            value.type || 'application/octet-stream'
-          }\r\n\r\n`)
-        blobParts.push(chunk, value, rn)
-        if (typeof value.size === 'number') {
-          length += chunk.byteLength + value.size + rn.byteLength
-        } else {
-          hasUnknownSizeValue = true
-        }
-      }
-    }
-
-    const chunk = textEncoder.encode(`--${boundary}--`)
-    blobParts.push(chunk)
-    length += chunk.byteLength
-    if (hasUnknownSizeValue) {
-      length = null
-    }
-
-    // Set source to object.
-    source = object
-
-    action = async function * () {
-      for (const part of blobParts) {
-        if (part.stream) {
-          yield * part.stream()
-        } else {
-          yield part
-        }
-      }
-    }
-
-    // Set type to `multipart/form-data; boundary=`,
-    // followed by the multipart/form-data boundary string generated
-    // by the multipart/form-data encoding algorithm.
-    type = 'multipart/form-data; boundary=' + boundary
-  } else if (isBlobLike(object)) {
-    // Blob
-
-    // Set source to object.
-    source = object
-
-    // Set length to object’s size.
-    length = object.size
-
-    // If object’s type attribute is not the empty byte sequence, set
-    // type to its value.
-    if (object.type) {
-      type = object.type
-    }
-  } else if (typeof object[Symbol.asyncIterator] === 'function') {
-    // If keepalive is true, then throw a TypeError.
-    if (keepalive) {
-      throw new TypeError('keepalive')
-    }
-
-    // If object is disturbed or locked, then throw a TypeError.
-    if (util.isDisturbed(object) || object.locked) {
-      throw new TypeError(
-        'Response body object should not be disturbed or locked'
-      )
-    }
-
-    stream =
-      object instanceof ReadableStream ? object : ReadableStreamFrom(object)
-  }
-
-  // 11. If source is a byte sequence, then set action to a
-  // step that returns source and length to source’s length.
-  if (typeof source === 'string' || util.isBuffer(source)) {
-    length = Buffer.byteLength(source)
-  }
-
-  // 12. If action is non-null, then run these steps in in parallel:
-  if (action != null) {
-    // Run action.
-    let iterator
-    stream = new ReadableStream({
-      async start () {
-        iterator = action(object)[Symbol.asyncIterator]()
-      },
-      async pull (controller) {
-        const { value, done } = await iterator.next()
-        if (done) {
-          // When running action is done, close stream.
-          queueMicrotask(() => {
-            controller.close()
-          })
-        } else {
-          // Whenever one or more bytes are available and stream is not errored,
-          // enqueue a Uint8Array wrapping an ArrayBuffer containing the available
-          // bytes into stream.
-          if (!isErrored(stream)) {
-            controller.enqueue(new Uint8Array(value))
-          }
-        }
-        return controller.desiredSize > 0
-      },
-      async cancel (reason) {
-        await iterator.return()
-      },
-      type: undefined
-    })
-  }
-
-  // 13. Let body be a body whose stream is stream, source is source,
-  // and length is length.
-  const body = { stream, source, length }
-
-  // 14. Return (body, type).
-  return [body, type]
-}
-
-// https://fetch.spec.whatwg.org/#bodyinit-safely-extract
-function safelyExtractBody (object, keepalive = false) {
-  if (!ReadableStream) {
-    // istanbul ignore next
-    ReadableStream = require('stream/web').ReadableStream
-  }
-
-  // To safely extract a body and a `Content-Type` value from
-  // a byte sequence or BodyInit object object, run these steps:
-
-  // 1. If object is a ReadableStream object, then:
-  if (object instanceof ReadableStream) {
-    // Assert: object is neither disturbed nor locked.
-    // istanbul ignore next
-    assert(!util.isDisturbed(object), 'The body has already been consumed.')
-    // istanbul ignore next
-    assert(!object.locked, 'The stream is locked.')
-  }
-
-  // 2. Return the results of extracting object.
-  return extractBody(object, keepalive)
-}
-
-function cloneBody (body) {
-  // To clone a body body, run these steps:
-
-  // https://fetch.spec.whatwg.org/#concept-body-clone
-
-  // 1. Let « out1, out2 » be the result of teeing body’s stream.
-  const [out1, out2] = body.stream.tee()
-  const out2Clone = structuredClone(out2, { transfer: [out2] })
-  // This, for whatever reasons, unrefs out2Clone which allows
-  // the process to exit by itself.
-  const [, finalClone] = out2Clone.tee()
-
-  // 2. Set body’s stream to out1.
-  body.stream = out1
-
-  // 3. Return a body whose stream is out2 and other members are copied from body.
-  return {
-    stream: finalClone,
-    length: body.length,
-    source: body.source
-  }
-}
-
-async function * consumeBody (body) {
-  if (body) {
-    if (isUint8Array(body)) {
-      yield body
-    } else {
-      const stream = body.stream
-
-      if (util.isDisturbed(stream)) {
-        throw new TypeError('The body has already been consumed.')
-      }
-
-      if (stream.locked) {
-        throw new TypeError('The stream is locked.')
-      }
-
-      // Compat.
-      stream[kBodyUsed] = true
-
-      yield * stream
-    }
-  }
-}
-
-function throwIfAborted (state) {
-  if (state.aborted) {
-    throw new DOMException('The operation was aborted.', 'AbortError')
-  }
-}
-
-function bodyMixinMethods (instance) {
-  const methods = {
-    blob () {
-      // The blob() method steps are to return the result of
-      // running consume body with this and the following step
-      // given a byte sequence bytes: return a Blob whose
-      // contents are bytes and whose type attribute is this’s
-      // MIME type.
-      return specConsumeBody(this, (bytes) => {
-        let mimeType = bodyMimeType(this)
-
-        if (mimeType === 'failure') {
-          mimeType = ''
-        } else if (mimeType) {
-          mimeType = serializeAMimeType(mimeType)
-        }
-
-        // Return a Blob whose contents are bytes and type attribute
-        // is mimeType.
-        return new Blob([bytes], { type: mimeType })
-      }, instance)
-    },
-
-    arrayBuffer () {
-      // The arrayBuffer() method steps are to return the result
-      // of running consume body with this and the following step
-      // given a byte sequence bytes: return a new ArrayBuffer
-      // whose contents are bytes.
-      return specConsumeBody(this, (bytes) => {
-        return new Uint8Array(bytes).buffer
-      }, instance)
-    },
-
-    text () {
-      // The text() method steps are to return the result of running
-      // consume body with this and UTF-8 decode.
-      return specConsumeBody(this, utf8DecodeBytes, instance)
-    },
-
-    json () {
-      // The json() method steps are to return the result of running
-      // consume body with this and parse JSON from bytes.
-      return specConsumeBody(this, parseJSONFromBytes, instance)
-    },
-
-    async formData () {
-      webidl.brandCheck(this, instance)
-
-      throwIfAborted(this[kState])
-
-      const contentType = this.headers.get('Content-Type')
-
-      // If mimeType’s essence is "multipart/form-data", then:
-      if (/multipart\/form-data/.test(contentType)) {
-        const headers = {}
-        for (const [key, value] of this.headers) headers[key.toLowerCase()] = value
-
-        const responseFormData = new FormData()
-
-        let busboy
-
-        try {
-          busboy = new Busboy({
-            headers,
-            preservePath: true
-          })
-        } catch (err) {
-          throw new DOMException(`${err}`, 'AbortError')
-        }
-
-        busboy.on('field', (name, value) => {
-          responseFormData.append(name, value)
-        })
-        busboy.on('file', (name, value, filename, encoding, mimeType) => {
-          const chunks = []
-
-          if (encoding === 'base64' || encoding.toLowerCase() === 'base64') {
-            let base64chunk = ''
-
-            value.on('data', (chunk) => {
-              base64chunk += chunk.toString().replace(/[\r\n]/gm, '')
-
-              const end = base64chunk.length - base64chunk.length % 4
-              chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64'))
-
-              base64chunk = base64chunk.slice(end)
-            })
-            value.on('end', () => {
-              chunks.push(Buffer.from(base64chunk, 'base64'))
-              responseFormData.append(name, new File(chunks, filename, { type: mimeType }))
-            })
-          } else {
-            value.on('data', (chunk) => {
-              chunks.push(chunk)
-            })
-            value.on('end', () => {
-              responseFormData.append(name, new File(chunks, filename, { type: mimeType }))
-            })
-          }
-        })
-
-        const busboyResolve = new Promise((resolve, reject) => {
-          busboy.on('finish', resolve)
-          busboy.on('error', (err) => reject(new TypeError(err)))
-        })
-
-        if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk)
-        busboy.end()
-        await busboyResolve
-
-        return responseFormData
-      } else if (/application\/x-www-form-urlencoded/.test(contentType)) {
-        // Otherwise, if mimeType’s essence is "application/x-www-form-urlencoded", then:
-
-        // 1. Let entries be the result of parsing bytes.
-        let entries
-        try {
-          let text = ''
-          // application/x-www-form-urlencoded parser will keep the BOM.
-          // https://url.spec.whatwg.org/#concept-urlencoded-parser
-          // Note that streaming decoder is stateful and cannot be reused
-          const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true })
-
-          for await (const chunk of consumeBody(this[kState].body)) {
-            if (!isUint8Array(chunk)) {
-              throw new TypeError('Expected Uint8Array chunk')
-            }
-            text += streamingDecoder.decode(chunk, { stream: true })
-          }
-          text += streamingDecoder.decode()
-          entries = new URLSearchParams(text)
-        } catch (err) {
-          // istanbul ignore next: Unclear when new URLSearchParams can fail on a string.
-          // 2. If entries is failure, then throw a TypeError.
-          throw Object.assign(new TypeError(), { cause: err })
-        }
-
-        // 3. Return a new FormData object whose entries are entries.
-        const formData = new FormData()
-        for (const [name, value] of entries) {
-          formData.append(name, value)
-        }
-        return formData
-      } else {
-        // Wait a tick before checking if the request has been aborted.
-        // Otherwise, a TypeError can be thrown when an AbortError should.
-        await Promise.resolve()
-
-        throwIfAborted(this[kState])
-
-        // Otherwise, throw a TypeError.
-        throw webidl.errors.exception({
-          header: `${instance.name}.formData`,
-          message: 'Could not parse content as FormData.'
-        })
-      }
-    }
-  }
-
-  return methods
-}
-
-function mixinBody (prototype) {
-  Object.assign(prototype.prototype, bodyMixinMethods(prototype))
-}
-
-/**
- * @see https://fetch.spec.whatwg.org/#concept-body-consume-body
- * @param {Response|Request} object
- * @param {(value: unknown) => unknown} convertBytesToJSValue
- * @param {Response|Request} instance
- */
-async function specConsumeBody (object, convertBytesToJSValue, instance) {
-  webidl.brandCheck(object, instance)
-
-  throwIfAborted(object[kState])
-
-  // 1. If object is unusable, then return a promise rejected
-  //    with a TypeError.
-  if (bodyUnusable(object[kState].body)) {
-    throw new TypeError('Body is unusable')
-  }
-
-  // 2. Let promise be a new promise.
-  const promise = createDeferredPromise()
-
-  // 3. Let errorSteps given error be to reject promise with error.
-  const errorSteps = (error) => promise.reject(error)
-
-  // 4. Let successSteps given a byte sequence data be to resolve
-  //    promise with the result of running convertBytesToJSValue
-  //    with data. If that threw an exception, then run errorSteps
-  //    with that exception.
-  const successSteps = (data) => {
-    try {
-      promise.resolve(convertBytesToJSValue(data))
-    } catch (e) {
-      errorSteps(e)
-    }
-  }
-
-  // 5. If object’s body is null, then run successSteps with an
-  //    empty byte sequence.
-  if (object[kState].body == null) {
-    successSteps(new Uint8Array())
-    return promise.promise
-  }
-
-  // 6. Otherwise, fully read object’s body given successSteps,
-  //    errorSteps, and object’s relevant global object.
-  await fullyReadBody(object[kState].body, successSteps, errorSteps)
-
-  // 7. Return promise.
-  return promise.promise
-}
-
-// https://fetch.spec.whatwg.org/#body-unusable
-function bodyUnusable (body) {
-  // An object including the Body interface mixin is
-  // said to be unusable if its body is non-null and
-  // its body’s stream is disturbed or locked.
-  return body != null && (body.stream.locked || util.isDisturbed(body.stream))
-}
-
-/**
- * @see https://encoding.spec.whatwg.org/#utf-8-decode
- * @param {Buffer} buffer
- */
-function utf8DecodeBytes (buffer) {
-  if (buffer.length === 0) {
-    return ''
-  }
-
-  // 1. Let buffer be the result of peeking three bytes from
-  //    ioQueue, converted to a byte sequence.
-
-  // 2. If buffer is 0xEF 0xBB 0xBF, then read three
-  //    bytes from ioQueue. (Do nothing with those bytes.)
-  if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {
-    buffer = buffer.subarray(3)
-  }
-
-  // 3. Process a queue with an instance of UTF-8’s
-  //    decoder, ioQueue, output, and "replacement".
-  const output = textDecoder.decode(buffer)
-
-  // 4. Return output.
-  return output
-}
-
-/**
- * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value
- * @param {Uint8Array} bytes
- */
-function parseJSONFromBytes (bytes) {
-  return JSON.parse(utf8DecodeBytes(bytes))
-}
-
-/**
- * @see https://fetch.spec.whatwg.org/#concept-body-mime-type
- * @param {import('./response').Response|import('./request').Request} object
- */
-function bodyMimeType (object) {
-  const { headersList } = object[kState]
-  const contentType = headersList.get('content-type')
-
-  if (contentType === null) {
-    return 'failure'
-  }
-
-  return parseMIMEType(contentType)
-}
-
-module.exports = {
-  extractBody,
-  safelyExtractBody,
-  cloneBody,
-  mixinBody
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/constants.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/constants.js
deleted file mode 100644
index 218fcbe..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/constants.js
+++ /dev/null
@@ -1,151 +0,0 @@
-'use strict'
-
-const { MessageChannel, receiveMessageOnPort } = require('worker_threads')
-
-const corsSafeListedMethods = ['GET', 'HEAD', 'POST']
-const corsSafeListedMethodsSet = new Set(corsSafeListedMethods)
-
-const nullBodyStatus = [101, 204, 205, 304]
-
-const redirectStatus = [301, 302, 303, 307, 308]
-const redirectStatusSet = new Set(redirectStatus)
-
-// https://fetch.spec.whatwg.org/#block-bad-port
-const badPorts = [
-  '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79',
-  '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137',
-  '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532',
-  '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723',
-  '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697',
-  '10080'
-]
-
-const badPortsSet = new Set(badPorts)
-
-// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies
-const referrerPolicy = [
-  '',
-  'no-referrer',
-  'no-referrer-when-downgrade',
-  'same-origin',
-  'origin',
-  'strict-origin',
-  'origin-when-cross-origin',
-  'strict-origin-when-cross-origin',
-  'unsafe-url'
-]
-const referrerPolicySet = new Set(referrerPolicy)
-
-const requestRedirect = ['follow', 'manual', 'error']
-
-const safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']
-const safeMethodsSet = new Set(safeMethods)
-
-const requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']
-
-const requestCredentials = ['omit', 'same-origin', 'include']
-
-const requestCache = [
-  'default',
-  'no-store',
-  'reload',
-  'no-cache',
-  'force-cache',
-  'only-if-cached'
-]
-
-// https://fetch.spec.whatwg.org/#request-body-header-name
-const requestBodyHeader = [
-  'content-encoding',
-  'content-language',
-  'content-location',
-  'content-type',
-  // See https://github.com/nodejs/undici/issues/2021
-  // 'Content-Length' is a forbidden header name, which is typically
-  // removed in the Headers implementation. However, undici doesn't
-  // filter out headers, so we add it here.
-  'content-length'
-]
-
-// https://fetch.spec.whatwg.org/#enumdef-requestduplex
-const requestDuplex = [
-  'half'
-]
-
-// http://fetch.spec.whatwg.org/#forbidden-method
-const forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']
-const forbiddenMethodsSet = new Set(forbiddenMethods)
-
-const subresource = [
-  'audio',
-  'audioworklet',
-  'font',
-  'image',
-  'manifest',
-  'paintworklet',
-  'script',
-  'style',
-  'track',
-  'video',
-  'xslt',
-  ''
-]
-const subresourceSet = new Set(subresource)
-
-/** @type {globalThis['DOMException']} */
-const DOMException = globalThis.DOMException ?? (() => {
-  // DOMException was only made a global in Node v17.0.0,
-  // but fetch supports >= v16.8.
-  try {
-    atob('~')
-  } catch (err) {
-    return Object.getPrototypeOf(err).constructor
-  }
-})()
-
-let channel
-
-/** @type {globalThis['structuredClone']} */
-const structuredClone =
-  globalThis.structuredClone ??
-  // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js
-  // structuredClone was added in v17.0.0, but fetch supports v16.8
-  function structuredClone (value, options = undefined) {
-    if (arguments.length === 0) {
-      throw new TypeError('missing argument')
-    }
-
-    if (!channel) {
-      channel = new MessageChannel()
-    }
-    channel.port1.unref()
-    channel.port2.unref()
-    channel.port1.postMessage(value, options?.transfer)
-    return receiveMessageOnPort(channel.port2).message
-  }
-
-module.exports = {
-  DOMException,
-  structuredClone,
-  subresource,
-  forbiddenMethods,
-  requestBodyHeader,
-  referrerPolicy,
-  requestRedirect,
-  requestMode,
-  requestCredentials,
-  requestCache,
-  redirectStatus,
-  corsSafeListedMethods,
-  nullBodyStatus,
-  safeMethods,
-  badPorts,
-  requestDuplex,
-  subresourceSet,
-  badPortsSet,
-  redirectStatusSet,
-  corsSafeListedMethodsSet,
-  safeMethodsSet,
-  forbiddenMethodsSet,
-  referrerPolicySet
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/dataURL.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/dataURL.js
deleted file mode 100644
index 7b6a606..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/dataURL.js
+++ /dev/null
@@ -1,627 +0,0 @@
-const assert = require('assert')
-const { atob } = require('buffer')
-const { isomorphicDecode } = require('./util')
-
-const encoder = new TextEncoder()
-
-/**
- * @see https://mimesniff.spec.whatwg.org/#http-token-code-point
- */
-const HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/
-const HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/ // eslint-disable-line
-/**
- * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point
- */
-const HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/ // eslint-disable-line
-
-// https://fetch.spec.whatwg.org/#data-url-processor
-/** @param {URL} dataURL */
-function dataURLProcessor (dataURL) {
-  // 1. Assert: dataURL’s scheme is "data".
-  assert(dataURL.protocol === 'data:')
-
-  // 2. Let input be the result of running the URL
-  // serializer on dataURL with exclude fragment
-  // set to true.
-  let input = URLSerializer(dataURL, true)
-
-  // 3. Remove the leading "data:" string from input.
-  input = input.slice(5)
-
-  // 4. Let position point at the start of input.
-  const position = { position: 0 }
-
-  // 5. Let mimeType be the result of collecting a
-  // sequence of code points that are not equal
-  // to U+002C (,), given position.
-  let mimeType = collectASequenceOfCodePointsFast(
-    ',',
-    input,
-    position
-  )
-
-  // 6. Strip leading and trailing ASCII whitespace
-  // from mimeType.
-  // Undici implementation note: we need to store the
-  // length because if the mimetype has spaces removed,
-  // the wrong amount will be sliced from the input in
-  // step #9
-  const mimeTypeLength = mimeType.length
-  mimeType = removeASCIIWhitespace(mimeType, true, true)
-
-  // 7. If position is past the end of input, then
-  // return failure
-  if (position.position >= input.length) {
-    return 'failure'
-  }
-
-  // 8. Advance position by 1.
-  position.position++
-
-  // 9. Let encodedBody be the remainder of input.
-  const encodedBody = input.slice(mimeTypeLength + 1)
-
-  // 10. Let body be the percent-decoding of encodedBody.
-  let body = stringPercentDecode(encodedBody)
-
-  // 11. If mimeType ends with U+003B (;), followed by
-  // zero or more U+0020 SPACE, followed by an ASCII
-  // case-insensitive match for "base64", then:
-  if (/;(\u0020){0,}base64$/i.test(mimeType)) {
-    // 1. Let stringBody be the isomorphic decode of body.
-    const stringBody = isomorphicDecode(body)
-
-    // 2. Set body to the forgiving-base64 decode of
-    // stringBody.
-    body = forgivingBase64(stringBody)
-
-    // 3. If body is failure, then return failure.
-    if (body === 'failure') {
-      return 'failure'
-    }
-
-    // 4. Remove the last 6 code points from mimeType.
-    mimeType = mimeType.slice(0, -6)
-
-    // 5. Remove trailing U+0020 SPACE code points from mimeType,
-    // if any.
-    mimeType = mimeType.replace(/(\u0020)+$/, '')
-
-    // 6. Remove the last U+003B (;) code point from mimeType.
-    mimeType = mimeType.slice(0, -1)
-  }
-
-  // 12. If mimeType starts with U+003B (;), then prepend
-  // "text/plain" to mimeType.
-  if (mimeType.startsWith(';')) {
-    mimeType = 'text/plain' + mimeType
-  }
-
-  // 13. Let mimeTypeRecord be the result of parsing
-  // mimeType.
-  let mimeTypeRecord = parseMIMEType(mimeType)
-
-  // 14. If mimeTypeRecord is failure, then set
-  // mimeTypeRecord to text/plain;charset=US-ASCII.
-  if (mimeTypeRecord === 'failure') {
-    mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII')
-  }
-
-  // 15. Return a new data: URL struct whose MIME
-  // type is mimeTypeRecord and body is body.
-  // https://fetch.spec.whatwg.org/#data-url-struct
-  return { mimeType: mimeTypeRecord, body }
-}
-
-// https://url.spec.whatwg.org/#concept-url-serializer
-/**
- * @param {URL} url
- * @param {boolean} excludeFragment
- */
-function URLSerializer (url, excludeFragment = false) {
-  if (!excludeFragment) {
-    return url.href
-  }
-
-  const href = url.href
-  const hashLength = url.hash.length
-
-  return hashLength === 0 ? href : href.substring(0, href.length - hashLength)
-}
-
-// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points
-/**
- * @param {(char: string) => boolean} condition
- * @param {string} input
- * @param {{ position: number }} position
- */
-function collectASequenceOfCodePoints (condition, input, position) {
-  // 1. Let result be the empty string.
-  let result = ''
-
-  // 2. While position doesn’t point past the end of input and the
-  // code point at position within input meets the condition condition:
-  while (position.position < input.length && condition(input[position.position])) {
-    // 1. Append that code point to the end of result.
-    result += input[position.position]
-
-    // 2. Advance position by 1.
-    position.position++
-  }
-
-  // 3. Return result.
-  return result
-}
-
-/**
- * A faster collectASequenceOfCodePoints that only works when comparing a single character.
- * @param {string} char
- * @param {string} input
- * @param {{ position: number }} position
- */
-function collectASequenceOfCodePointsFast (char, input, position) {
-  const idx = input.indexOf(char, position.position)
-  const start = position.position
-
-  if (idx === -1) {
-    position.position = input.length
-    return input.slice(start)
-  }
-
-  position.position = idx
-  return input.slice(start, position.position)
-}
-
-// https://url.spec.whatwg.org/#string-percent-decode
-/** @param {string} input */
-function stringPercentDecode (input) {
-  // 1. Let bytes be the UTF-8 encoding of input.
-  const bytes = encoder.encode(input)
-
-  // 2. Return the percent-decoding of bytes.
-  return percentDecode(bytes)
-}
-
-// https://url.spec.whatwg.org/#percent-decode
-/** @param {Uint8Array} input */
-function percentDecode (input) {
-  // 1. Let output be an empty byte sequence.
-  /** @type {number[]} */
-  const output = []
-
-  // 2. For each byte byte in input:
-  for (let i = 0; i < input.length; i++) {
-    const byte = input[i]
-
-    // 1. If byte is not 0x25 (%), then append byte to output.
-    if (byte !== 0x25) {
-      output.push(byte)
-
-    // 2. Otherwise, if byte is 0x25 (%) and the next two bytes
-    // after byte in input are not in the ranges
-    // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F),
-    // and 0x61 (a) to 0x66 (f), all inclusive, append byte
-    // to output.
-    } else if (
-      byte === 0x25 &&
-      !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))
-    ) {
-      output.push(0x25)
-
-    // 3. Otherwise:
-    } else {
-      // 1. Let bytePoint be the two bytes after byte in input,
-      // decoded, and then interpreted as hexadecimal number.
-      const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2])
-      const bytePoint = Number.parseInt(nextTwoBytes, 16)
-
-      // 2. Append a byte whose value is bytePoint to output.
-      output.push(bytePoint)
-
-      // 3. Skip the next two bytes in input.
-      i += 2
-    }
-  }
-
-  // 3. Return output.
-  return Uint8Array.from(output)
-}
-
-// https://mimesniff.spec.whatwg.org/#parse-a-mime-type
-/** @param {string} input */
-function parseMIMEType (input) {
-  // 1. Remove any leading and trailing HTTP whitespace
-  // from input.
-  input = removeHTTPWhitespace(input, true, true)
-
-  // 2. Let position be a position variable for input,
-  // initially pointing at the start of input.
-  const position = { position: 0 }
-
-  // 3. Let type be the result of collecting a sequence
-  // of code points that are not U+002F (/) from
-  // input, given position.
-  const type = collectASequenceOfCodePointsFast(
-    '/',
-    input,
-    position
-  )
-
-  // 4. If type is the empty string or does not solely
-  // contain HTTP token code points, then return failure.
-  // https://mimesniff.spec.whatwg.org/#http-token-code-point
-  if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {
-    return 'failure'
-  }
-
-  // 5. If position is past the end of input, then return
-  // failure
-  if (position.position > input.length) {
-    return 'failure'
-  }
-
-  // 6. Advance position by 1. (This skips past U+002F (/).)
-  position.position++
-
-  // 7. Let subtype be the result of collecting a sequence of
-  // code points that are not U+003B (;) from input, given
-  // position.
-  let subtype = collectASequenceOfCodePointsFast(
-    ';',
-    input,
-    position
-  )
-
-  // 8. Remove any trailing HTTP whitespace from subtype.
-  subtype = removeHTTPWhitespace(subtype, false, true)
-
-  // 9. If subtype is the empty string or does not solely
-  // contain HTTP token code points, then return failure.
-  if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {
-    return 'failure'
-  }
-
-  const typeLowercase = type.toLowerCase()
-  const subtypeLowercase = subtype.toLowerCase()
-
-  // 10. Let mimeType be a new MIME type record whose type
-  // is type, in ASCII lowercase, and subtype is subtype,
-  // in ASCII lowercase.
-  // https://mimesniff.spec.whatwg.org/#mime-type
-  const mimeType = {
-    type: typeLowercase,
-    subtype: subtypeLowercase,
-    /** @type {Map<string, string>} */
-    parameters: new Map(),
-    // https://mimesniff.spec.whatwg.org/#mime-type-essence
-    essence: `${typeLowercase}/${subtypeLowercase}`
-  }
-
-  // 11. While position is not past the end of input:
-  while (position.position < input.length) {
-    // 1. Advance position by 1. (This skips past U+003B (;).)
-    position.position++
-
-    // 2. Collect a sequence of code points that are HTTP
-    // whitespace from input given position.
-    collectASequenceOfCodePoints(
-      // https://fetch.spec.whatwg.org/#http-whitespace
-      char => HTTP_WHITESPACE_REGEX.test(char),
-      input,
-      position
-    )
-
-    // 3. Let parameterName be the result of collecting a
-    // sequence of code points that are not U+003B (;)
-    // or U+003D (=) from input, given position.
-    let parameterName = collectASequenceOfCodePoints(
-      (char) => char !== ';' && char !== '=',
-      input,
-      position
-    )
-
-    // 4. Set parameterName to parameterName, in ASCII
-    // lowercase.
-    parameterName = parameterName.toLowerCase()
-
-    // 5. If position is not past the end of input, then:
-    if (position.position < input.length) {
-      // 1. If the code point at position within input is
-      // U+003B (;), then continue.
-      if (input[position.position] === ';') {
-        continue
-      }
-
-      // 2. Advance position by 1. (This skips past U+003D (=).)
-      position.position++
-    }
-
-    // 6. If position is past the end of input, then break.
-    if (position.position > input.length) {
-      break
-    }
-
-    // 7. Let parameterValue be null.
-    let parameterValue = null
-
-    // 8. If the code point at position within input is
-    // U+0022 ("), then:
-    if (input[position.position] === '"') {
-      // 1. Set parameterValue to the result of collecting
-      // an HTTP quoted string from input, given position
-      // and the extract-value flag.
-      parameterValue = collectAnHTTPQuotedString(input, position, true)
-
-      // 2. Collect a sequence of code points that are not
-      // U+003B (;) from input, given position.
-      collectASequenceOfCodePointsFast(
-        ';',
-        input,
-        position
-      )
-
-    // 9. Otherwise:
-    } else {
-      // 1. Set parameterValue to the result of collecting
-      // a sequence of code points that are not U+003B (;)
-      // from input, given position.
-      parameterValue = collectASequenceOfCodePointsFast(
-        ';',
-        input,
-        position
-      )
-
-      // 2. Remove any trailing HTTP whitespace from parameterValue.
-      parameterValue = removeHTTPWhitespace(parameterValue, false, true)
-
-      // 3. If parameterValue is the empty string, then continue.
-      if (parameterValue.length === 0) {
-        continue
-      }
-    }
-
-    // 10. If all of the following are true
-    // - parameterName is not the empty string
-    // - parameterName solely contains HTTP token code points
-    // - parameterValue solely contains HTTP quoted-string token code points
-    // - mimeType’s parameters[parameterName] does not exist
-    // then set mimeType’s parameters[parameterName] to parameterValue.
-    if (
-      parameterName.length !== 0 &&
-      HTTP_TOKEN_CODEPOINTS.test(parameterName) &&
-      (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) &&
-      !mimeType.parameters.has(parameterName)
-    ) {
-      mimeType.parameters.set(parameterName, parameterValue)
-    }
-  }
-
-  // 12. Return mimeType.
-  return mimeType
-}
-
-// https://infra.spec.whatwg.org/#forgiving-base64-decode
-/** @param {string} data */
-function forgivingBase64 (data) {
-  // 1. Remove all ASCII whitespace from data.
-  data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, '')  // eslint-disable-line
-
-  // 2. If data’s code point length divides by 4 leaving
-  // no remainder, then:
-  if (data.length % 4 === 0) {
-    // 1. If data ends with one or two U+003D (=) code points,
-    // then remove them from data.
-    data = data.replace(/=?=$/, '')
-  }
-
-  // 3. If data’s code point length divides by 4 leaving
-  // a remainder of 1, then return failure.
-  if (data.length % 4 === 1) {
-    return 'failure'
-  }
-
-  // 4. If data contains a code point that is not one of
-  //  U+002B (+)
-  //  U+002F (/)
-  //  ASCII alphanumeric
-  // then return failure.
-  if (/[^+/0-9A-Za-z]/.test(data)) {
-    return 'failure'
-  }
-
-  const binary = atob(data)
-  const bytes = new Uint8Array(binary.length)
-
-  for (let byte = 0; byte < binary.length; byte++) {
-    bytes[byte] = binary.charCodeAt(byte)
-  }
-
-  return bytes
-}
-
-// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string
-// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string
-/**
- * @param {string} input
- * @param {{ position: number }} position
- * @param {boolean?} extractValue
- */
-function collectAnHTTPQuotedString (input, position, extractValue) {
-  // 1. Let positionStart be position.
-  const positionStart = position.position
-
-  // 2. Let value be the empty string.
-  let value = ''
-
-  // 3. Assert: the code point at position within input
-  // is U+0022 (").
-  assert(input[position.position] === '"')
-
-  // 4. Advance position by 1.
-  position.position++
-
-  // 5. While true:
-  while (true) {
-    // 1. Append the result of collecting a sequence of code points
-    // that are not U+0022 (") or U+005C (\) from input, given
-    // position, to value.
-    value += collectASequenceOfCodePoints(
-      (char) => char !== '"' && char !== '\\',
-      input,
-      position
-    )
-
-    // 2. If position is past the end of input, then break.
-    if (position.position >= input.length) {
-      break
-    }
-
-    // 3. Let quoteOrBackslash be the code point at position within
-    // input.
-    const quoteOrBackslash = input[position.position]
-
-    // 4. Advance position by 1.
-    position.position++
-
-    // 5. If quoteOrBackslash is U+005C (\), then:
-    if (quoteOrBackslash === '\\') {
-      // 1. If position is past the end of input, then append
-      // U+005C (\) to value and break.
-      if (position.position >= input.length) {
-        value += '\\'
-        break
-      }
-
-      // 2. Append the code point at position within input to value.
-      value += input[position.position]
-
-      // 3. Advance position by 1.
-      position.position++
-
-    // 6. Otherwise:
-    } else {
-      // 1. Assert: quoteOrBackslash is U+0022 (").
-      assert(quoteOrBackslash === '"')
-
-      // 2. Break.
-      break
-    }
-  }
-
-  // 6. If the extract-value flag is set, then return value.
-  if (extractValue) {
-    return value
-  }
-
-  // 7. Return the code points from positionStart to position,
-  // inclusive, within input.
-  return input.slice(positionStart, position.position)
-}
-
-/**
- * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type
- */
-function serializeAMimeType (mimeType) {
-  assert(mimeType !== 'failure')
-  const { parameters, essence } = mimeType
-
-  // 1. Let serialization be the concatenation of mimeType’s
-  //    type, U+002F (/), and mimeType’s subtype.
-  let serialization = essence
-
-  // 2. For each name → value of mimeType’s parameters:
-  for (let [name, value] of parameters.entries()) {
-    // 1. Append U+003B (;) to serialization.
-    serialization += ';'
-
-    // 2. Append name to serialization.
-    serialization += name
-
-    // 3. Append U+003D (=) to serialization.
-    serialization += '='
-
-    // 4. If value does not solely contain HTTP token code
-    //    points or value is the empty string, then:
-    if (!HTTP_TOKEN_CODEPOINTS.test(value)) {
-      // 1. Precede each occurence of U+0022 (") or
-      //    U+005C (\) in value with U+005C (\).
-      value = value.replace(/(\\|")/g, '\\$1')
-
-      // 2. Prepend U+0022 (") to value.
-      value = '"' + value
-
-      // 3. Append U+0022 (") to value.
-      value += '"'
-    }
-
-    // 5. Append value to serialization.
-    serialization += value
-  }
-
-  // 3. Return serialization.
-  return serialization
-}
-
-/**
- * @see https://fetch.spec.whatwg.org/#http-whitespace
- * @param {string} char
- */
-function isHTTPWhiteSpace (char) {
-  return char === '\r' || char === '\n' || char === '\t' || char === ' '
-}
-
-/**
- * @see https://fetch.spec.whatwg.org/#http-whitespace
- * @param {string} str
- */
-function removeHTTPWhitespace (str, leading = true, trailing = true) {
-  let lead = 0
-  let trail = str.length - 1
-
-  if (leading) {
-    for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++);
-  }
-
-  if (trailing) {
-    for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--);
-  }
-
-  return str.slice(lead, trail + 1)
-}
-
-/**
- * @see https://infra.spec.whatwg.org/#ascii-whitespace
- * @param {string} char
- */
-function isASCIIWhitespace (char) {
-  return char === '\r' || char === '\n' || char === '\t' || char === '\f' || char === ' '
-}
-
-/**
- * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace
- */
-function removeASCIIWhitespace (str, leading = true, trailing = true) {
-  let lead = 0
-  let trail = str.length - 1
-
-  if (leading) {
-    for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++);
-  }
-
-  if (trailing) {
-    for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--);
-  }
-
-  return str.slice(lead, trail + 1)
-}
-
-module.exports = {
-  dataURLProcessor,
-  URLSerializer,
-  collectASequenceOfCodePoints,
-  collectASequenceOfCodePointsFast,
-  stringPercentDecode,
-  parseMIMEType,
-  collectAnHTTPQuotedString,
-  serializeAMimeType
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/file.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/file.js
deleted file mode 100644
index 3133d25..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/file.js
+++ /dev/null
@@ -1,344 +0,0 @@
-'use strict'
-
-const { Blob, File: NativeFile } = require('buffer')
-const { types } = require('util')
-const { kState } = require('./symbols')
-const { isBlobLike } = require('./util')
-const { webidl } = require('./webidl')
-const { parseMIMEType, serializeAMimeType } = require('./dataURL')
-const { kEnumerableProperty } = require('../core/util')
-const encoder = new TextEncoder()
-
-class File extends Blob {
-  constructor (fileBits, fileName, options = {}) {
-    // The File constructor is invoked with two or three parameters, depending
-    // on whether the optional dictionary parameter is used. When the File()
-    // constructor is invoked, user agents must run the following steps:
-    webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' })
-
-    fileBits = webidl.converters['sequence<BlobPart>'](fileBits)
-    fileName = webidl.converters.USVString(fileName)
-    options = webidl.converters.FilePropertyBag(options)
-
-    // 1. Let bytes be the result of processing blob parts given fileBits and
-    // options.
-    // Note: Blob handles this for us
-
-    // 2. Let n be the fileName argument to the constructor.
-    const n = fileName
-
-    // 3. Process FilePropertyBag dictionary argument by running the following
-    // substeps:
-
-    //    1. If the type member is provided and is not the empty string, let t
-    //    be set to the type dictionary member. If t contains any characters
-    //    outside the range U+0020 to U+007E, then set t to the empty string
-    //    and return from these substeps.
-    //    2. Convert every character in t to ASCII lowercase.
-    let t = options.type
-    let d
-
-    // eslint-disable-next-line no-labels
-    substep: {
-      if (t) {
-        t = parseMIMEType(t)
-
-        if (t === 'failure') {
-          t = ''
-          // eslint-disable-next-line no-labels
-          break substep
-        }
-
-        t = serializeAMimeType(t).toLowerCase()
-      }
-
-      //    3. If the lastModified member is provided, let d be set to the
-      //    lastModified dictionary member. If it is not provided, set d to the
-      //    current date and time represented as the number of milliseconds since
-      //    the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).
-      d = options.lastModified
-    }
-
-    // 4. Return a new File object F such that:
-    // F refers to the bytes byte sequence.
-    // F.size is set to the number of total bytes in bytes.
-    // F.name is set to n.
-    // F.type is set to t.
-    // F.lastModified is set to d.
-
-    super(processBlobParts(fileBits, options), { type: t })
-    this[kState] = {
-      name: n,
-      lastModified: d,
-      type: t
-    }
-  }
-
-  get name () {
-    webidl.brandCheck(this, File)
-
-    return this[kState].name
-  }
-
-  get lastModified () {
-    webidl.brandCheck(this, File)
-
-    return this[kState].lastModified
-  }
-
-  get type () {
-    webidl.brandCheck(this, File)
-
-    return this[kState].type
-  }
-}
-
-class FileLike {
-  constructor (blobLike, fileName, options = {}) {
-    // TODO: argument idl type check
-
-    // The File constructor is invoked with two or three parameters, depending
-    // on whether the optional dictionary parameter is used. When the File()
-    // constructor is invoked, user agents must run the following steps:
-
-    // 1. Let bytes be the result of processing blob parts given fileBits and
-    // options.
-
-    // 2. Let n be the fileName argument to the constructor.
-    const n = fileName
-
-    // 3. Process FilePropertyBag dictionary argument by running the following
-    // substeps:
-
-    //    1. If the type member is provided and is not the empty string, let t
-    //    be set to the type dictionary member. If t contains any characters
-    //    outside the range U+0020 to U+007E, then set t to the empty string
-    //    and return from these substeps.
-    //    TODO
-    const t = options.type
-
-    //    2. Convert every character in t to ASCII lowercase.
-    //    TODO
-
-    //    3. If the lastModified member is provided, let d be set to the
-    //    lastModified dictionary member. If it is not provided, set d to the
-    //    current date and time represented as the number of milliseconds since
-    //    the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).
-    const d = options.lastModified ?? Date.now()
-
-    // 4. Return a new File object F such that:
-    // F refers to the bytes byte sequence.
-    // F.size is set to the number of total bytes in bytes.
-    // F.name is set to n.
-    // F.type is set to t.
-    // F.lastModified is set to d.
-
-    this[kState] = {
-      blobLike,
-      name: n,
-      type: t,
-      lastModified: d
-    }
-  }
-
-  stream (...args) {
-    webidl.brandCheck(this, FileLike)
-
-    return this[kState].blobLike.stream(...args)
-  }
-
-  arrayBuffer (...args) {
-    webidl.brandCheck(this, FileLike)
-
-    return this[kState].blobLike.arrayBuffer(...args)
-  }
-
-  slice (...args) {
-    webidl.brandCheck(this, FileLike)
-
-    return this[kState].blobLike.slice(...args)
-  }
-
-  text (...args) {
-    webidl.brandCheck(this, FileLike)
-
-    return this[kState].blobLike.text(...args)
-  }
-
-  get size () {
-    webidl.brandCheck(this, FileLike)
-
-    return this[kState].blobLike.size
-  }
-
-  get type () {
-    webidl.brandCheck(this, FileLike)
-
-    return this[kState].blobLike.type
-  }
-
-  get name () {
-    webidl.brandCheck(this, FileLike)
-
-    return this[kState].name
-  }
-
-  get lastModified () {
-    webidl.brandCheck(this, FileLike)
-
-    return this[kState].lastModified
-  }
-
-  get [Symbol.toStringTag] () {
-    return 'File'
-  }
-}
-
-Object.defineProperties(File.prototype, {
-  [Symbol.toStringTag]: {
-    value: 'File',
-    configurable: true
-  },
-  name: kEnumerableProperty,
-  lastModified: kEnumerableProperty
-})
-
-webidl.converters.Blob = webidl.interfaceConverter(Blob)
-
-webidl.converters.BlobPart = function (V, opts) {
-  if (webidl.util.Type(V) === 'Object') {
-    if (isBlobLike(V)) {
-      return webidl.converters.Blob(V, { strict: false })
-    }
-
-    if (
-      ArrayBuffer.isView(V) ||
-      types.isAnyArrayBuffer(V)
-    ) {
-      return webidl.converters.BufferSource(V, opts)
-    }
-  }
-
-  return webidl.converters.USVString(V, opts)
-}
-
-webidl.converters['sequence<BlobPart>'] = webidl.sequenceConverter(
-  webidl.converters.BlobPart
-)
-
-// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag
-webidl.converters.FilePropertyBag = webidl.dictionaryConverter([
-  {
-    key: 'lastModified',
-    converter: webidl.converters['long long'],
-    get defaultValue () {
-      return Date.now()
-    }
-  },
-  {
-    key: 'type',
-    converter: webidl.converters.DOMString,
-    defaultValue: ''
-  },
-  {
-    key: 'endings',
-    converter: (value) => {
-      value = webidl.converters.DOMString(value)
-      value = value.toLowerCase()
-
-      if (value !== 'native') {
-        value = 'transparent'
-      }
-
-      return value
-    },
-    defaultValue: 'transparent'
-  }
-])
-
-/**
- * @see https://www.w3.org/TR/FileAPI/#process-blob-parts
- * @param {(NodeJS.TypedArray|Blob|string)[]} parts
- * @param {{ type: string, endings: string }} options
- */
-function processBlobParts (parts, options) {
-  // 1. Let bytes be an empty sequence of bytes.
-  /** @type {NodeJS.TypedArray[]} */
-  const bytes = []
-
-  // 2. For each element in parts:
-  for (const element of parts) {
-    // 1. If element is a USVString, run the following substeps:
-    if (typeof element === 'string') {
-      // 1. Let s be element.
-      let s = element
-
-      // 2. If the endings member of options is "native", set s
-      //    to the result of converting line endings to native
-      //    of element.
-      if (options.endings === 'native') {
-        s = convertLineEndingsNative(s)
-      }
-
-      // 3. Append the result of UTF-8 encoding s to bytes.
-      bytes.push(encoder.encode(s))
-    } else if (
-      types.isAnyArrayBuffer(element) ||
-      types.isTypedArray(element)
-    ) {
-      // 2. If element is a BufferSource, get a copy of the
-      //    bytes held by the buffer source, and append those
-      //    bytes to bytes.
-      if (!element.buffer) { // ArrayBuffer
-        bytes.push(new Uint8Array(element))
-      } else {
-        bytes.push(
-          new Uint8Array(element.buffer, element.byteOffset, element.byteLength)
-        )
-      }
-    } else if (isBlobLike(element)) {
-      // 3. If element is a Blob, append the bytes it represents
-      //    to bytes.
-      bytes.push(element)
-    }
-  }
-
-  // 3. Return bytes.
-  return bytes
-}
-
-/**
- * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native
- * @param {string} s
- */
-function convertLineEndingsNative (s) {
-  // 1. Let native line ending be be the code point U+000A LF.
-  let nativeLineEnding = '\n'
-
-  // 2. If the underlying platform’s conventions are to
-  //    represent newlines as a carriage return and line feed
-  //    sequence, set native line ending to the code point
-  //    U+000D CR followed by the code point U+000A LF.
-  if (process.platform === 'win32') {
-    nativeLineEnding = '\r\n'
-  }
-
-  return s.replace(/\r?\n/g, nativeLineEnding)
-}
-
-// If this function is moved to ./util.js, some tools (such as
-// rollup) will warn about circular dependencies. See:
-// https://github.com/nodejs/undici/issues/1629
-function isFileLike (object) {
-  return (
-    (NativeFile && object instanceof NativeFile) ||
-    object instanceof File || (
-      object &&
-      (typeof object.stream === 'function' ||
-      typeof object.arrayBuffer === 'function') &&
-      object[Symbol.toStringTag] === 'File'
-    )
-  )
-}
-
-module.exports = { File, FileLike, isFileLike }
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/formdata.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/formdata.js
deleted file mode 100644
index 5975e26..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/formdata.js
+++ /dev/null
@@ -1,265 +0,0 @@
-'use strict'
-
-const { isBlobLike, toUSVString, makeIterator } = require('./util')
-const { kState } = require('./symbols')
-const { File: UndiciFile, FileLike, isFileLike } = require('./file')
-const { webidl } = require('./webidl')
-const { Blob, File: NativeFile } = require('buffer')
-
-/** @type {globalThis['File']} */
-const File = NativeFile ?? UndiciFile
-
-// https://xhr.spec.whatwg.org/#formdata
-class FormData {
-  constructor (form) {
-    if (form !== undefined) {
-      throw webidl.errors.conversionFailed({
-        prefix: 'FormData constructor',
-        argument: 'Argument 1',
-        types: ['undefined']
-      })
-    }
-
-    this[kState] = []
-  }
-
-  append (name, value, filename = undefined) {
-    webidl.brandCheck(this, FormData)
-
-    webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' })
-
-    if (arguments.length === 3 && !isBlobLike(value)) {
-      throw new TypeError(
-        "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'"
-      )
-    }
-
-    // 1. Let value be value if given; otherwise blobValue.
-
-    name = webidl.converters.USVString(name)
-    value = isBlobLike(value)
-      ? webidl.converters.Blob(value, { strict: false })
-      : webidl.converters.USVString(value)
-    filename = arguments.length === 3
-      ? webidl.converters.USVString(filename)
-      : undefined
-
-    // 2. Let entry be the result of creating an entry with
-    // name, value, and filename if given.
-    const entry = makeEntry(name, value, filename)
-
-    // 3. Append entry to this’s entry list.
-    this[kState].push(entry)
-  }
-
-  delete (name) {
-    webidl.brandCheck(this, FormData)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' })
-
-    name = webidl.converters.USVString(name)
-
-    // The delete(name) method steps are to remove all entries whose name
-    // is name from this’s entry list.
-    this[kState] = this[kState].filter(entry => entry.name !== name)
-  }
-
-  get (name) {
-    webidl.brandCheck(this, FormData)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' })
-
-    name = webidl.converters.USVString(name)
-
-    // 1. If there is no entry whose name is name in this’s entry list,
-    // then return null.
-    const idx = this[kState].findIndex((entry) => entry.name === name)
-    if (idx === -1) {
-      return null
-    }
-
-    // 2. Return the value of the first entry whose name is name from
-    // this’s entry list.
-    return this[kState][idx].value
-  }
-
-  getAll (name) {
-    webidl.brandCheck(this, FormData)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' })
-
-    name = webidl.converters.USVString(name)
-
-    // 1. If there is no entry whose name is name in this’s entry list,
-    // then return the empty list.
-    // 2. Return the values of all entries whose name is name, in order,
-    // from this’s entry list.
-    return this[kState]
-      .filter((entry) => entry.name === name)
-      .map((entry) => entry.value)
-  }
-
-  has (name) {
-    webidl.brandCheck(this, FormData)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' })
-
-    name = webidl.converters.USVString(name)
-
-    // The has(name) method steps are to return true if there is an entry
-    // whose name is name in this’s entry list; otherwise false.
-    return this[kState].findIndex((entry) => entry.name === name) !== -1
-  }
-
-  set (name, value, filename = undefined) {
-    webidl.brandCheck(this, FormData)
-
-    webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' })
-
-    if (arguments.length === 3 && !isBlobLike(value)) {
-      throw new TypeError(
-        "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'"
-      )
-    }
-
-    // The set(name, value) and set(name, blobValue, filename) method steps
-    // are:
-
-    // 1. Let value be value if given; otherwise blobValue.
-
-    name = webidl.converters.USVString(name)
-    value = isBlobLike(value)
-      ? webidl.converters.Blob(value, { strict: false })
-      : webidl.converters.USVString(value)
-    filename = arguments.length === 3
-      ? toUSVString(filename)
-      : undefined
-
-    // 2. Let entry be the result of creating an entry with name, value, and
-    // filename if given.
-    const entry = makeEntry(name, value, filename)
-
-    // 3. If there are entries in this’s entry list whose name is name, then
-    // replace the first such entry with entry and remove the others.
-    const idx = this[kState].findIndex((entry) => entry.name === name)
-    if (idx !== -1) {
-      this[kState] = [
-        ...this[kState].slice(0, idx),
-        entry,
-        ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name)
-      ]
-    } else {
-      // 4. Otherwise, append entry to this’s entry list.
-      this[kState].push(entry)
-    }
-  }
-
-  entries () {
-    webidl.brandCheck(this, FormData)
-
-    return makeIterator(
-      () => this[kState].map(pair => [pair.name, pair.value]),
-      'FormData',
-      'key+value'
-    )
-  }
-
-  keys () {
-    webidl.brandCheck(this, FormData)
-
-    return makeIterator(
-      () => this[kState].map(pair => [pair.name, pair.value]),
-      'FormData',
-      'key'
-    )
-  }
-
-  values () {
-    webidl.brandCheck(this, FormData)
-
-    return makeIterator(
-      () => this[kState].map(pair => [pair.name, pair.value]),
-      'FormData',
-      'value'
-    )
-  }
-
-  /**
-   * @param {(value: string, key: string, self: FormData) => void} callbackFn
-   * @param {unknown} thisArg
-   */
-  forEach (callbackFn, thisArg = globalThis) {
-    webidl.brandCheck(this, FormData)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' })
-
-    if (typeof callbackFn !== 'function') {
-      throw new TypeError(
-        "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'."
-      )
-    }
-
-    for (const [key, value] of this) {
-      callbackFn.apply(thisArg, [value, key, this])
-    }
-  }
-}
-
-FormData.prototype[Symbol.iterator] = FormData.prototype.entries
-
-Object.defineProperties(FormData.prototype, {
-  [Symbol.toStringTag]: {
-    value: 'FormData',
-    configurable: true
-  }
-})
-
-/**
- * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry
- * @param {string} name
- * @param {string|Blob} value
- * @param {?string} filename
- * @returns
- */
-function makeEntry (name, value, filename) {
-  // 1. Set name to the result of converting name into a scalar value string.
-  // "To convert a string into a scalar value string, replace any surrogates
-  //  with U+FFFD."
-  // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end
-  name = Buffer.from(name).toString('utf8')
-
-  // 2. If value is a string, then set value to the result of converting
-  //    value into a scalar value string.
-  if (typeof value === 'string') {
-    value = Buffer.from(value).toString('utf8')
-  } else {
-    // 3. Otherwise:
-
-    // 1. If value is not a File object, then set value to a new File object,
-    //    representing the same bytes, whose name attribute value is "blob"
-    if (!isFileLike(value)) {
-      value = value instanceof Blob
-        ? new File([value], 'blob', { type: value.type })
-        : new FileLike(value, 'blob', { type: value.type })
-    }
-
-    // 2. If filename is given, then set value to a new File object,
-    //    representing the same bytes, whose name attribute is filename.
-    if (filename !== undefined) {
-      /** @type {FilePropertyBag} */
-      const options = {
-        type: value.type,
-        lastModified: value.lastModified
-      }
-
-      value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile
-        ? new File([value], filename, options)
-        : new FileLike(value, filename, options)
-    }
-  }
-
-  // 4. Return an entry whose name is name and whose value is value.
-  return { name, value }
-}
-
-module.exports = { FormData }
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/global.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/global.js
deleted file mode 100644
index 1df6f12..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/global.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict'
-
-// In case of breaking changes, increase the version
-// number to avoid conflicts.
-const globalOrigin = Symbol.for('undici.globalOrigin.1')
-
-function getGlobalOrigin () {
-  return globalThis[globalOrigin]
-}
-
-function setGlobalOrigin (newOrigin) {
-  if (newOrigin === undefined) {
-    Object.defineProperty(globalThis, globalOrigin, {
-      value: undefined,
-      writable: true,
-      enumerable: false,
-      configurable: false
-    })
-
-    return
-  }
-
-  const parsedURL = new URL(newOrigin)
-
-  if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {
-    throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`)
-  }
-
-  Object.defineProperty(globalThis, globalOrigin, {
-    value: parsedURL,
-    writable: true,
-    enumerable: false,
-    configurable: false
-  })
-}
-
-module.exports = {
-  getGlobalOrigin,
-  setGlobalOrigin
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/headers.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/headers.js
deleted file mode 100644
index 2f1c0be..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/headers.js
+++ /dev/null
@@ -1,589 +0,0 @@
-// https://github.com/Ethan-Arrowood/undici-fetch
-
-'use strict'
-
-const { kHeadersList, kConstruct } = require('../core/symbols')
-const { kGuard } = require('./symbols')
-const { kEnumerableProperty } = require('../core/util')
-const {
-  makeIterator,
-  isValidHeaderName,
-  isValidHeaderValue
-} = require('./util')
-const { webidl } = require('./webidl')
-const assert = require('assert')
-
-const kHeadersMap = Symbol('headers map')
-const kHeadersSortedMap = Symbol('headers map sorted')
-
-/**
- * @param {number} code
- */
-function isHTTPWhiteSpaceCharCode (code) {
-  return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020
-}
-
-/**
- * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize
- * @param {string} potentialValue
- */
-function headerValueNormalize (potentialValue) {
-  //  To normalize a byte sequence potentialValue, remove
-  //  any leading and trailing HTTP whitespace bytes from
-  //  potentialValue.
-  let i = 0; let j = potentialValue.length
-
-  while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j
-  while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i
-
-  return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)
-}
-
-function fill (headers, object) {
-  // To fill a Headers object headers with a given object object, run these steps:
-
-  // 1. If object is a sequence, then for each header in object:
-  // Note: webidl conversion to array has already been done.
-  if (Array.isArray(object)) {
-    for (let i = 0; i < object.length; ++i) {
-      const header = object[i]
-      // 1. If header does not contain exactly two items, then throw a TypeError.
-      if (header.length !== 2) {
-        throw webidl.errors.exception({
-          header: 'Headers constructor',
-          message: `expected name/value pair to be length 2, found ${header.length}.`
-        })
-      }
-
-      // 2. Append (header’s first item, header’s second item) to headers.
-      appendHeader(headers, header[0], header[1])
-    }
-  } else if (typeof object === 'object' && object !== null) {
-    // Note: null should throw
-
-    // 2. Otherwise, object is a record, then for each key → value in object,
-    //    append (key, value) to headers
-    const keys = Object.keys(object)
-    for (let i = 0; i < keys.length; ++i) {
-      appendHeader(headers, keys[i], object[keys[i]])
-    }
-  } else {
-    throw webidl.errors.conversionFailed({
-      prefix: 'Headers constructor',
-      argument: 'Argument 1',
-      types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>']
-    })
-  }
-}
-
-/**
- * @see https://fetch.spec.whatwg.org/#concept-headers-append
- */
-function appendHeader (headers, name, value) {
-  // 1. Normalize value.
-  value = headerValueNormalize(value)
-
-  // 2. If name is not a header name or value is not a
-  //    header value, then throw a TypeError.
-  if (!isValidHeaderName(name)) {
-    throw webidl.errors.invalidArgument({
-      prefix: 'Headers.append',
-      value: name,
-      type: 'header name'
-    })
-  } else if (!isValidHeaderValue(value)) {
-    throw webidl.errors.invalidArgument({
-      prefix: 'Headers.append',
-      value,
-      type: 'header value'
-    })
-  }
-
-  // 3. If headers’s guard is "immutable", then throw a TypeError.
-  // 4. Otherwise, if headers’s guard is "request" and name is a
-  //    forbidden header name, return.
-  // Note: undici does not implement forbidden header names
-  if (headers[kGuard] === 'immutable') {
-    throw new TypeError('immutable')
-  } else if (headers[kGuard] === 'request-no-cors') {
-    // 5. Otherwise, if headers’s guard is "request-no-cors":
-    // TODO
-  }
-
-  // 6. Otherwise, if headers’s guard is "response" and name is a
-  //    forbidden response-header name, return.
-
-  // 7. Append (name, value) to headers’s header list.
-  return headers[kHeadersList].append(name, value)
-
-  // 8. If headers’s guard is "request-no-cors", then remove
-  //    privileged no-CORS request headers from headers
-}
-
-class HeadersList {
-  /** @type {[string, string][]|null} */
-  cookies = null
-
-  constructor (init) {
-    if (init instanceof HeadersList) {
-      this[kHeadersMap] = new Map(init[kHeadersMap])
-      this[kHeadersSortedMap] = init[kHeadersSortedMap]
-      this.cookies = init.cookies === null ? null : [...init.cookies]
-    } else {
-      this[kHeadersMap] = new Map(init)
-      this[kHeadersSortedMap] = null
-    }
-  }
-
-  // https://fetch.spec.whatwg.org/#header-list-contains
-  contains (name) {
-    // A header list list contains a header name name if list
-    // contains a header whose name is a byte-case-insensitive
-    // match for name.
-    name = name.toLowerCase()
-
-    return this[kHeadersMap].has(name)
-  }
-
-  clear () {
-    this[kHeadersMap].clear()
-    this[kHeadersSortedMap] = null
-    this.cookies = null
-  }
-
-  // https://fetch.spec.whatwg.org/#concept-header-list-append
-  append (name, value) {
-    this[kHeadersSortedMap] = null
-
-    // 1. If list contains name, then set name to the first such
-    //    header’s name.
-    const lowercaseName = name.toLowerCase()
-    const exists = this[kHeadersMap].get(lowercaseName)
-
-    // 2. Append (name, value) to list.
-    if (exists) {
-      const delimiter = lowercaseName === 'cookie' ? '; ' : ', '
-      this[kHeadersMap].set(lowercaseName, {
-        name: exists.name,
-        value: `${exists.value}${delimiter}${value}`
-      })
-    } else {
-      this[kHeadersMap].set(lowercaseName, { name, value })
-    }
-
-    if (lowercaseName === 'set-cookie') {
-      this.cookies ??= []
-      this.cookies.push(value)
-    }
-  }
-
-  // https://fetch.spec.whatwg.org/#concept-header-list-set
-  set (name, value) {
-    this[kHeadersSortedMap] = null
-    const lowercaseName = name.toLowerCase()
-
-    if (lowercaseName === 'set-cookie') {
-      this.cookies = [value]
-    }
-
-    // 1. If list contains name, then set the value of
-    //    the first such header to value and remove the
-    //    others.
-    // 2. Otherwise, append header (name, value) to list.
-    this[kHeadersMap].set(lowercaseName, { name, value })
-  }
-
-  // https://fetch.spec.whatwg.org/#concept-header-list-delete
-  delete (name) {
-    this[kHeadersSortedMap] = null
-
-    name = name.toLowerCase()
-
-    if (name === 'set-cookie') {
-      this.cookies = null
-    }
-
-    this[kHeadersMap].delete(name)
-  }
-
-  // https://fetch.spec.whatwg.org/#concept-header-list-get
-  get (name) {
-    const value = this[kHeadersMap].get(name.toLowerCase())
-
-    // 1. If list does not contain name, then return null.
-    // 2. Return the values of all headers in list whose name
-    //    is a byte-case-insensitive match for name,
-    //    separated from each other by 0x2C 0x20, in order.
-    return value === undefined ? null : value.value
-  }
-
-  * [Symbol.iterator] () {
-    // use the lowercased name
-    for (const [name, { value }] of this[kHeadersMap]) {
-      yield [name, value]
-    }
-  }
-
-  get entries () {
-    const headers = {}
-
-    if (this[kHeadersMap].size) {
-      for (const { name, value } of this[kHeadersMap].values()) {
-        headers[name] = value
-      }
-    }
-
-    return headers
-  }
-}
-
-// https://fetch.spec.whatwg.org/#headers-class
-class Headers {
-  constructor (init = undefined) {
-    if (init === kConstruct) {
-      return
-    }
-    this[kHeadersList] = new HeadersList()
-
-    // The new Headers(init) constructor steps are:
-
-    // 1. Set this’s guard to "none".
-    this[kGuard] = 'none'
-
-    // 2. If init is given, then fill this with init.
-    if (init !== undefined) {
-      init = webidl.converters.HeadersInit(init)
-      fill(this, init)
-    }
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-headers-append
-  append (name, value) {
-    webidl.brandCheck(this, Headers)
-
-    webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' })
-
-    name = webidl.converters.ByteString(name)
-    value = webidl.converters.ByteString(value)
-
-    return appendHeader(this, name, value)
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-headers-delete
-  delete (name) {
-    webidl.brandCheck(this, Headers)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' })
-
-    name = webidl.converters.ByteString(name)
-
-    // 1. If name is not a header name, then throw a TypeError.
-    if (!isValidHeaderName(name)) {
-      throw webidl.errors.invalidArgument({
-        prefix: 'Headers.delete',
-        value: name,
-        type: 'header name'
-      })
-    }
-
-    // 2. If this’s guard is "immutable", then throw a TypeError.
-    // 3. Otherwise, if this’s guard is "request" and name is a
-    //    forbidden header name, return.
-    // 4. Otherwise, if this’s guard is "request-no-cors", name
-    //    is not a no-CORS-safelisted request-header name, and
-    //    name is not a privileged no-CORS request-header name,
-    //    return.
-    // 5. Otherwise, if this’s guard is "response" and name is
-    //    a forbidden response-header name, return.
-    // Note: undici does not implement forbidden header names
-    if (this[kGuard] === 'immutable') {
-      throw new TypeError('immutable')
-    } else if (this[kGuard] === 'request-no-cors') {
-      // TODO
-    }
-
-    // 6. If this’s header list does not contain name, then
-    //    return.
-    if (!this[kHeadersList].contains(name)) {
-      return
-    }
-
-    // 7. Delete name from this’s header list.
-    // 8. If this’s guard is "request-no-cors", then remove
-    //    privileged no-CORS request headers from this.
-    this[kHeadersList].delete(name)
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-headers-get
-  get (name) {
-    webidl.brandCheck(this, Headers)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' })
-
-    name = webidl.converters.ByteString(name)
-
-    // 1. If name is not a header name, then throw a TypeError.
-    if (!isValidHeaderName(name)) {
-      throw webidl.errors.invalidArgument({
-        prefix: 'Headers.get',
-        value: name,
-        type: 'header name'
-      })
-    }
-
-    // 2. Return the result of getting name from this’s header
-    //    list.
-    return this[kHeadersList].get(name)
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-headers-has
-  has (name) {
-    webidl.brandCheck(this, Headers)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' })
-
-    name = webidl.converters.ByteString(name)
-
-    // 1. If name is not a header name, then throw a TypeError.
-    if (!isValidHeaderName(name)) {
-      throw webidl.errors.invalidArgument({
-        prefix: 'Headers.has',
-        value: name,
-        type: 'header name'
-      })
-    }
-
-    // 2. Return true if this’s header list contains name;
-    //    otherwise false.
-    return this[kHeadersList].contains(name)
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-headers-set
-  set (name, value) {
-    webidl.brandCheck(this, Headers)
-
-    webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' })
-
-    name = webidl.converters.ByteString(name)
-    value = webidl.converters.ByteString(value)
-
-    // 1. Normalize value.
-    value = headerValueNormalize(value)
-
-    // 2. If name is not a header name or value is not a
-    //    header value, then throw a TypeError.
-    if (!isValidHeaderName(name)) {
-      throw webidl.errors.invalidArgument({
-        prefix: 'Headers.set',
-        value: name,
-        type: 'header name'
-      })
-    } else if (!isValidHeaderValue(value)) {
-      throw webidl.errors.invalidArgument({
-        prefix: 'Headers.set',
-        value,
-        type: 'header value'
-      })
-    }
-
-    // 3. If this’s guard is "immutable", then throw a TypeError.
-    // 4. Otherwise, if this’s guard is "request" and name is a
-    //    forbidden header name, return.
-    // 5. Otherwise, if this’s guard is "request-no-cors" and
-    //    name/value is not a no-CORS-safelisted request-header,
-    //    return.
-    // 6. Otherwise, if this’s guard is "response" and name is a
-    //    forbidden response-header name, return.
-    // Note: undici does not implement forbidden header names
-    if (this[kGuard] === 'immutable') {
-      throw new TypeError('immutable')
-    } else if (this[kGuard] === 'request-no-cors') {
-      // TODO
-    }
-
-    // 7. Set (name, value) in this’s header list.
-    // 8. If this’s guard is "request-no-cors", then remove
-    //    privileged no-CORS request headers from this
-    this[kHeadersList].set(name, value)
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie
-  getSetCookie () {
-    webidl.brandCheck(this, Headers)
-
-    // 1. If this’s header list does not contain `Set-Cookie`, then return « ».
-    // 2. Return the values of all headers in this’s header list whose name is
-    //    a byte-case-insensitive match for `Set-Cookie`, in order.
-
-    const list = this[kHeadersList].cookies
-
-    if (list) {
-      return [...list]
-    }
-
-    return []
-  }
-
-  // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine
-  get [kHeadersSortedMap] () {
-    if (this[kHeadersList][kHeadersSortedMap]) {
-      return this[kHeadersList][kHeadersSortedMap]
-    }
-
-    // 1. Let headers be an empty list of headers with the key being the name
-    //    and value the value.
-    const headers = []
-
-    // 2. Let names be the result of convert header names to a sorted-lowercase
-    //    set with all the names of the headers in list.
-    const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1)
-    const cookies = this[kHeadersList].cookies
-
-    // 3. For each name of names:
-    for (let i = 0; i < names.length; ++i) {
-      const [name, value] = names[i]
-      // 1. If name is `set-cookie`, then:
-      if (name === 'set-cookie') {
-        // 1. Let values be a list of all values of headers in list whose name
-        //    is a byte-case-insensitive match for name, in order.
-
-        // 2. For each value of values:
-        // 1. Append (name, value) to headers.
-        for (let j = 0; j < cookies.length; ++j) {
-          headers.push([name, cookies[j]])
-        }
-      } else {
-        // 2. Otherwise:
-
-        // 1. Let value be the result of getting name from list.
-
-        // 2. Assert: value is non-null.
-        assert(value !== null)
-
-        // 3. Append (name, value) to headers.
-        headers.push([name, value])
-      }
-    }
-
-    this[kHeadersList][kHeadersSortedMap] = headers
-
-    // 4. Return headers.
-    return headers
-  }
-
-  keys () {
-    webidl.brandCheck(this, Headers)
-
-    if (this[kGuard] === 'immutable') {
-      const value = this[kHeadersSortedMap]
-      return makeIterator(() => value, 'Headers',
-        'key')
-    }
-
-    return makeIterator(
-      () => [...this[kHeadersSortedMap].values()],
-      'Headers',
-      'key'
-    )
-  }
-
-  values () {
-    webidl.brandCheck(this, Headers)
-
-    if (this[kGuard] === 'immutable') {
-      const value = this[kHeadersSortedMap]
-      return makeIterator(() => value, 'Headers',
-        'value')
-    }
-
-    return makeIterator(
-      () => [...this[kHeadersSortedMap].values()],
-      'Headers',
-      'value'
-    )
-  }
-
-  entries () {
-    webidl.brandCheck(this, Headers)
-
-    if (this[kGuard] === 'immutable') {
-      const value = this[kHeadersSortedMap]
-      return makeIterator(() => value, 'Headers',
-        'key+value')
-    }
-
-    return makeIterator(
-      () => [...this[kHeadersSortedMap].values()],
-      'Headers',
-      'key+value'
-    )
-  }
-
-  /**
-   * @param {(value: string, key: string, self: Headers) => void} callbackFn
-   * @param {unknown} thisArg
-   */
-  forEach (callbackFn, thisArg = globalThis) {
-    webidl.brandCheck(this, Headers)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' })
-
-    if (typeof callbackFn !== 'function') {
-      throw new TypeError(
-        "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'."
-      )
-    }
-
-    for (const [key, value] of this) {
-      callbackFn.apply(thisArg, [value, key, this])
-    }
-  }
-
-  [Symbol.for('nodejs.util.inspect.custom')] () {
-    webidl.brandCheck(this, Headers)
-
-    return this[kHeadersList]
-  }
-}
-
-Headers.prototype[Symbol.iterator] = Headers.prototype.entries
-
-Object.defineProperties(Headers.prototype, {
-  append: kEnumerableProperty,
-  delete: kEnumerableProperty,
-  get: kEnumerableProperty,
-  has: kEnumerableProperty,
-  set: kEnumerableProperty,
-  getSetCookie: kEnumerableProperty,
-  keys: kEnumerableProperty,
-  values: kEnumerableProperty,
-  entries: kEnumerableProperty,
-  forEach: kEnumerableProperty,
-  [Symbol.iterator]: { enumerable: false },
-  [Symbol.toStringTag]: {
-    value: 'Headers',
-    configurable: true
-  }
-})
-
-webidl.converters.HeadersInit = function (V) {
-  if (webidl.util.Type(V) === 'Object') {
-    if (V[Symbol.iterator]) {
-      return webidl.converters['sequence<sequence<ByteString>>'](V)
-    }
-
-    return webidl.converters['record<ByteString, ByteString>'](V)
-  }
-
-  throw webidl.errors.conversionFailed({
-    prefix: 'Headers constructor',
-    argument: 'Argument 1',
-    types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>']
-  })
-}
-
-module.exports = {
-  fill,
-  Headers,
-  HeadersList
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/index.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/index.js
deleted file mode 100644
index 17c3d87..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/index.js
+++ /dev/null
@@ -1,2145 +0,0 @@
-// https://github.com/Ethan-Arrowood/undici-fetch
-
-'use strict'
-
-const {
-  Response,
-  makeNetworkError,
-  makeAppropriateNetworkError,
-  filterResponse,
-  makeResponse
-} = require('./response')
-const { Headers } = require('./headers')
-const { Request, makeRequest } = require('./request')
-const zlib = require('zlib')
-const {
-  bytesMatch,
-  makePolicyContainer,
-  clonePolicyContainer,
-  requestBadPort,
-  TAOCheck,
-  appendRequestOriginHeader,
-  responseLocationURL,
-  requestCurrentURL,
-  setRequestReferrerPolicyOnRedirect,
-  tryUpgradeRequestToAPotentiallyTrustworthyURL,
-  createOpaqueTimingInfo,
-  appendFetchMetadata,
-  corsCheck,
-  crossOriginResourcePolicyCheck,
-  determineRequestsReferrer,
-  coarsenedSharedCurrentTime,
-  createDeferredPromise,
-  isBlobLike,
-  sameOrigin,
-  isCancelled,
-  isAborted,
-  isErrorLike,
-  fullyReadBody,
-  readableStreamClose,
-  isomorphicEncode,
-  urlIsLocal,
-  urlIsHttpHttpsScheme,
-  urlHasHttpsScheme
-} = require('./util')
-const { kState, kHeaders, kGuard, kRealm } = require('./symbols')
-const assert = require('assert')
-const { safelyExtractBody } = require('./body')
-const {
-  redirectStatusSet,
-  nullBodyStatus,
-  safeMethodsSet,
-  requestBodyHeader,
-  subresourceSet,
-  DOMException
-} = require('./constants')
-const { kHeadersList } = require('../core/symbols')
-const EE = require('events')
-const { Readable, pipeline } = require('stream')
-const { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require('../core/util')
-const { dataURLProcessor, serializeAMimeType } = require('./dataURL')
-const { TransformStream } = require('stream/web')
-const { getGlobalDispatcher } = require('../global')
-const { webidl } = require('./webidl')
-const { STATUS_CODES } = require('http')
-const GET_OR_HEAD = ['GET', 'HEAD']
-
-/** @type {import('buffer').resolveObjectURL} */
-let resolveObjectURL
-let ReadableStream = globalThis.ReadableStream
-
-class Fetch extends EE {
-  constructor (dispatcher) {
-    super()
-
-    this.dispatcher = dispatcher
-    this.connection = null
-    this.dump = false
-    this.state = 'ongoing'
-    // 2 terminated listeners get added per request,
-    // but only 1 gets removed. If there are 20 redirects,
-    // 21 listeners will be added.
-    // See https://github.com/nodejs/undici/issues/1711
-    // TODO (fix): Find and fix root cause for leaked listener.
-    this.setMaxListeners(21)
-  }
-
-  terminate (reason) {
-    if (this.state !== 'ongoing') {
-      return
-    }
-
-    this.state = 'terminated'
-    this.connection?.destroy(reason)
-    this.emit('terminated', reason)
-  }
-
-  // https://fetch.spec.whatwg.org/#fetch-controller-abort
-  abort (error) {
-    if (this.state !== 'ongoing') {
-      return
-    }
-
-    // 1. Set controller’s state to "aborted".
-    this.state = 'aborted'
-
-    // 2. Let fallbackError be an "AbortError" DOMException.
-    // 3. Set error to fallbackError if it is not given.
-    if (!error) {
-      error = new DOMException('The operation was aborted.', 'AbortError')
-    }
-
-    // 4. Let serializedError be StructuredSerialize(error).
-    //    If that threw an exception, catch it, and let
-    //    serializedError be StructuredSerialize(fallbackError).
-
-    // 5. Set controller’s serialized abort reason to serializedError.
-    this.serializedAbortReason = error
-
-    this.connection?.destroy(error)
-    this.emit('terminated', error)
-  }
-}
-
-// https://fetch.spec.whatwg.org/#fetch-method
-function fetch (input, init = {}) {
-  webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })
-
-  // 1. Let p be a new promise.
-  const p = createDeferredPromise()
-
-  // 2. Let requestObject be the result of invoking the initial value of
-  // Request as constructor with input and init as arguments. If this throws
-  // an exception, reject p with it and return p.
-  let requestObject
-
-  try {
-    requestObject = new Request(input, init)
-  } catch (e) {
-    p.reject(e)
-    return p.promise
-  }
-
-  // 3. Let request be requestObject’s request.
-  const request = requestObject[kState]
-
-  // 4. If requestObject’s signal’s aborted flag is set, then:
-  if (requestObject.signal.aborted) {
-    // 1. Abort the fetch() call with p, request, null, and
-    //    requestObject’s signal’s abort reason.
-    abortFetch(p, request, null, requestObject.signal.reason)
-
-    // 2. Return p.
-    return p.promise
-  }
-
-  // 5. Let globalObject be request’s client’s global object.
-  const globalObject = request.client.globalObject
-
-  // 6. If globalObject is a ServiceWorkerGlobalScope object, then set
-  // request’s service-workers mode to "none".
-  if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') {
-    request.serviceWorkers = 'none'
-  }
-
-  // 7. Let responseObject be null.
-  let responseObject = null
-
-  // 8. Let relevantRealm be this’s relevant Realm.
-  const relevantRealm = null
-
-  // 9. Let locallyAborted be false.
-  let locallyAborted = false
-
-  // 10. Let controller be null.
-  let controller = null
-
-  // 11. Add the following abort steps to requestObject’s signal:
-  addAbortListener(
-    requestObject.signal,
-    () => {
-      // 1. Set locallyAborted to true.
-      locallyAborted = true
-
-      // 2. Assert: controller is non-null.
-      assert(controller != null)
-
-      // 3. Abort controller with requestObject’s signal’s abort reason.
-      controller.abort(requestObject.signal.reason)
-
-      // 4. Abort the fetch() call with p, request, responseObject,
-      //    and requestObject’s signal’s abort reason.
-      abortFetch(p, request, responseObject, requestObject.signal.reason)
-    }
-  )
-
-  // 12. Let handleFetchDone given response response be to finalize and
-  // report timing with response, globalObject, and "fetch".
-  const handleFetchDone = (response) =>
-    finalizeAndReportTiming(response, 'fetch')
-
-  // 13. Set controller to the result of calling fetch given request,
-  // with processResponseEndOfBody set to handleFetchDone, and processResponse
-  // given response being these substeps:
-
-  const processResponse = (response) => {
-    // 1. If locallyAborted is true, terminate these substeps.
-    if (locallyAborted) {
-      return Promise.resolve()
-    }
-
-    // 2. If response’s aborted flag is set, then:
-    if (response.aborted) {
-      // 1. Let deserializedError be the result of deserialize a serialized
-      //    abort reason given controller’s serialized abort reason and
-      //    relevantRealm.
-
-      // 2. Abort the fetch() call with p, request, responseObject, and
-      //    deserializedError.
-
-      abortFetch(p, request, responseObject, controller.serializedAbortReason)
-      return Promise.resolve()
-    }
-
-    // 3. If response is a network error, then reject p with a TypeError
-    // and terminate these substeps.
-    if (response.type === 'error') {
-      p.reject(
-        Object.assign(new TypeError('fetch failed'), { cause: response.error })
-      )
-      return Promise.resolve()
-    }
-
-    // 4. Set responseObject to the result of creating a Response object,
-    // given response, "immutable", and relevantRealm.
-    responseObject = new Response()
-    responseObject[kState] = response
-    responseObject[kRealm] = relevantRealm
-    responseObject[kHeaders][kHeadersList] = response.headersList
-    responseObject[kHeaders][kGuard] = 'immutable'
-    responseObject[kHeaders][kRealm] = relevantRealm
-
-    // 5. Resolve p with responseObject.
-    p.resolve(responseObject)
-  }
-
-  controller = fetching({
-    request,
-    processResponseEndOfBody: handleFetchDone,
-    processResponse,
-    dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici
-  })
-
-  // 14. Return p.
-  return p.promise
-}
-
-// https://fetch.spec.whatwg.org/#finalize-and-report-timing
-function finalizeAndReportTiming (response, initiatorType = 'other') {
-  // 1. If response is an aborted network error, then return.
-  if (response.type === 'error' && response.aborted) {
-    return
-  }
-
-  // 2. If response’s URL list is null or empty, then return.
-  if (!response.urlList?.length) {
-    return
-  }
-
-  // 3. Let originalURL be response’s URL list[0].
-  const originalURL = response.urlList[0]
-
-  // 4. Let timingInfo be response’s timing info.
-  let timingInfo = response.timingInfo
-
-  // 5. Let cacheState be response’s cache state.
-  let cacheState = response.cacheState
-
-  // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return.
-  if (!urlIsHttpHttpsScheme(originalURL)) {
-    return
-  }
-
-  // 7. If timingInfo is null, then return.
-  if (timingInfo === null) {
-    return
-  }
-
-  // 8. If response’s timing allow passed flag is not set, then:
-  if (!response.timingAllowPassed) {
-    //  1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.
-    timingInfo = createOpaqueTimingInfo({
-      startTime: timingInfo.startTime
-    })
-
-    //  2. Set cacheState to the empty string.
-    cacheState = ''
-  }
-
-  // 9. Set timingInfo’s end time to the coarsened shared current time
-  // given global’s relevant settings object’s cross-origin isolated
-  // capability.
-  // TODO: given global’s relevant settings object’s cross-origin isolated
-  // capability?
-  timingInfo.endTime = coarsenedSharedCurrentTime()
-
-  // 10. Set response’s timing info to timingInfo.
-  response.timingInfo = timingInfo
-
-  // 11. Mark resource timing for timingInfo, originalURL, initiatorType,
-  // global, and cacheState.
-  markResourceTiming(
-    timingInfo,
-    originalURL,
-    initiatorType,
-    globalThis,
-    cacheState
-  )
-}
-
-// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing
-function markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) {
-  if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) {
-    performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState)
-  }
-}
-
-// https://fetch.spec.whatwg.org/#abort-fetch
-function abortFetch (p, request, responseObject, error) {
-  // Note: AbortSignal.reason was added in node v17.2.0
-  // which would give us an undefined error to reject with.
-  // Remove this once node v16 is no longer supported.
-  if (!error) {
-    error = new DOMException('The operation was aborted.', 'AbortError')
-  }
-
-  // 1. Reject promise with error.
-  p.reject(error)
-
-  // 2. If request’s body is not null and is readable, then cancel request’s
-  // body with error.
-  if (request.body != null && isReadable(request.body?.stream)) {
-    request.body.stream.cancel(error).catch((err) => {
-      if (err.code === 'ERR_INVALID_STATE') {
-        // Node bug?
-        return
-      }
-      throw err
-    })
-  }
-
-  // 3. If responseObject is null, then return.
-  if (responseObject == null) {
-    return
-  }
-
-  // 4. Let response be responseObject’s response.
-  const response = responseObject[kState]
-
-  // 5. If response’s body is not null and is readable, then error response’s
-  // body with error.
-  if (response.body != null && isReadable(response.body?.stream)) {
-    response.body.stream.cancel(error).catch((err) => {
-      if (err.code === 'ERR_INVALID_STATE') {
-        // Node bug?
-        return
-      }
-      throw err
-    })
-  }
-}
-
-// https://fetch.spec.whatwg.org/#fetching
-function fetching ({
-  request,
-  processRequestBodyChunkLength,
-  processRequestEndOfBody,
-  processResponse,
-  processResponseEndOfBody,
-  processResponseConsumeBody,
-  useParallelQueue = false,
-  dispatcher // undici
-}) {
-  // 1. Let taskDestination be null.
-  let taskDestination = null
-
-  // 2. Let crossOriginIsolatedCapability be false.
-  let crossOriginIsolatedCapability = false
-
-  // 3. If request’s client is non-null, then:
-  if (request.client != null) {
-    // 1. Set taskDestination to request’s client’s global object.
-    taskDestination = request.client.globalObject
-
-    // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin
-    // isolated capability.
-    crossOriginIsolatedCapability =
-      request.client.crossOriginIsolatedCapability
-  }
-
-  // 4. If useParallelQueue is true, then set taskDestination to the result of
-  // starting a new parallel queue.
-  // TODO
-
-  // 5. Let timingInfo be a new fetch timing info whose start time and
-  // post-redirect start time are the coarsened shared current time given
-  // crossOriginIsolatedCapability.
-  const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability)
-  const timingInfo = createOpaqueTimingInfo({
-    startTime: currenTime
-  })
-
-  // 6. Let fetchParams be a new fetch params whose
-  // request is request,
-  // timing info is timingInfo,
-  // process request body chunk length is processRequestBodyChunkLength,
-  // process request end-of-body is processRequestEndOfBody,
-  // process response is processResponse,
-  // process response consume body is processResponseConsumeBody,
-  // process response end-of-body is processResponseEndOfBody,
-  // task destination is taskDestination,
-  // and cross-origin isolated capability is crossOriginIsolatedCapability.
-  const fetchParams = {
-    controller: new Fetch(dispatcher),
-    request,
-    timingInfo,
-    processRequestBodyChunkLength,
-    processRequestEndOfBody,
-    processResponse,
-    processResponseConsumeBody,
-    processResponseEndOfBody,
-    taskDestination,
-    crossOriginIsolatedCapability
-  }
-
-  // 7. If request’s body is a byte sequence, then set request’s body to
-  //    request’s body as a body.
-  // NOTE: Since fetching is only called from fetch, body should already be
-  // extracted.
-  assert(!request.body || request.body.stream)
-
-  // 8. If request’s window is "client", then set request’s window to request’s
-  // client, if request’s client’s global object is a Window object; otherwise
-  // "no-window".
-  if (request.window === 'client') {
-    // TODO: What if request.client is null?
-    request.window =
-      request.client?.globalObject?.constructor?.name === 'Window'
-        ? request.client
-        : 'no-window'
-  }
-
-  // 9. If request’s origin is "client", then set request’s origin to request’s
-  // client’s origin.
-  if (request.origin === 'client') {
-    // TODO: What if request.client is null?
-    request.origin = request.client?.origin
-  }
-
-  // 10. If all of the following conditions are true:
-  // TODO
-
-  // 11. If request’s policy container is "client", then:
-  if (request.policyContainer === 'client') {
-    // 1. If request’s client is non-null, then set request’s policy
-    // container to a clone of request’s client’s policy container. [HTML]
-    if (request.client != null) {
-      request.policyContainer = clonePolicyContainer(
-        request.client.policyContainer
-      )
-    } else {
-      // 2. Otherwise, set request’s policy container to a new policy
-      // container.
-      request.policyContainer = makePolicyContainer()
-    }
-  }
-
-  // 12. If request’s header list does not contain `Accept`, then:
-  if (!request.headersList.contains('accept')) {
-    // 1. Let value be `*/*`.
-    const value = '*/*'
-
-    // 2. A user agent should set value to the first matching statement, if
-    // any, switching on request’s destination:
-    // "document"
-    // "frame"
-    // "iframe"
-    // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`
-    // "image"
-    // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5`
-    // "style"
-    // `text/css,*/*;q=0.1`
-    // TODO
-
-    // 3. Append `Accept`/value to request’s header list.
-    request.headersList.append('accept', value)
-  }
-
-  // 13. If request’s header list does not contain `Accept-Language`, then
-  // user agents should append `Accept-Language`/an appropriate value to
-  // request’s header list.
-  if (!request.headersList.contains('accept-language')) {
-    request.headersList.append('accept-language', '*')
-  }
-
-  // 14. If request’s priority is null, then use request’s initiator and
-  // destination appropriately in setting request’s priority to a
-  // user-agent-defined object.
-  if (request.priority === null) {
-    // TODO
-  }
-
-  // 15. If request is a subresource request, then:
-  if (subresourceSet.has(request.destination)) {
-    // TODO
-  }
-
-  // 16. Run main fetch given fetchParams.
-  mainFetch(fetchParams)
-    .catch(err => {
-      fetchParams.controller.terminate(err)
-    })
-
-  // 17. Return fetchParam's controller
-  return fetchParams.controller
-}
-
-// https://fetch.spec.whatwg.org/#concept-main-fetch
-async function mainFetch (fetchParams, recursive = false) {
-  // 1. Let request be fetchParams’s request.
-  const request = fetchParams.request
-
-  // 2. Let response be null.
-  let response = null
-
-  // 3. If request’s local-URLs-only flag is set and request’s current URL is
-  // not local, then set response to a network error.
-  if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {
-    response = makeNetworkError('local URLs only')
-  }
-
-  // 4. Run report Content Security Policy violations for request.
-  // TODO
-
-  // 5. Upgrade request to a potentially trustworthy URL, if appropriate.
-  tryUpgradeRequestToAPotentiallyTrustworthyURL(request)
-
-  // 6. If should request be blocked due to a bad port, should fetching request
-  // be blocked as mixed content, or should request be blocked by Content
-  // Security Policy returns blocked, then set response to a network error.
-  if (requestBadPort(request) === 'blocked') {
-    response = makeNetworkError('bad port')
-  }
-  // TODO: should fetching request be blocked as mixed content?
-  // TODO: should request be blocked by Content Security Policy?
-
-  // 7. If request’s referrer policy is the empty string, then set request’s
-  // referrer policy to request’s policy container’s referrer policy.
-  if (request.referrerPolicy === '') {
-    request.referrerPolicy = request.policyContainer.referrerPolicy
-  }
-
-  // 8. If request’s referrer is not "no-referrer", then set request’s
-  // referrer to the result of invoking determine request’s referrer.
-  if (request.referrer !== 'no-referrer') {
-    request.referrer = determineRequestsReferrer(request)
-  }
-
-  // 9. Set request’s current URL’s scheme to "https" if all of the following
-  // conditions are true:
-  // - request’s current URL’s scheme is "http"
-  // - request’s current URL’s host is a domain
-  // - Matching request’s current URL’s host per Known HSTS Host Domain Name
-  //   Matching results in either a superdomain match with an asserted
-  //   includeSubDomains directive or a congruent match (with or without an
-  //   asserted includeSubDomains directive). [HSTS]
-  // TODO
-
-  // 10. If recursive is false, then run the remaining steps in parallel.
-  // TODO
-
-  // 11. If response is null, then set response to the result of running
-  // the steps corresponding to the first matching statement:
-  if (response === null) {
-    response = await (async () => {
-      const currentURL = requestCurrentURL(request)
-
-      if (
-        // - request’s current URL’s origin is same origin with request’s origin,
-        //   and request’s response tainting is "basic"
-        (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') ||
-        // request’s current URL’s scheme is "data"
-        (currentURL.protocol === 'data:') ||
-        // - request’s mode is "navigate" or "websocket"
-        (request.mode === 'navigate' || request.mode === 'websocket')
-      ) {
-        // 1. Set request’s response tainting to "basic".
-        request.responseTainting = 'basic'
-
-        // 2. Return the result of running scheme fetch given fetchParams.
-        return await schemeFetch(fetchParams)
-      }
-
-      // request’s mode is "same-origin"
-      if (request.mode === 'same-origin') {
-        // 1. Return a network error.
-        return makeNetworkError('request mode cannot be "same-origin"')
-      }
-
-      // request’s mode is "no-cors"
-      if (request.mode === 'no-cors') {
-        // 1. If request’s redirect mode is not "follow", then return a network
-        // error.
-        if (request.redirect !== 'follow') {
-          return makeNetworkError(
-            'redirect mode cannot be "follow" for "no-cors" request'
-          )
-        }
-
-        // 2. Set request’s response tainting to "opaque".
-        request.responseTainting = 'opaque'
-
-        // 3. Return the result of running scheme fetch given fetchParams.
-        return await schemeFetch(fetchParams)
-      }
-
-      // request’s current URL’s scheme is not an HTTP(S) scheme
-      if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {
-        // Return a network error.
-        return makeNetworkError('URL scheme must be a HTTP(S) scheme')
-      }
-
-      // - request’s use-CORS-preflight flag is set
-      // - request’s unsafe-request flag is set and either request’s method is
-      //   not a CORS-safelisted method or CORS-unsafe request-header names with
-      //   request’s header list is not empty
-      //    1. Set request’s response tainting to "cors".
-      //    2. Let corsWithPreflightResponse be the result of running HTTP fetch
-      //    given fetchParams and true.
-      //    3. If corsWithPreflightResponse is a network error, then clear cache
-      //    entries using request.
-      //    4. Return corsWithPreflightResponse.
-      // TODO
-
-      // Otherwise
-      //    1. Set request’s response tainting to "cors".
-      request.responseTainting = 'cors'
-
-      //    2. Return the result of running HTTP fetch given fetchParams.
-      return await httpFetch(fetchParams)
-    })()
-  }
-
-  // 12. If recursive is true, then return response.
-  if (recursive) {
-    return response
-  }
-
-  // 13. If response is not a network error and response is not a filtered
-  // response, then:
-  if (response.status !== 0 && !response.internalResponse) {
-    // If request’s response tainting is "cors", then:
-    if (request.responseTainting === 'cors') {
-      // 1. Let headerNames be the result of extracting header list values
-      // given `Access-Control-Expose-Headers` and response’s header list.
-      // TODO
-      // 2. If request’s credentials mode is not "include" and headerNames
-      // contains `*`, then set response’s CORS-exposed header-name list to
-      // all unique header names in response’s header list.
-      // TODO
-      // 3. Otherwise, if headerNames is not null or failure, then set
-      // response’s CORS-exposed header-name list to headerNames.
-      // TODO
-    }
-
-    // Set response to the following filtered response with response as its
-    // internal response, depending on request’s response tainting:
-    if (request.responseTainting === 'basic') {
-      response = filterResponse(response, 'basic')
-    } else if (request.responseTainting === 'cors') {
-      response = filterResponse(response, 'cors')
-    } else if (request.responseTainting === 'opaque') {
-      response = filterResponse(response, 'opaque')
-    } else {
-      assert(false)
-    }
-  }
-
-  // 14. Let internalResponse be response, if response is a network error,
-  // and response’s internal response otherwise.
-  let internalResponse =
-    response.status === 0 ? response : response.internalResponse
-
-  // 15. If internalResponse’s URL list is empty, then set it to a clone of
-  // request’s URL list.
-  if (internalResponse.urlList.length === 0) {
-    internalResponse.urlList.push(...request.urlList)
-  }
-
-  // 16. If request’s timing allow failed flag is unset, then set
-  // internalResponse’s timing allow passed flag.
-  if (!request.timingAllowFailed) {
-    response.timingAllowPassed = true
-  }
-
-  // 17. If response is not a network error and any of the following returns
-  // blocked
-  // - should internalResponse to request be blocked as mixed content
-  // - should internalResponse to request be blocked by Content Security Policy
-  // - should internalResponse to request be blocked due to its MIME type
-  // - should internalResponse to request be blocked due to nosniff
-  // TODO
-
-  // 18. If response’s type is "opaque", internalResponse’s status is 206,
-  // internalResponse’s range-requested flag is set, and request’s header
-  // list does not contain `Range`, then set response and internalResponse
-  // to a network error.
-  if (
-    response.type === 'opaque' &&
-    internalResponse.status === 206 &&
-    internalResponse.rangeRequested &&
-    !request.headers.contains('range')
-  ) {
-    response = internalResponse = makeNetworkError()
-  }
-
-  // 19. If response is not a network error and either request’s method is
-  // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status,
-  // set internalResponse’s body to null and disregard any enqueuing toward
-  // it (if any).
-  if (
-    response.status !== 0 &&
-    (request.method === 'HEAD' ||
-      request.method === 'CONNECT' ||
-      nullBodyStatus.includes(internalResponse.status))
-  ) {
-    internalResponse.body = null
-    fetchParams.controller.dump = true
-  }
-
-  // 20. If request’s integrity metadata is not the empty string, then:
-  if (request.integrity) {
-    // 1. Let processBodyError be this step: run fetch finale given fetchParams
-    // and a network error.
-    const processBodyError = (reason) =>
-      fetchFinale(fetchParams, makeNetworkError(reason))
-
-    // 2. If request’s response tainting is "opaque", or response’s body is null,
-    // then run processBodyError and abort these steps.
-    if (request.responseTainting === 'opaque' || response.body == null) {
-      processBodyError(response.error)
-      return
-    }
-
-    // 3. Let processBody given bytes be these steps:
-    const processBody = (bytes) => {
-      // 1. If bytes do not match request’s integrity metadata,
-      // then run processBodyError and abort these steps. [SRI]
-      if (!bytesMatch(bytes, request.integrity)) {
-        processBodyError('integrity mismatch')
-        return
-      }
-
-      // 2. Set response’s body to bytes as a body.
-      response.body = safelyExtractBody(bytes)[0]
-
-      // 3. Run fetch finale given fetchParams and response.
-      fetchFinale(fetchParams, response)
-    }
-
-    // 4. Fully read response’s body given processBody and processBodyError.
-    await fullyReadBody(response.body, processBody, processBodyError)
-  } else {
-    // 21. Otherwise, run fetch finale given fetchParams and response.
-    fetchFinale(fetchParams, response)
-  }
-}
-
-// https://fetch.spec.whatwg.org/#concept-scheme-fetch
-// given a fetch params fetchParams
-function schemeFetch (fetchParams) {
-  // Note: since the connection is destroyed on redirect, which sets fetchParams to a
-  // cancelled state, we do not want this condition to trigger *unless* there have been
-  // no redirects. See https://github.com/nodejs/undici/issues/1776
-  // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.
-  if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
-    return Promise.resolve(makeAppropriateNetworkError(fetchParams))
-  }
-
-  // 2. Let request be fetchParams’s request.
-  const { request } = fetchParams
-
-  const { protocol: scheme } = requestCurrentURL(request)
-
-  // 3. Switch on request’s current URL’s scheme and run the associated steps:
-  switch (scheme) {
-    case 'about:': {
-      // If request’s current URL’s path is the string "blank", then return a new response
-      // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) »,
-      // and body is the empty byte sequence as a body.
-
-      // Otherwise, return a network error.
-      return Promise.resolve(makeNetworkError('about scheme is not supported'))
-    }
-    case 'blob:': {
-      if (!resolveObjectURL) {
-        resolveObjectURL = require('buffer').resolveObjectURL
-      }
-
-      // 1. Let blobURLEntry be request’s current URL’s blob URL entry.
-      const blobURLEntry = requestCurrentURL(request)
-
-      // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56
-      // Buffer.resolveObjectURL does not ignore URL queries.
-      if (blobURLEntry.search.length !== 0) {
-        return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))
-      }
-
-      const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())
-
-      // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s
-      //    object is not a Blob object, then return a network error.
-      if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {
-        return Promise.resolve(makeNetworkError('invalid method'))
-      }
-
-      // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object.
-      const bodyWithType = safelyExtractBody(blobURLEntryObject)
-
-      // 4. Let body be bodyWithType’s body.
-      const body = bodyWithType[0]
-
-      // 5. Let length be body’s length, serialized and isomorphic encoded.
-      const length = isomorphicEncode(`${body.length}`)
-
-      // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence.
-      const type = bodyWithType[1] ?? ''
-
-      // 7. Return a new response whose status message is `OK`, header list is
-      //    « (`Content-Length`, length), (`Content-Type`, type) », and body is body.
-      const response = makeResponse({
-        statusText: 'OK',
-        headersList: [
-          ['content-length', { name: 'Content-Length', value: length }],
-          ['content-type', { name: 'Content-Type', value: type }]
-        ]
-      })
-
-      response.body = body
-
-      return Promise.resolve(response)
-    }
-    case 'data:': {
-      // 1. Let dataURLStruct be the result of running the
-      //    data: URL processor on request’s current URL.
-      const currentURL = requestCurrentURL(request)
-      const dataURLStruct = dataURLProcessor(currentURL)
-
-      // 2. If dataURLStruct is failure, then return a
-      //    network error.
-      if (dataURLStruct === 'failure') {
-        return Promise.resolve(makeNetworkError('failed to fetch the data URL'))
-      }
-
-      // 3. Let mimeType be dataURLStruct’s MIME type, serialized.
-      const mimeType = serializeAMimeType(dataURLStruct.mimeType)
-
-      // 4. Return a response whose status message is `OK`,
-      //    header list is « (`Content-Type`, mimeType) »,
-      //    and body is dataURLStruct’s body as a body.
-      return Promise.resolve(makeResponse({
-        statusText: 'OK',
-        headersList: [
-          ['content-type', { name: 'Content-Type', value: mimeType }]
-        ],
-        body: safelyExtractBody(dataURLStruct.body)[0]
-      }))
-    }
-    case 'file:': {
-      // For now, unfortunate as it is, file URLs are left as an exercise for the reader.
-      // When in doubt, return a network error.
-      return Promise.resolve(makeNetworkError('not implemented... yet...'))
-    }
-    case 'http:':
-    case 'https:': {
-      // Return the result of running HTTP fetch given fetchParams.
-
-      return httpFetch(fetchParams)
-        .catch((err) => makeNetworkError(err))
-    }
-    default: {
-      return Promise.resolve(makeNetworkError('unknown scheme'))
-    }
-  }
-}
-
-// https://fetch.spec.whatwg.org/#finalize-response
-function finalizeResponse (fetchParams, response) {
-  // 1. Set fetchParams’s request’s done flag.
-  fetchParams.request.done = true
-
-  // 2, If fetchParams’s process response done is not null, then queue a fetch
-  // task to run fetchParams’s process response done given response, with
-  // fetchParams’s task destination.
-  if (fetchParams.processResponseDone != null) {
-    queueMicrotask(() => fetchParams.processResponseDone(response))
-  }
-}
-
-// https://fetch.spec.whatwg.org/#fetch-finale
-function fetchFinale (fetchParams, response) {
-  // 1. If response is a network error, then:
-  if (response.type === 'error') {
-    // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ».
-    response.urlList = [fetchParams.request.urlList[0]]
-
-    // 2. Set response’s timing info to the result of creating an opaque timing
-    // info for fetchParams’s timing info.
-    response.timingInfo = createOpaqueTimingInfo({
-      startTime: fetchParams.timingInfo.startTime
-    })
-  }
-
-  // 2. Let processResponseEndOfBody be the following steps:
-  const processResponseEndOfBody = () => {
-    // 1. Set fetchParams’s request’s done flag.
-    fetchParams.request.done = true
-
-    // If fetchParams’s process response end-of-body is not null,
-    // then queue a fetch task to run fetchParams’s process response
-    // end-of-body given response with fetchParams’s task destination.
-    if (fetchParams.processResponseEndOfBody != null) {
-      queueMicrotask(() => fetchParams.processResponseEndOfBody(response))
-    }
-  }
-
-  // 3. If fetchParams’s process response is non-null, then queue a fetch task
-  // to run fetchParams’s process response given response, with fetchParams’s
-  // task destination.
-  if (fetchParams.processResponse != null) {
-    queueMicrotask(() => fetchParams.processResponse(response))
-  }
-
-  // 4. If response’s body is null, then run processResponseEndOfBody.
-  if (response.body == null) {
-    processResponseEndOfBody()
-  } else {
-  // 5. Otherwise:
-
-    // 1. Let transformStream be a new a TransformStream.
-
-    // 2. Let identityTransformAlgorithm be an algorithm which, given chunk,
-    // enqueues chunk in transformStream.
-    const identityTransformAlgorithm = (chunk, controller) => {
-      controller.enqueue(chunk)
-    }
-
-    // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm
-    // and flushAlgorithm set to processResponseEndOfBody.
-    const transformStream = new TransformStream({
-      start () {},
-      transform: identityTransformAlgorithm,
-      flush: processResponseEndOfBody
-    }, {
-      size () {
-        return 1
-      }
-    }, {
-      size () {
-        return 1
-      }
-    })
-
-    // 4. Set response’s body to the result of piping response’s body through transformStream.
-    response.body = { stream: response.body.stream.pipeThrough(transformStream) }
-  }
-
-  // 6. If fetchParams’s process response consume body is non-null, then:
-  if (fetchParams.processResponseConsumeBody != null) {
-    // 1. Let processBody given nullOrBytes be this step: run fetchParams’s
-    // process response consume body given response and nullOrBytes.
-    const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes)
-
-    // 2. Let processBodyError be this step: run fetchParams’s process
-    // response consume body given response and failure.
-    const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure)
-
-    // 3. If response’s body is null, then queue a fetch task to run processBody
-    // given null, with fetchParams’s task destination.
-    if (response.body == null) {
-      queueMicrotask(() => processBody(null))
-    } else {
-      // 4. Otherwise, fully read response’s body given processBody, processBodyError,
-      // and fetchParams’s task destination.
-      return fullyReadBody(response.body, processBody, processBodyError)
-    }
-    return Promise.resolve()
-  }
-}
-
-// https://fetch.spec.whatwg.org/#http-fetch
-async function httpFetch (fetchParams) {
-  // 1. Let request be fetchParams’s request.
-  const request = fetchParams.request
-
-  // 2. Let response be null.
-  let response = null
-
-  // 3. Let actualResponse be null.
-  let actualResponse = null
-
-  // 4. Let timingInfo be fetchParams’s timing info.
-  const timingInfo = fetchParams.timingInfo
-
-  // 5. If request’s service-workers mode is "all", then:
-  if (request.serviceWorkers === 'all') {
-    // TODO
-  }
-
-  // 6. If response is null, then:
-  if (response === null) {
-    // 1. If makeCORSPreflight is true and one of these conditions is true:
-    // TODO
-
-    // 2. If request’s redirect mode is "follow", then set request’s
-    // service-workers mode to "none".
-    if (request.redirect === 'follow') {
-      request.serviceWorkers = 'none'
-    }
-
-    // 3. Set response and actualResponse to the result of running
-    // HTTP-network-or-cache fetch given fetchParams.
-    actualResponse = response = await httpNetworkOrCacheFetch(fetchParams)
-
-    // 4. If request’s response tainting is "cors" and a CORS check
-    // for request and response returns failure, then return a network error.
-    if (
-      request.responseTainting === 'cors' &&
-      corsCheck(request, response) === 'failure'
-    ) {
-      return makeNetworkError('cors failure')
-    }
-
-    // 5. If the TAO check for request and response returns failure, then set
-    // request’s timing allow failed flag.
-    if (TAOCheck(request, response) === 'failure') {
-      request.timingAllowFailed = true
-    }
-  }
-
-  // 7. If either request’s response tainting or response’s type
-  // is "opaque", and the cross-origin resource policy check with
-  // request’s origin, request’s client, request’s destination,
-  // and actualResponse returns blocked, then return a network error.
-  if (
-    (request.responseTainting === 'opaque' || response.type === 'opaque') &&
-    crossOriginResourcePolicyCheck(
-      request.origin,
-      request.client,
-      request.destination,
-      actualResponse
-    ) === 'blocked'
-  ) {
-    return makeNetworkError('blocked')
-  }
-
-  // 8. If actualResponse’s status is a redirect status, then:
-  if (redirectStatusSet.has(actualResponse.status)) {
-    // 1. If actualResponse’s status is not 303, request’s body is not null,
-    // and the connection uses HTTP/2, then user agents may, and are even
-    // encouraged to, transmit an RST_STREAM frame.
-    // See, https://github.com/whatwg/fetch/issues/1288
-    if (request.redirect !== 'manual') {
-      fetchParams.controller.connection.destroy()
-    }
-
-    // 2. Switch on request’s redirect mode:
-    if (request.redirect === 'error') {
-      // Set response to a network error.
-      response = makeNetworkError('unexpected redirect')
-    } else if (request.redirect === 'manual') {
-      // Set response to an opaque-redirect filtered response whose internal
-      // response is actualResponse.
-      // NOTE(spec): On the web this would return an `opaqueredirect` response,
-      // but that doesn't make sense server side.
-      // See https://github.com/nodejs/undici/issues/1193.
-      response = actualResponse
-    } else if (request.redirect === 'follow') {
-      // Set response to the result of running HTTP-redirect fetch given
-      // fetchParams and response.
-      response = await httpRedirectFetch(fetchParams, response)
-    } else {
-      assert(false)
-    }
-  }
-
-  // 9. Set response’s timing info to timingInfo.
-  response.timingInfo = timingInfo
-
-  // 10. Return response.
-  return response
-}
-
-// https://fetch.spec.whatwg.org/#http-redirect-fetch
-function httpRedirectFetch (fetchParams, response) {
-  // 1. Let request be fetchParams’s request.
-  const request = fetchParams.request
-
-  // 2. Let actualResponse be response, if response is not a filtered response,
-  // and response’s internal response otherwise.
-  const actualResponse = response.internalResponse
-    ? response.internalResponse
-    : response
-
-  // 3. Let locationURL be actualResponse’s location URL given request’s current
-  // URL’s fragment.
-  let locationURL
-
-  try {
-    locationURL = responseLocationURL(
-      actualResponse,
-      requestCurrentURL(request).hash
-    )
-
-    // 4. If locationURL is null, then return response.
-    if (locationURL == null) {
-      return response
-    }
-  } catch (err) {
-    // 5. If locationURL is failure, then return a network error.
-    return Promise.resolve(makeNetworkError(err))
-  }
-
-  // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network
-  // error.
-  if (!urlIsHttpHttpsScheme(locationURL)) {
-    return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))
-  }
-
-  // 7. If request’s redirect count is 20, then return a network error.
-  if (request.redirectCount === 20) {
-    return Promise.resolve(makeNetworkError('redirect count exceeded'))
-  }
-
-  // 8. Increase request’s redirect count by 1.
-  request.redirectCount += 1
-
-  // 9. If request’s mode is "cors", locationURL includes credentials, and
-  // request’s origin is not same origin with locationURL’s origin, then return
-  //  a network error.
-  if (
-    request.mode === 'cors' &&
-    (locationURL.username || locationURL.password) &&
-    !sameOrigin(request, locationURL)
-  ) {
-    return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'))
-  }
-
-  // 10. If request’s response tainting is "cors" and locationURL includes
-  // credentials, then return a network error.
-  if (
-    request.responseTainting === 'cors' &&
-    (locationURL.username || locationURL.password)
-  ) {
-    return Promise.resolve(makeNetworkError(
-      'URL cannot contain credentials for request mode "cors"'
-    ))
-  }
-
-  // 11. If actualResponse’s status is not 303, request’s body is non-null,
-  // and request’s body’s source is null, then return a network error.
-  if (
-    actualResponse.status !== 303 &&
-    request.body != null &&
-    request.body.source == null
-  ) {
-    return Promise.resolve(makeNetworkError())
-  }
-
-  // 12. If one of the following is true
-  // - actualResponse’s status is 301 or 302 and request’s method is `POST`
-  // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD`
-  if (
-    ([301, 302].includes(actualResponse.status) && request.method === 'POST') ||
-    (actualResponse.status === 303 &&
-      !GET_OR_HEAD.includes(request.method))
-  ) {
-    // then:
-    // 1. Set request’s method to `GET` and request’s body to null.
-    request.method = 'GET'
-    request.body = null
-
-    // 2. For each headerName of request-body-header name, delete headerName from
-    // request’s header list.
-    for (const headerName of requestBodyHeader) {
-      request.headersList.delete(headerName)
-    }
-  }
-
-  // 13. If request’s current URL’s origin is not same origin with locationURL’s
-  //     origin, then for each headerName of CORS non-wildcard request-header name,
-  //     delete headerName from request’s header list.
-  if (!sameOrigin(requestCurrentURL(request), locationURL)) {
-    // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name
-    request.headersList.delete('authorization')
-
-    // "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement.
-    request.headersList.delete('cookie')
-    request.headersList.delete('host')
-  }
-
-  // 14. If request’s body is non-null, then set request’s body to the first return
-  // value of safely extracting request’s body’s source.
-  if (request.body != null) {
-    assert(request.body.source != null)
-    request.body = safelyExtractBody(request.body.source)[0]
-  }
-
-  // 15. Let timingInfo be fetchParams’s timing info.
-  const timingInfo = fetchParams.timingInfo
-
-  // 16. Set timingInfo’s redirect end time and post-redirect start time to the
-  // coarsened shared current time given fetchParams’s cross-origin isolated
-  // capability.
-  timingInfo.redirectEndTime = timingInfo.postRedirectStartTime =
-    coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)
-
-  // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s
-  //  redirect start time to timingInfo’s start time.
-  if (timingInfo.redirectStartTime === 0) {
-    timingInfo.redirectStartTime = timingInfo.startTime
-  }
-
-  // 18. Append locationURL to request’s URL list.
-  request.urlList.push(locationURL)
-
-  // 19. Invoke set request’s referrer policy on redirect on request and
-  // actualResponse.
-  setRequestReferrerPolicyOnRedirect(request, actualResponse)
-
-  // 20. Return the result of running main fetch given fetchParams and true.
-  return mainFetch(fetchParams, true)
-}
-
-// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch
-async function httpNetworkOrCacheFetch (
-  fetchParams,
-  isAuthenticationFetch = false,
-  isNewConnectionFetch = false
-) {
-  // 1. Let request be fetchParams’s request.
-  const request = fetchParams.request
-
-  // 2. Let httpFetchParams be null.
-  let httpFetchParams = null
-
-  // 3. Let httpRequest be null.
-  let httpRequest = null
-
-  // 4. Let response be null.
-  let response = null
-
-  // 5. Let storedResponse be null.
-  // TODO: cache
-
-  // 6. Let httpCache be null.
-  const httpCache = null
-
-  // 7. Let the revalidatingFlag be unset.
-  const revalidatingFlag = false
-
-  // 8. Run these steps, but abort when the ongoing fetch is terminated:
-
-  //    1. If request’s window is "no-window" and request’s redirect mode is
-  //    "error", then set httpFetchParams to fetchParams and httpRequest to
-  //    request.
-  if (request.window === 'no-window' && request.redirect === 'error') {
-    httpFetchParams = fetchParams
-    httpRequest = request
-  } else {
-    // Otherwise:
-
-    // 1. Set httpRequest to a clone of request.
-    httpRequest = makeRequest(request)
-
-    // 2. Set httpFetchParams to a copy of fetchParams.
-    httpFetchParams = { ...fetchParams }
-
-    // 3. Set httpFetchParams’s request to httpRequest.
-    httpFetchParams.request = httpRequest
-  }
-
-  //    3. Let includeCredentials be true if one of
-  const includeCredentials =
-    request.credentials === 'include' ||
-    (request.credentials === 'same-origin' &&
-      request.responseTainting === 'basic')
-
-  //    4. Let contentLength be httpRequest’s body’s length, if httpRequest’s
-  //    body is non-null; otherwise null.
-  const contentLength = httpRequest.body ? httpRequest.body.length : null
-
-  //    5. Let contentLengthHeaderValue be null.
-  let contentLengthHeaderValue = null
-
-  //    6. If httpRequest’s body is null and httpRequest’s method is `POST` or
-  //    `PUT`, then set contentLengthHeaderValue to `0`.
-  if (
-    httpRequest.body == null &&
-    ['POST', 'PUT'].includes(httpRequest.method)
-  ) {
-    contentLengthHeaderValue = '0'
-  }
-
-  //    7. If contentLength is non-null, then set contentLengthHeaderValue to
-  //    contentLength, serialized and isomorphic encoded.
-  if (contentLength != null) {
-    contentLengthHeaderValue = isomorphicEncode(`${contentLength}`)
-  }
-
-  //    8. If contentLengthHeaderValue is non-null, then append
-  //    `Content-Length`/contentLengthHeaderValue to httpRequest’s header
-  //    list.
-  if (contentLengthHeaderValue != null) {
-    httpRequest.headersList.append('content-length', contentLengthHeaderValue)
-  }
-
-  //    9. If contentLengthHeaderValue is non-null, then append (`Content-Length`,
-  //    contentLengthHeaderValue) to httpRequest’s header list.
-
-  //    10. If contentLength is non-null and httpRequest’s keepalive is true,
-  //    then:
-  if (contentLength != null && httpRequest.keepalive) {
-    // NOTE: keepalive is a noop outside of browser context.
-  }
-
-  //    11. If httpRequest’s referrer is a URL, then append
-  //    `Referer`/httpRequest’s referrer, serialized and isomorphic encoded,
-  //     to httpRequest’s header list.
-  if (httpRequest.referrer instanceof URL) {
-    httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href))
-  }
-
-  //    12. Append a request `Origin` header for httpRequest.
-  appendRequestOriginHeader(httpRequest)
-
-  //    13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA]
-  appendFetchMetadata(httpRequest)
-
-  //    14. If httpRequest’s header list does not contain `User-Agent`, then
-  //    user agents should append `User-Agent`/default `User-Agent` value to
-  //    httpRequest’s header list.
-  if (!httpRequest.headersList.contains('user-agent')) {
-    httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node')
-  }
-
-  //    15. If httpRequest’s cache mode is "default" and httpRequest’s header
-  //    list contains `If-Modified-Since`, `If-None-Match`,
-  //    `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set
-  //    httpRequest’s cache mode to "no-store".
-  if (
-    httpRequest.cache === 'default' &&
-    (httpRequest.headersList.contains('if-modified-since') ||
-      httpRequest.headersList.contains('if-none-match') ||
-      httpRequest.headersList.contains('if-unmodified-since') ||
-      httpRequest.headersList.contains('if-match') ||
-      httpRequest.headersList.contains('if-range'))
-  ) {
-    httpRequest.cache = 'no-store'
-  }
-
-  //    16. If httpRequest’s cache mode is "no-cache", httpRequest’s prevent
-  //    no-cache cache-control header modification flag is unset, and
-  //    httpRequest’s header list does not contain `Cache-Control`, then append
-  //    `Cache-Control`/`max-age=0` to httpRequest’s header list.
-  if (
-    httpRequest.cache === 'no-cache' &&
-    !httpRequest.preventNoCacheCacheControlHeaderModification &&
-    !httpRequest.headersList.contains('cache-control')
-  ) {
-    httpRequest.headersList.append('cache-control', 'max-age=0')
-  }
-
-  //    17. If httpRequest’s cache mode is "no-store" or "reload", then:
-  if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') {
-    // 1. If httpRequest’s header list does not contain `Pragma`, then append
-    // `Pragma`/`no-cache` to httpRequest’s header list.
-    if (!httpRequest.headersList.contains('pragma')) {
-      httpRequest.headersList.append('pragma', 'no-cache')
-    }
-
-    // 2. If httpRequest’s header list does not contain `Cache-Control`,
-    // then append `Cache-Control`/`no-cache` to httpRequest’s header list.
-    if (!httpRequest.headersList.contains('cache-control')) {
-      httpRequest.headersList.append('cache-control', 'no-cache')
-    }
-  }
-
-  //    18. If httpRequest’s header list contains `Range`, then append
-  //    `Accept-Encoding`/`identity` to httpRequest’s header list.
-  if (httpRequest.headersList.contains('range')) {
-    httpRequest.headersList.append('accept-encoding', 'identity')
-  }
-
-  //    19. Modify httpRequest’s header list per HTTP. Do not append a given
-  //    header if httpRequest’s header list contains that header’s name.
-  //    TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129
-  if (!httpRequest.headersList.contains('accept-encoding')) {
-    if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {
-      httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate')
-    } else {
-      httpRequest.headersList.append('accept-encoding', 'gzip, deflate')
-    }
-  }
-
-  httpRequest.headersList.delete('host')
-
-  //    20. If includeCredentials is true, then:
-  if (includeCredentials) {
-    // 1. If the user agent is not configured to block cookies for httpRequest
-    // (see section 7 of [COOKIES]), then:
-    // TODO: credentials
-    // 2. If httpRequest’s header list does not contain `Authorization`, then:
-    // TODO: credentials
-  }
-
-  //    21. If there’s a proxy-authentication entry, use it as appropriate.
-  //    TODO: proxy-authentication
-
-  //    22. Set httpCache to the result of determining the HTTP cache
-  //    partition, given httpRequest.
-  //    TODO: cache
-
-  //    23. If httpCache is null, then set httpRequest’s cache mode to
-  //    "no-store".
-  if (httpCache == null) {
-    httpRequest.cache = 'no-store'
-  }
-
-  //    24. If httpRequest’s cache mode is neither "no-store" nor "reload",
-  //    then:
-  if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') {
-    // TODO: cache
-  }
-
-  // 9. If aborted, then return the appropriate network error for fetchParams.
-  // TODO
-
-  // 10. If response is null, then:
-  if (response == null) {
-    // 1. If httpRequest’s cache mode is "only-if-cached", then return a
-    // network error.
-    if (httpRequest.mode === 'only-if-cached') {
-      return makeNetworkError('only if cached')
-    }
-
-    // 2. Let forwardResponse be the result of running HTTP-network fetch
-    // given httpFetchParams, includeCredentials, and isNewConnectionFetch.
-    const forwardResponse = await httpNetworkFetch(
-      httpFetchParams,
-      includeCredentials,
-      isNewConnectionFetch
-    )
-
-    // 3. If httpRequest’s method is unsafe and forwardResponse’s status is
-    // in the range 200 to 399, inclusive, invalidate appropriate stored
-    // responses in httpCache, as per the "Invalidation" chapter of HTTP
-    // Caching, and set storedResponse to null. [HTTP-CACHING]
-    if (
-      !safeMethodsSet.has(httpRequest.method) &&
-      forwardResponse.status >= 200 &&
-      forwardResponse.status <= 399
-    ) {
-      // TODO: cache
-    }
-
-    // 4. If the revalidatingFlag is set and forwardResponse’s status is 304,
-    // then:
-    if (revalidatingFlag && forwardResponse.status === 304) {
-      // TODO: cache
-    }
-
-    // 5. If response is null, then:
-    if (response == null) {
-      // 1. Set response to forwardResponse.
-      response = forwardResponse
-
-      // 2. Store httpRequest and forwardResponse in httpCache, as per the
-      // "Storing Responses in Caches" chapter of HTTP Caching. [HTTP-CACHING]
-      // TODO: cache
-    }
-  }
-
-  // 11. Set response’s URL list to a clone of httpRequest’s URL list.
-  response.urlList = [...httpRequest.urlList]
-
-  // 12. If httpRequest’s header list contains `Range`, then set response’s
-  // range-requested flag.
-  if (httpRequest.headersList.contains('range')) {
-    response.rangeRequested = true
-  }
-
-  // 13. Set response’s request-includes-credentials to includeCredentials.
-  response.requestIncludesCredentials = includeCredentials
-
-  // 14. If response’s status is 401, httpRequest’s response tainting is not
-  // "cors", includeCredentials is true, and request’s window is an environment
-  // settings object, then:
-  // TODO
-
-  // 15. If response’s status is 407, then:
-  if (response.status === 407) {
-    // 1. If request’s window is "no-window", then return a network error.
-    if (request.window === 'no-window') {
-      return makeNetworkError()
-    }
-
-    // 2. ???
-
-    // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams.
-    if (isCancelled(fetchParams)) {
-      return makeAppropriateNetworkError(fetchParams)
-    }
-
-    // 4. Prompt the end user as appropriate in request’s window and store
-    // the result as a proxy-authentication entry. [HTTP-AUTH]
-    // TODO: Invoke some kind of callback?
-
-    // 5. Set response to the result of running HTTP-network-or-cache fetch given
-    // fetchParams.
-    // TODO
-    return makeNetworkError('proxy authentication required')
-  }
-
-  // 16. If all of the following are true
-  if (
-    // response’s status is 421
-    response.status === 421 &&
-    // isNewConnectionFetch is false
-    !isNewConnectionFetch &&
-    // request’s body is null, or request’s body is non-null and request’s body’s source is non-null
-    (request.body == null || request.body.source != null)
-  ) {
-    // then:
-
-    // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.
-    if (isCancelled(fetchParams)) {
-      return makeAppropriateNetworkError(fetchParams)
-    }
-
-    // 2. Set response to the result of running HTTP-network-or-cache
-    // fetch given fetchParams, isAuthenticationFetch, and true.
-
-    // TODO (spec): The spec doesn't specify this but we need to cancel
-    // the active response before we can start a new one.
-    // https://github.com/whatwg/fetch/issues/1293
-    fetchParams.controller.connection.destroy()
-
-    response = await httpNetworkOrCacheFetch(
-      fetchParams,
-      isAuthenticationFetch,
-      true
-    )
-  }
-
-  // 17. If isAuthenticationFetch is true, then create an authentication entry
-  if (isAuthenticationFetch) {
-    // TODO
-  }
-
-  // 18. Return response.
-  return response
-}
-
-// https://fetch.spec.whatwg.org/#http-network-fetch
-async function httpNetworkFetch (
-  fetchParams,
-  includeCredentials = false,
-  forceNewConnection = false
-) {
-  assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed)
-
-  fetchParams.controller.connection = {
-    abort: null,
-    destroyed: false,
-    destroy (err) {
-      if (!this.destroyed) {
-        this.destroyed = true
-        this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError'))
-      }
-    }
-  }
-
-  // 1. Let request be fetchParams’s request.
-  const request = fetchParams.request
-
-  // 2. Let response be null.
-  let response = null
-
-  // 3. Let timingInfo be fetchParams’s timing info.
-  const timingInfo = fetchParams.timingInfo
-
-  // 4. Let httpCache be the result of determining the HTTP cache partition,
-  // given request.
-  // TODO: cache
-  const httpCache = null
-
-  // 5. If httpCache is null, then set request’s cache mode to "no-store".
-  if (httpCache == null) {
-    request.cache = 'no-store'
-  }
-
-  // 6. Let networkPartitionKey be the result of determining the network
-  // partition key given request.
-  // TODO
-
-  // 7. Let newConnection be "yes" if forceNewConnection is true; otherwise
-  // "no".
-  const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars
-
-  // 8. Switch on request’s mode:
-  if (request.mode === 'websocket') {
-    // Let connection be the result of obtaining a WebSocket connection,
-    // given request’s current URL.
-    // TODO
-  } else {
-    // Let connection be the result of obtaining a connection, given
-    // networkPartitionKey, request’s current URL’s origin,
-    // includeCredentials, and forceNewConnection.
-    // TODO
-  }
-
-  // 9. Run these steps, but abort when the ongoing fetch is terminated:
-
-  //    1. If connection is failure, then return a network error.
-
-  //    2. Set timingInfo’s final connection timing info to the result of
-  //    calling clamp and coarsen connection timing info with connection’s
-  //    timing info, timingInfo’s post-redirect start time, and fetchParams’s
-  //    cross-origin isolated capability.
-
-  //    3. If connection is not an HTTP/2 connection, request’s body is non-null,
-  //    and request’s body’s source is null, then append (`Transfer-Encoding`,
-  //    `chunked`) to request’s header list.
-
-  //    4. Set timingInfo’s final network-request start time to the coarsened
-  //    shared current time given fetchParams’s cross-origin isolated
-  //    capability.
-
-  //    5. Set response to the result of making an HTTP request over connection
-  //    using request with the following caveats:
-
-  //        - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS]
-  //        [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH]
-
-  //        - If request’s body is non-null, and request’s body’s source is null,
-  //        then the user agent may have a buffer of up to 64 kibibytes and store
-  //        a part of request’s body in that buffer. If the user agent reads from
-  //        request’s body beyond that buffer’s size and the user agent needs to
-  //        resend request, then instead return a network error.
-
-  //        - Set timingInfo’s final network-response start time to the coarsened
-  //        shared current time given fetchParams’s cross-origin isolated capability,
-  //        immediately after the user agent’s HTTP parser receives the first byte
-  //        of the response (e.g., frame header bytes for HTTP/2 or response status
-  //        line for HTTP/1.x).
-
-  //        - Wait until all the headers are transmitted.
-
-  //        - Any responses whose status is in the range 100 to 199, inclusive,
-  //        and is not 101, are to be ignored, except for the purposes of setting
-  //        timingInfo’s final network-response start time above.
-
-  //    - If request’s header list contains `Transfer-Encoding`/`chunked` and
-  //    response is transferred via HTTP/1.0 or older, then return a network
-  //    error.
-
-  //    - If the HTTP request results in a TLS client certificate dialog, then:
-
-  //        1. If request’s window is an environment settings object, make the
-  //        dialog available in request’s window.
-
-  //        2. Otherwise, return a network error.
-
-  // To transmit request’s body body, run these steps:
-  let requestBody = null
-  // 1. If body is null and fetchParams’s process request end-of-body is
-  // non-null, then queue a fetch task given fetchParams’s process request
-  // end-of-body and fetchParams’s task destination.
-  if (request.body == null && fetchParams.processRequestEndOfBody) {
-    queueMicrotask(() => fetchParams.processRequestEndOfBody())
-  } else if (request.body != null) {
-    // 2. Otherwise, if body is non-null:
-
-    //    1. Let processBodyChunk given bytes be these steps:
-    const processBodyChunk = async function * (bytes) {
-      // 1. If the ongoing fetch is terminated, then abort these steps.
-      if (isCancelled(fetchParams)) {
-        return
-      }
-
-      // 2. Run this step in parallel: transmit bytes.
-      yield bytes
-
-      // 3. If fetchParams’s process request body is non-null, then run
-      // fetchParams’s process request body given bytes’s length.
-      fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)
-    }
-
-    // 2. Let processEndOfBody be these steps:
-    const processEndOfBody = () => {
-      // 1. If fetchParams is canceled, then abort these steps.
-      if (isCancelled(fetchParams)) {
-        return
-      }
-
-      // 2. If fetchParams’s process request end-of-body is non-null,
-      // then run fetchParams’s process request end-of-body.
-      if (fetchParams.processRequestEndOfBody) {
-        fetchParams.processRequestEndOfBody()
-      }
-    }
-
-    // 3. Let processBodyError given e be these steps:
-    const processBodyError = (e) => {
-      // 1. If fetchParams is canceled, then abort these steps.
-      if (isCancelled(fetchParams)) {
-        return
-      }
-
-      // 2. If e is an "AbortError" DOMException, then abort fetchParams’s controller.
-      if (e.name === 'AbortError') {
-        fetchParams.controller.abort()
-      } else {
-        fetchParams.controller.terminate(e)
-      }
-    }
-
-    // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody,
-    // processBodyError, and fetchParams’s task destination.
-    requestBody = (async function * () {
-      try {
-        for await (const bytes of request.body.stream) {
-          yield * processBodyChunk(bytes)
-        }
-        processEndOfBody()
-      } catch (err) {
-        processBodyError(err)
-      }
-    })()
-  }
-
-  try {
-    // socket is only provided for websockets
-    const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody })
-
-    if (socket) {
-      response = makeResponse({ status, statusText, headersList, socket })
-    } else {
-      const iterator = body[Symbol.asyncIterator]()
-      fetchParams.controller.next = () => iterator.next()
-
-      response = makeResponse({ status, statusText, headersList })
-    }
-  } catch (err) {
-    // 10. If aborted, then:
-    if (err.name === 'AbortError') {
-      // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame.
-      fetchParams.controller.connection.destroy()
-
-      // 2. Return the appropriate network error for fetchParams.
-      return makeAppropriateNetworkError(fetchParams, err)
-    }
-
-    return makeNetworkError(err)
-  }
-
-  // 11. Let pullAlgorithm be an action that resumes the ongoing fetch
-  // if it is suspended.
-  const pullAlgorithm = () => {
-    fetchParams.controller.resume()
-  }
-
-  // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s
-  // controller with reason, given reason.
-  const cancelAlgorithm = (reason) => {
-    fetchParams.controller.abort(reason)
-  }
-
-  // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by
-  // the user agent.
-  // TODO
-
-  // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object
-  // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent.
-  // TODO
-
-  // 15. Let stream be a new ReadableStream.
-  // 16. Set up stream with pullAlgorithm set to pullAlgorithm,
-  // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to
-  // highWaterMark, and sizeAlgorithm set to sizeAlgorithm.
-  if (!ReadableStream) {
-    ReadableStream = require('stream/web').ReadableStream
-  }
-
-  const stream = new ReadableStream(
-    {
-      async start (controller) {
-        fetchParams.controller.controller = controller
-      },
-      async pull (controller) {
-        await pullAlgorithm(controller)
-      },
-      async cancel (reason) {
-        await cancelAlgorithm(reason)
-      }
-    },
-    {
-      highWaterMark: 0,
-      size () {
-        return 1
-      }
-    }
-  )
-
-  // 17. Run these steps, but abort when the ongoing fetch is terminated:
-
-  //    1. Set response’s body to a new body whose stream is stream.
-  response.body = { stream }
-
-  //    2. If response is not a network error and request’s cache mode is
-  //    not "no-store", then update response in httpCache for request.
-  //    TODO
-
-  //    3. If includeCredentials is true and the user agent is not configured
-  //    to block cookies for request (see section 7 of [COOKIES]), then run the
-  //    "set-cookie-string" parsing algorithm (see section 5.2 of [COOKIES]) on
-  //    the value of each header whose name is a byte-case-insensitive match for
-  //    `Set-Cookie` in response’s header list, if any, and request’s current URL.
-  //    TODO
-
-  // 18. If aborted, then:
-  // TODO
-
-  // 19. Run these steps in parallel:
-
-  //    1. Run these steps, but abort when fetchParams is canceled:
-  fetchParams.controller.on('terminated', onAborted)
-  fetchParams.controller.resume = async () => {
-    // 1. While true
-    while (true) {
-      // 1-3. See onData...
-
-      // 4. Set bytes to the result of handling content codings given
-      // codings and bytes.
-      let bytes
-      let isFailure
-      try {
-        const { done, value } = await fetchParams.controller.next()
-
-        if (isAborted(fetchParams)) {
-          break
-        }
-
-        bytes = done ? undefined : value
-      } catch (err) {
-        if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {
-          // zlib doesn't like empty streams.
-          bytes = undefined
-        } else {
-          bytes = err
-
-          // err may be propagated from the result of calling readablestream.cancel,
-          // which might not be an error. https://github.com/nodejs/undici/issues/2009
-          isFailure = true
-        }
-      }
-
-      if (bytes === undefined) {
-        // 2. Otherwise, if the bytes transmission for response’s message
-        // body is done normally and stream is readable, then close
-        // stream, finalize response for fetchParams and response, and
-        // abort these in-parallel steps.
-        readableStreamClose(fetchParams.controller.controller)
-
-        finalizeResponse(fetchParams, response)
-
-        return
-      }
-
-      // 5. Increase timingInfo’s decoded body size by bytes’s length.
-      timingInfo.decodedBodySize += bytes?.byteLength ?? 0
-
-      // 6. If bytes is failure, then terminate fetchParams’s controller.
-      if (isFailure) {
-        fetchParams.controller.terminate(bytes)
-        return
-      }
-
-      // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes
-      // into stream.
-      fetchParams.controller.controller.enqueue(new Uint8Array(bytes))
-
-      // 8. If stream is errored, then terminate the ongoing fetch.
-      if (isErrored(stream)) {
-        fetchParams.controller.terminate()
-        return
-      }
-
-      // 9. If stream doesn’t need more data ask the user agent to suspend
-      // the ongoing fetch.
-      if (!fetchParams.controller.controller.desiredSize) {
-        return
-      }
-    }
-  }
-
-  //    2. If aborted, then:
-  function onAborted (reason) {
-    // 2. If fetchParams is aborted, then:
-    if (isAborted(fetchParams)) {
-      // 1. Set response’s aborted flag.
-      response.aborted = true
-
-      // 2. If stream is readable, then error stream with the result of
-      //    deserialize a serialized abort reason given fetchParams’s
-      //    controller’s serialized abort reason and an
-      //    implementation-defined realm.
-      if (isReadable(stream)) {
-        fetchParams.controller.controller.error(
-          fetchParams.controller.serializedAbortReason
-        )
-      }
-    } else {
-      // 3. Otherwise, if stream is readable, error stream with a TypeError.
-      if (isReadable(stream)) {
-        fetchParams.controller.controller.error(new TypeError('terminated', {
-          cause: isErrorLike(reason) ? reason : undefined
-        }))
-      }
-    }
-
-    // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame.
-    // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so.
-    fetchParams.controller.connection.destroy()
-  }
-
-  // 20. Return response.
-  return response
-
-  async function dispatch ({ body }) {
-    const url = requestCurrentURL(request)
-    /** @type {import('../..').Agent} */
-    const agent = fetchParams.controller.dispatcher
-
-    return new Promise((resolve, reject) => agent.dispatch(
-      {
-        path: url.pathname + url.search,
-        origin: url.origin,
-        method: request.method,
-        body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body,
-        headers: request.headersList.entries,
-        maxRedirections: 0,
-        upgrade: request.mode === 'websocket' ? 'websocket' : undefined
-      },
-      {
-        body: null,
-        abort: null,
-
-        onConnect (abort) {
-          // TODO (fix): Do we need connection here?
-          const { connection } = fetchParams.controller
-
-          if (connection.destroyed) {
-            abort(new DOMException('The operation was aborted.', 'AbortError'))
-          } else {
-            fetchParams.controller.on('terminated', abort)
-            this.abort = connection.abort = abort
-          }
-        },
-
-        onHeaders (status, headersList, resume, statusText) {
-          if (status < 200) {
-            return
-          }
-
-          let codings = []
-          let location = ''
-
-          const headers = new Headers()
-
-          // For H2, the headers are a plain JS object
-          // We distinguish between them and iterate accordingly
-          if (Array.isArray(headersList)) {
-            for (let n = 0; n < headersList.length; n += 2) {
-              const key = headersList[n + 0].toString('latin1')
-              const val = headersList[n + 1].toString('latin1')
-              if (key.toLowerCase() === 'content-encoding') {
-                // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1
-                // "All content-coding values are case-insensitive..."
-                codings = val.toLowerCase().split(',').map((x) => x.trim())
-              } else if (key.toLowerCase() === 'location') {
-                location = val
-              }
-
-              headers[kHeadersList].append(key, val)
-            }
-          } else {
-            const keys = Object.keys(headersList)
-            for (const key of keys) {
-              const val = headersList[key]
-              if (key.toLowerCase() === 'content-encoding') {
-                // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1
-                // "All content-coding values are case-insensitive..."
-                codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse()
-              } else if (key.toLowerCase() === 'location') {
-                location = val
-              }
-
-              headers[kHeadersList].append(key, val)
-            }
-          }
-
-          this.body = new Readable({ read: resume })
-
-          const decoders = []
-
-          const willFollow = request.redirect === 'follow' &&
-            location &&
-            redirectStatusSet.has(status)
-
-          // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding
-          if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {
-            for (const coding of codings) {
-              // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2
-              if (coding === 'x-gzip' || coding === 'gzip') {
-                decoders.push(zlib.createGunzip({
-                  // Be less strict when decoding compressed responses, since sometimes
-                  // servers send slightly invalid responses that are still accepted
-                  // by common browsers.
-                  // Always using Z_SYNC_FLUSH is what cURL does.
-                  flush: zlib.constants.Z_SYNC_FLUSH,
-                  finishFlush: zlib.constants.Z_SYNC_FLUSH
-                }))
-              } else if (coding === 'deflate') {
-                decoders.push(zlib.createInflate())
-              } else if (coding === 'br') {
-                decoders.push(zlib.createBrotliDecompress())
-              } else {
-                decoders.length = 0
-                break
-              }
-            }
-          }
-
-          resolve({
-            status,
-            statusText,
-            headersList: headers[kHeadersList],
-            body: decoders.length
-              ? pipeline(this.body, ...decoders, () => { })
-              : this.body.on('error', () => {})
-          })
-
-          return true
-        },
-
-        onData (chunk) {
-          if (fetchParams.controller.dump) {
-            return
-          }
-
-          // 1. If one or more bytes have been transmitted from response’s
-          // message body, then:
-
-          //  1. Let bytes be the transmitted bytes.
-          const bytes = chunk
-
-          //  2. Let codings be the result of extracting header list values
-          //  given `Content-Encoding` and response’s header list.
-          //  See pullAlgorithm.
-
-          //  3. Increase timingInfo’s encoded body size by bytes’s length.
-          timingInfo.encodedBodySize += bytes.byteLength
-
-          //  4. See pullAlgorithm...
-
-          return this.body.push(bytes)
-        },
-
-        onComplete () {
-          if (this.abort) {
-            fetchParams.controller.off('terminated', this.abort)
-          }
-
-          fetchParams.controller.ended = true
-
-          this.body.push(null)
-        },
-
-        onError (error) {
-          if (this.abort) {
-            fetchParams.controller.off('terminated', this.abort)
-          }
-
-          this.body?.destroy(error)
-
-          fetchParams.controller.terminate(error)
-
-          reject(error)
-        },
-
-        onUpgrade (status, headersList, socket) {
-          if (status !== 101) {
-            return
-          }
-
-          const headers = new Headers()
-
-          for (let n = 0; n < headersList.length; n += 2) {
-            const key = headersList[n + 0].toString('latin1')
-            const val = headersList[n + 1].toString('latin1')
-
-            headers[kHeadersList].append(key, val)
-          }
-
-          resolve({
-            status,
-            statusText: STATUS_CODES[status],
-            headersList: headers[kHeadersList],
-            socket
-          })
-
-          return true
-        }
-      }
-    ))
-  }
-}
-
-module.exports = {
-  fetch,
-  Fetch,
-  fetching,
-  finalizeAndReportTiming
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/request.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/request.js
deleted file mode 100644
index 6fe4dff..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/request.js
+++ /dev/null
@@ -1,946 +0,0 @@
-/* globals AbortController */
-
-'use strict'
-
-const { extractBody, mixinBody, cloneBody } = require('./body')
-const { Headers, fill: fillHeaders, HeadersList } = require('./headers')
-const { FinalizationRegistry } = require('../compat/dispatcher-weakref')()
-const util = require('../core/util')
-const {
-  isValidHTTPToken,
-  sameOrigin,
-  normalizeMethod,
-  makePolicyContainer,
-  normalizeMethodRecord
-} = require('./util')
-const {
-  forbiddenMethodsSet,
-  corsSafeListedMethodsSet,
-  referrerPolicy,
-  requestRedirect,
-  requestMode,
-  requestCredentials,
-  requestCache,
-  requestDuplex
-} = require('./constants')
-const { kEnumerableProperty } = util
-const { kHeaders, kSignal, kState, kGuard, kRealm } = require('./symbols')
-const { webidl } = require('./webidl')
-const { getGlobalOrigin } = require('./global')
-const { URLSerializer } = require('./dataURL')
-const { kHeadersList, kConstruct } = require('../core/symbols')
-const assert = require('assert')
-const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('events')
-
-let TransformStream = globalThis.TransformStream
-
-const kAbortController = Symbol('abortController')
-
-const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
-  signal.removeEventListener('abort', abort)
-})
-
-// https://fetch.spec.whatwg.org/#request-class
-class Request {
-  // https://fetch.spec.whatwg.org/#dom-request
-  constructor (input, init = {}) {
-    if (input === kConstruct) {
-      return
-    }
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' })
-
-    input = webidl.converters.RequestInfo(input)
-    init = webidl.converters.RequestInit(init)
-
-    // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object
-    this[kRealm] = {
-      settingsObject: {
-        baseUrl: getGlobalOrigin(),
-        get origin () {
-          return this.baseUrl?.origin
-        },
-        policyContainer: makePolicyContainer()
-      }
-    }
-
-    // 1. Let request be null.
-    let request = null
-
-    // 2. Let fallbackMode be null.
-    let fallbackMode = null
-
-    // 3. Let baseURL be this’s relevant settings object’s API base URL.
-    const baseUrl = this[kRealm].settingsObject.baseUrl
-
-    // 4. Let signal be null.
-    let signal = null
-
-    // 5. If input is a string, then:
-    if (typeof input === 'string') {
-      // 1. Let parsedURL be the result of parsing input with baseURL.
-      // 2. If parsedURL is failure, then throw a TypeError.
-      let parsedURL
-      try {
-        parsedURL = new URL(input, baseUrl)
-      } catch (err) {
-        throw new TypeError('Failed to parse URL from ' + input, { cause: err })
-      }
-
-      // 3. If parsedURL includes credentials, then throw a TypeError.
-      if (parsedURL.username || parsedURL.password) {
-        throw new TypeError(
-          'Request cannot be constructed from a URL that includes credentials: ' +
-            input
-        )
-      }
-
-      // 4. Set request to a new request whose URL is parsedURL.
-      request = makeRequest({ urlList: [parsedURL] })
-
-      // 5. Set fallbackMode to "cors".
-      fallbackMode = 'cors'
-    } else {
-      // 6. Otherwise:
-
-      // 7. Assert: input is a Request object.
-      assert(input instanceof Request)
-
-      // 8. Set request to input’s request.
-      request = input[kState]
-
-      // 9. Set signal to input’s signal.
-      signal = input[kSignal]
-    }
-
-    // 7. Let origin be this’s relevant settings object’s origin.
-    const origin = this[kRealm].settingsObject.origin
-
-    // 8. Let window be "client".
-    let window = 'client'
-
-    // 9. If request’s window is an environment settings object and its origin
-    // is same origin with origin, then set window to request’s window.
-    if (
-      request.window?.constructor?.name === 'EnvironmentSettingsObject' &&
-      sameOrigin(request.window, origin)
-    ) {
-      window = request.window
-    }
-
-    // 10. If init["window"] exists and is non-null, then throw a TypeError.
-    if (init.window != null) {
-      throw new TypeError(`'window' option '${window}' must be null`)
-    }
-
-    // 11. If init["window"] exists, then set window to "no-window".
-    if ('window' in init) {
-      window = 'no-window'
-    }
-
-    // 12. Set request to a new request with the following properties:
-    request = makeRequest({
-      // URL request’s URL.
-      // undici implementation note: this is set as the first item in request's urlList in makeRequest
-      // method request’s method.
-      method: request.method,
-      // header list A copy of request’s header list.
-      // undici implementation note: headersList is cloned in makeRequest
-      headersList: request.headersList,
-      // unsafe-request flag Set.
-      unsafeRequest: request.unsafeRequest,
-      // client This’s relevant settings object.
-      client: this[kRealm].settingsObject,
-      // window window.
-      window,
-      // priority request’s priority.
-      priority: request.priority,
-      // origin request’s origin. The propagation of the origin is only significant for navigation requests
-      // being handled by a service worker. In this scenario a request can have an origin that is different
-      // from the current client.
-      origin: request.origin,
-      // referrer request’s referrer.
-      referrer: request.referrer,
-      // referrer policy request’s referrer policy.
-      referrerPolicy: request.referrerPolicy,
-      // mode request’s mode.
-      mode: request.mode,
-      // credentials mode request’s credentials mode.
-      credentials: request.credentials,
-      // cache mode request’s cache mode.
-      cache: request.cache,
-      // redirect mode request’s redirect mode.
-      redirect: request.redirect,
-      // integrity metadata request’s integrity metadata.
-      integrity: request.integrity,
-      // keepalive request’s keepalive.
-      keepalive: request.keepalive,
-      // reload-navigation flag request’s reload-navigation flag.
-      reloadNavigation: request.reloadNavigation,
-      // history-navigation flag request’s history-navigation flag.
-      historyNavigation: request.historyNavigation,
-      // URL list A clone of request’s URL list.
-      urlList: [...request.urlList]
-    })
-
-    const initHasKey = Object.keys(init).length !== 0
-
-    // 13. If init is not empty, then:
-    if (initHasKey) {
-      // 1. If request’s mode is "navigate", then set it to "same-origin".
-      if (request.mode === 'navigate') {
-        request.mode = 'same-origin'
-      }
-
-      // 2. Unset request’s reload-navigation flag.
-      request.reloadNavigation = false
-
-      // 3. Unset request’s history-navigation flag.
-      request.historyNavigation = false
-
-      // 4. Set request’s origin to "client".
-      request.origin = 'client'
-
-      // 5. Set request’s referrer to "client"
-      request.referrer = 'client'
-
-      // 6. Set request’s referrer policy to the empty string.
-      request.referrerPolicy = ''
-
-      // 7. Set request’s URL to request’s current URL.
-      request.url = request.urlList[request.urlList.length - 1]
-
-      // 8. Set request’s URL list to « request’s URL ».
-      request.urlList = [request.url]
-    }
-
-    // 14. If init["referrer"] exists, then:
-    if (init.referrer !== undefined) {
-      // 1. Let referrer be init["referrer"].
-      const referrer = init.referrer
-
-      // 2. If referrer is the empty string, then set request’s referrer to "no-referrer".
-      if (referrer === '') {
-        request.referrer = 'no-referrer'
-      } else {
-        // 1. Let parsedReferrer be the result of parsing referrer with
-        // baseURL.
-        // 2. If parsedReferrer is failure, then throw a TypeError.
-        let parsedReferrer
-        try {
-          parsedReferrer = new URL(referrer, baseUrl)
-        } catch (err) {
-          throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err })
-        }
-
-        // 3. If one of the following is true
-        // - parsedReferrer’s scheme is "about" and path is the string "client"
-        // - parsedReferrer’s origin is not same origin with origin
-        // then set request’s referrer to "client".
-        if (
-          (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') ||
-          (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl))
-        ) {
-          request.referrer = 'client'
-        } else {
-          // 4. Otherwise, set request’s referrer to parsedReferrer.
-          request.referrer = parsedReferrer
-        }
-      }
-    }
-
-    // 15. If init["referrerPolicy"] exists, then set request’s referrer policy
-    // to it.
-    if (init.referrerPolicy !== undefined) {
-      request.referrerPolicy = init.referrerPolicy
-    }
-
-    // 16. Let mode be init["mode"] if it exists, and fallbackMode otherwise.
-    let mode
-    if (init.mode !== undefined) {
-      mode = init.mode
-    } else {
-      mode = fallbackMode
-    }
-
-    // 17. If mode is "navigate", then throw a TypeError.
-    if (mode === 'navigate') {
-      throw webidl.errors.exception({
-        header: 'Request constructor',
-        message: 'invalid request mode navigate.'
-      })
-    }
-
-    // 18. If mode is non-null, set request’s mode to mode.
-    if (mode != null) {
-      request.mode = mode
-    }
-
-    // 19. If init["credentials"] exists, then set request’s credentials mode
-    // to it.
-    if (init.credentials !== undefined) {
-      request.credentials = init.credentials
-    }
-
-    // 18. If init["cache"] exists, then set request’s cache mode to it.
-    if (init.cache !== undefined) {
-      request.cache = init.cache
-    }
-
-    // 21. If request’s cache mode is "only-if-cached" and request’s mode is
-    // not "same-origin", then throw a TypeError.
-    if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {
-      throw new TypeError(
-        "'only-if-cached' can be set only with 'same-origin' mode"
-      )
-    }
-
-    // 22. If init["redirect"] exists, then set request’s redirect mode to it.
-    if (init.redirect !== undefined) {
-      request.redirect = init.redirect
-    }
-
-    // 23. If init["integrity"] exists, then set request’s integrity metadata to it.
-    if (init.integrity != null) {
-      request.integrity = String(init.integrity)
-    }
-
-    // 24. If init["keepalive"] exists, then set request’s keepalive to it.
-    if (init.keepalive !== undefined) {
-      request.keepalive = Boolean(init.keepalive)
-    }
-
-    // 25. If init["method"] exists, then:
-    if (init.method !== undefined) {
-      // 1. Let method be init["method"].
-      let method = init.method
-
-      // 2. If method is not a method or method is a forbidden method, then
-      // throw a TypeError.
-      if (!isValidHTTPToken(method)) {
-        throw new TypeError(`'${method}' is not a valid HTTP method.`)
-      }
-
-      if (forbiddenMethodsSet.has(method.toUpperCase())) {
-        throw new TypeError(`'${method}' HTTP method is unsupported.`)
-      }
-
-      // 3. Normalize method.
-      method = normalizeMethodRecord[method] ?? normalizeMethod(method)
-
-      // 4. Set request’s method to method.
-      request.method = method
-    }
-
-    // 26. If init["signal"] exists, then set signal to it.
-    if (init.signal !== undefined) {
-      signal = init.signal
-    }
-
-    // 27. Set this’s request to request.
-    this[kState] = request
-
-    // 28. Set this’s signal to a new AbortSignal object with this’s relevant
-    // Realm.
-    // TODO: could this be simplified with AbortSignal.any
-    // (https://dom.spec.whatwg.org/#dom-abortsignal-any)
-    const ac = new AbortController()
-    this[kSignal] = ac.signal
-    this[kSignal][kRealm] = this[kRealm]
-
-    // 29. If signal is not null, then make this’s signal follow signal.
-    if (signal != null) {
-      if (
-        !signal ||
-        typeof signal.aborted !== 'boolean' ||
-        typeof signal.addEventListener !== 'function'
-      ) {
-        throw new TypeError(
-          "Failed to construct 'Request': member signal is not of type AbortSignal."
-        )
-      }
-
-      if (signal.aborted) {
-        ac.abort(signal.reason)
-      } else {
-        // Keep a strong ref to ac while request object
-        // is alive. This is needed to prevent AbortController
-        // from being prematurely garbage collected.
-        // See, https://github.com/nodejs/undici/issues/1926.
-        this[kAbortController] = ac
-
-        const acRef = new WeakRef(ac)
-        const abort = function () {
-          const ac = acRef.deref()
-          if (ac !== undefined) {
-            ac.abort(this.reason)
-          }
-        }
-
-        // Third-party AbortControllers may not work with these.
-        // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619.
-        try {
-          // If the max amount of listeners is equal to the default, increase it
-          // This is only available in node >= v19.9.0
-          if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) {
-            setMaxListeners(100, signal)
-          } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) {
-            setMaxListeners(100, signal)
-          }
-        } catch {}
-
-        util.addAbortListener(signal, abort)
-        requestFinalizer.register(ac, { signal, abort })
-      }
-    }
-
-    // 30. Set this’s headers to a new Headers object with this’s relevant
-    // Realm, whose header list is request’s header list and guard is
-    // "request".
-    this[kHeaders] = new Headers(kConstruct)
-    this[kHeaders][kHeadersList] = request.headersList
-    this[kHeaders][kGuard] = 'request'
-    this[kHeaders][kRealm] = this[kRealm]
-
-    // 31. If this’s request’s mode is "no-cors", then:
-    if (mode === 'no-cors') {
-      // 1. If this’s request’s method is not a CORS-safelisted method,
-      // then throw a TypeError.
-      if (!corsSafeListedMethodsSet.has(request.method)) {
-        throw new TypeError(
-          `'${request.method} is unsupported in no-cors mode.`
-        )
-      }
-
-      // 2. Set this’s headers’s guard to "request-no-cors".
-      this[kHeaders][kGuard] = 'request-no-cors'
-    }
-
-    // 32. If init is not empty, then:
-    if (initHasKey) {
-      /** @type {HeadersList} */
-      const headersList = this[kHeaders][kHeadersList]
-      // 1. Let headers be a copy of this’s headers and its associated header
-      // list.
-      // 2. If init["headers"] exists, then set headers to init["headers"].
-      const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)
-
-      // 3. Empty this’s headers’s header list.
-      headersList.clear()
-
-      // 4. If headers is a Headers object, then for each header in its header
-      // list, append header’s name/header’s value to this’s headers.
-      if (headers instanceof HeadersList) {
-        for (const [key, val] of headers) {
-          headersList.append(key, val)
-        }
-        // Note: Copy the `set-cookie` meta-data.
-        headersList.cookies = headers.cookies
-      } else {
-        // 5. Otherwise, fill this’s headers with headers.
-        fillHeaders(this[kHeaders], headers)
-      }
-    }
-
-    // 33. Let inputBody be input’s request’s body if input is a Request
-    // object; otherwise null.
-    const inputBody = input instanceof Request ? input[kState].body : null
-
-    // 34. If either init["body"] exists and is non-null or inputBody is
-    // non-null, and request’s method is `GET` or `HEAD`, then throw a
-    // TypeError.
-    if (
-      (init.body != null || inputBody != null) &&
-      (request.method === 'GET' || request.method === 'HEAD')
-    ) {
-      throw new TypeError('Request with GET/HEAD method cannot have body.')
-    }
-
-    // 35. Let initBody be null.
-    let initBody = null
-
-    // 36. If init["body"] exists and is non-null, then:
-    if (init.body != null) {
-      // 1. Let Content-Type be null.
-      // 2. Set initBody and Content-Type to the result of extracting
-      // init["body"], with keepalive set to request’s keepalive.
-      const [extractedBody, contentType] = extractBody(
-        init.body,
-        request.keepalive
-      )
-      initBody = extractedBody
-
-      // 3, If Content-Type is non-null and this’s headers’s header list does
-      // not contain `Content-Type`, then append `Content-Type`/Content-Type to
-      // this’s headers.
-      if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) {
-        this[kHeaders].append('content-type', contentType)
-      }
-    }
-
-    // 37. Let inputOrInitBody be initBody if it is non-null; otherwise
-    // inputBody.
-    const inputOrInitBody = initBody ?? inputBody
-
-    // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is
-    // null, then:
-    if (inputOrInitBody != null && inputOrInitBody.source == null) {
-      // 1. If initBody is non-null and init["duplex"] does not exist,
-      //    then throw a TypeError.
-      if (initBody != null && init.duplex == null) {
-        throw new TypeError('RequestInit: duplex option is required when sending a body.')
-      }
-
-      // 2. If this’s request’s mode is neither "same-origin" nor "cors",
-      // then throw a TypeError.
-      if (request.mode !== 'same-origin' && request.mode !== 'cors') {
-        throw new TypeError(
-          'If request is made from ReadableStream, mode should be "same-origin" or "cors"'
-        )
-      }
-
-      // 3. Set this’s request’s use-CORS-preflight flag.
-      request.useCORSPreflightFlag = true
-    }
-
-    // 39. Let finalBody be inputOrInitBody.
-    let finalBody = inputOrInitBody
-
-    // 40. If initBody is null and inputBody is non-null, then:
-    if (initBody == null && inputBody != null) {
-      // 1. If input is unusable, then throw a TypeError.
-      if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) {
-        throw new TypeError(
-          'Cannot construct a Request with a Request object that has already been used.'
-        )
-      }
-
-      // 2. Set finalBody to the result of creating a proxy for inputBody.
-      if (!TransformStream) {
-        TransformStream = require('stream/web').TransformStream
-      }
-
-      // https://streams.spec.whatwg.org/#readablestream-create-a-proxy
-      const identityTransform = new TransformStream()
-      inputBody.stream.pipeThrough(identityTransform)
-      finalBody = {
-        source: inputBody.source,
-        length: inputBody.length,
-        stream: identityTransform.readable
-      }
-    }
-
-    // 41. Set this’s request’s body to finalBody.
-    this[kState].body = finalBody
-  }
-
-  // Returns request’s HTTP method, which is "GET" by default.
-  get method () {
-    webidl.brandCheck(this, Request)
-
-    // The method getter steps are to return this’s request’s method.
-    return this[kState].method
-  }
-
-  // Returns the URL of request as a string.
-  get url () {
-    webidl.brandCheck(this, Request)
-
-    // The url getter steps are to return this’s request’s URL, serialized.
-    return URLSerializer(this[kState].url)
-  }
-
-  // Returns a Headers object consisting of the headers associated with request.
-  // Note that headers added in the network layer by the user agent will not
-  // be accounted for in this object, e.g., the "Host" header.
-  get headers () {
-    webidl.brandCheck(this, Request)
-
-    // The headers getter steps are to return this’s headers.
-    return this[kHeaders]
-  }
-
-  // Returns the kind of resource requested by request, e.g., "document"
-  // or "script".
-  get destination () {
-    webidl.brandCheck(this, Request)
-
-    // The destination getter are to return this’s request’s destination.
-    return this[kState].destination
-  }
-
-  // Returns the referrer of request. Its value can be a same-origin URL if
-  // explicitly set in init, the empty string to indicate no referrer, and
-  // "about:client" when defaulting to the global’s default. This is used
-  // during fetching to determine the value of the `Referer` header of the
-  // request being made.
-  get referrer () {
-    webidl.brandCheck(this, Request)
-
-    // 1. If this’s request’s referrer is "no-referrer", then return the
-    // empty string.
-    if (this[kState].referrer === 'no-referrer') {
-      return ''
-    }
-
-    // 2. If this’s request’s referrer is "client", then return
-    // "about:client".
-    if (this[kState].referrer === 'client') {
-      return 'about:client'
-    }
-
-    // Return this’s request’s referrer, serialized.
-    return this[kState].referrer.toString()
-  }
-
-  // Returns the referrer policy associated with request.
-  // This is used during fetching to compute the value of the request’s
-  // referrer.
-  get referrerPolicy () {
-    webidl.brandCheck(this, Request)
-
-    // The referrerPolicy getter steps are to return this’s request’s referrer policy.
-    return this[kState].referrerPolicy
-  }
-
-  // Returns the mode associated with request, which is a string indicating
-  // whether the request will use CORS, or will be restricted to same-origin
-  // URLs.
-  get mode () {
-    webidl.brandCheck(this, Request)
-
-    // The mode getter steps are to return this’s request’s mode.
-    return this[kState].mode
-  }
-
-  // Returns the credentials mode associated with request,
-  // which is a string indicating whether credentials will be sent with the
-  // request always, never, or only when sent to a same-origin URL.
-  get credentials () {
-    // The credentials getter steps are to return this’s request’s credentials mode.
-    return this[kState].credentials
-  }
-
-  // Returns the cache mode associated with request,
-  // which is a string indicating how the request will
-  // interact with the browser’s cache when fetching.
-  get cache () {
-    webidl.brandCheck(this, Request)
-
-    // The cache getter steps are to return this’s request’s cache mode.
-    return this[kState].cache
-  }
-
-  // Returns the redirect mode associated with request,
-  // which is a string indicating how redirects for the
-  // request will be handled during fetching. A request
-  // will follow redirects by default.
-  get redirect () {
-    webidl.brandCheck(this, Request)
-
-    // The redirect getter steps are to return this’s request’s redirect mode.
-    return this[kState].redirect
-  }
-
-  // Returns request’s subresource integrity metadata, which is a
-  // cryptographic hash of the resource being fetched. Its value
-  // consists of multiple hashes separated by whitespace. [SRI]
-  get integrity () {
-    webidl.brandCheck(this, Request)
-
-    // The integrity getter steps are to return this’s request’s integrity
-    // metadata.
-    return this[kState].integrity
-  }
-
-  // Returns a boolean indicating whether or not request can outlive the
-  // global in which it was created.
-  get keepalive () {
-    webidl.brandCheck(this, Request)
-
-    // The keepalive getter steps are to return this’s request’s keepalive.
-    return this[kState].keepalive
-  }
-
-  // Returns a boolean indicating whether or not request is for a reload
-  // navigation.
-  get isReloadNavigation () {
-    webidl.brandCheck(this, Request)
-
-    // The isReloadNavigation getter steps are to return true if this’s
-    // request’s reload-navigation flag is set; otherwise false.
-    return this[kState].reloadNavigation
-  }
-
-  // Returns a boolean indicating whether or not request is for a history
-  // navigation (a.k.a. back-foward navigation).
-  get isHistoryNavigation () {
-    webidl.brandCheck(this, Request)
-
-    // The isHistoryNavigation getter steps are to return true if this’s request’s
-    // history-navigation flag is set; otherwise false.
-    return this[kState].historyNavigation
-  }
-
-  // Returns the signal associated with request, which is an AbortSignal
-  // object indicating whether or not request has been aborted, and its
-  // abort event handler.
-  get signal () {
-    webidl.brandCheck(this, Request)
-
-    // The signal getter steps are to return this’s signal.
-    return this[kSignal]
-  }
-
-  get body () {
-    webidl.brandCheck(this, Request)
-
-    return this[kState].body ? this[kState].body.stream : null
-  }
-
-  get bodyUsed () {
-    webidl.brandCheck(this, Request)
-
-    return !!this[kState].body && util.isDisturbed(this[kState].body.stream)
-  }
-
-  get duplex () {
-    webidl.brandCheck(this, Request)
-
-    return 'half'
-  }
-
-  // Returns a clone of request.
-  clone () {
-    webidl.brandCheck(this, Request)
-
-    // 1. If this is unusable, then throw a TypeError.
-    if (this.bodyUsed || this.body?.locked) {
-      throw new TypeError('unusable')
-    }
-
-    // 2. Let clonedRequest be the result of cloning this’s request.
-    const clonedRequest = cloneRequest(this[kState])
-
-    // 3. Let clonedRequestObject be the result of creating a Request object,
-    // given clonedRequest, this’s headers’s guard, and this’s relevant Realm.
-    const clonedRequestObject = new Request(kConstruct)
-    clonedRequestObject[kState] = clonedRequest
-    clonedRequestObject[kRealm] = this[kRealm]
-    clonedRequestObject[kHeaders] = new Headers(kConstruct)
-    clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList
-    clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]
-    clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]
-
-    // 4. Make clonedRequestObject’s signal follow this’s signal.
-    const ac = new AbortController()
-    if (this.signal.aborted) {
-      ac.abort(this.signal.reason)
-    } else {
-      util.addAbortListener(
-        this.signal,
-        () => {
-          ac.abort(this.signal.reason)
-        }
-      )
-    }
-    clonedRequestObject[kSignal] = ac.signal
-
-    // 4. Return clonedRequestObject.
-    return clonedRequestObject
-  }
-}
-
-mixinBody(Request)
-
-function makeRequest (init) {
-  // https://fetch.spec.whatwg.org/#requests
-  const request = {
-    method: 'GET',
-    localURLsOnly: false,
-    unsafeRequest: false,
-    body: null,
-    client: null,
-    reservedClient: null,
-    replacesClientId: '',
-    window: 'client',
-    keepalive: false,
-    serviceWorkers: 'all',
-    initiator: '',
-    destination: '',
-    priority: null,
-    origin: 'client',
-    policyContainer: 'client',
-    referrer: 'client',
-    referrerPolicy: '',
-    mode: 'no-cors',
-    useCORSPreflightFlag: false,
-    credentials: 'same-origin',
-    useCredentials: false,
-    cache: 'default',
-    redirect: 'follow',
-    integrity: '',
-    cryptoGraphicsNonceMetadata: '',
-    parserMetadata: '',
-    reloadNavigation: false,
-    historyNavigation: false,
-    userActivation: false,
-    taintedOrigin: false,
-    redirectCount: 0,
-    responseTainting: 'basic',
-    preventNoCacheCacheControlHeaderModification: false,
-    done: false,
-    timingAllowFailed: false,
-    ...init,
-    headersList: init.headersList
-      ? new HeadersList(init.headersList)
-      : new HeadersList()
-  }
-  request.url = request.urlList[0]
-  return request
-}
-
-// https://fetch.spec.whatwg.org/#concept-request-clone
-function cloneRequest (request) {
-  // To clone a request request, run these steps:
-
-  // 1. Let newRequest be a copy of request, except for its body.
-  const newRequest = makeRequest({ ...request, body: null })
-
-  // 2. If request’s body is non-null, set newRequest’s body to the
-  // result of cloning request’s body.
-  if (request.body != null) {
-    newRequest.body = cloneBody(request.body)
-  }
-
-  // 3. Return newRequest.
-  return newRequest
-}
-
-Object.defineProperties(Request.prototype, {
-  method: kEnumerableProperty,
-  url: kEnumerableProperty,
-  headers: kEnumerableProperty,
-  redirect: kEnumerableProperty,
-  clone: kEnumerableProperty,
-  signal: kEnumerableProperty,
-  duplex: kEnumerableProperty,
-  destination: kEnumerableProperty,
-  body: kEnumerableProperty,
-  bodyUsed: kEnumerableProperty,
-  isHistoryNavigation: kEnumerableProperty,
-  isReloadNavigation: kEnumerableProperty,
-  keepalive: kEnumerableProperty,
-  integrity: kEnumerableProperty,
-  cache: kEnumerableProperty,
-  credentials: kEnumerableProperty,
-  attribute: kEnumerableProperty,
-  referrerPolicy: kEnumerableProperty,
-  referrer: kEnumerableProperty,
-  mode: kEnumerableProperty,
-  [Symbol.toStringTag]: {
-    value: 'Request',
-    configurable: true
-  }
-})
-
-webidl.converters.Request = webidl.interfaceConverter(
-  Request
-)
-
-// https://fetch.spec.whatwg.org/#requestinfo
-webidl.converters.RequestInfo = function (V) {
-  if (typeof V === 'string') {
-    return webidl.converters.USVString(V)
-  }
-
-  if (V instanceof Request) {
-    return webidl.converters.Request(V)
-  }
-
-  return webidl.converters.USVString(V)
-}
-
-webidl.converters.AbortSignal = webidl.interfaceConverter(
-  AbortSignal
-)
-
-// https://fetch.spec.whatwg.org/#requestinit
-webidl.converters.RequestInit = webidl.dictionaryConverter([
-  {
-    key: 'method',
-    converter: webidl.converters.ByteString
-  },
-  {
-    key: 'headers',
-    converter: webidl.converters.HeadersInit
-  },
-  {
-    key: 'body',
-    converter: webidl.nullableConverter(
-      webidl.converters.BodyInit
-    )
-  },
-  {
-    key: 'referrer',
-    converter: webidl.converters.USVString
-  },
-  {
-    key: 'referrerPolicy',
-    converter: webidl.converters.DOMString,
-    // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy
-    allowedValues: referrerPolicy
-  },
-  {
-    key: 'mode',
-    converter: webidl.converters.DOMString,
-    // https://fetch.spec.whatwg.org/#concept-request-mode
-    allowedValues: requestMode
-  },
-  {
-    key: 'credentials',
-    converter: webidl.converters.DOMString,
-    // https://fetch.spec.whatwg.org/#requestcredentials
-    allowedValues: requestCredentials
-  },
-  {
-    key: 'cache',
-    converter: webidl.converters.DOMString,
-    // https://fetch.spec.whatwg.org/#requestcache
-    allowedValues: requestCache
-  },
-  {
-    key: 'redirect',
-    converter: webidl.converters.DOMString,
-    // https://fetch.spec.whatwg.org/#requestredirect
-    allowedValues: requestRedirect
-  },
-  {
-    key: 'integrity',
-    converter: webidl.converters.DOMString
-  },
-  {
-    key: 'keepalive',
-    converter: webidl.converters.boolean
-  },
-  {
-    key: 'signal',
-    converter: webidl.nullableConverter(
-      (signal) => webidl.converters.AbortSignal(
-        signal,
-        { strict: false }
-      )
-    )
-  },
-  {
-    key: 'window',
-    converter: webidl.converters.any
-  },
-  {
-    key: 'duplex',
-    converter: webidl.converters.DOMString,
-    allowedValues: requestDuplex
-  }
-])
-
-module.exports = { Request, makeRequest }
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/response.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/response.js
deleted file mode 100644
index 7338612..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/response.js
+++ /dev/null
@@ -1,571 +0,0 @@
-'use strict'
-
-const { Headers, HeadersList, fill } = require('./headers')
-const { extractBody, cloneBody, mixinBody } = require('./body')
-const util = require('../core/util')
-const { kEnumerableProperty } = util
-const {
-  isValidReasonPhrase,
-  isCancelled,
-  isAborted,
-  isBlobLike,
-  serializeJavascriptValueToJSONString,
-  isErrorLike,
-  isomorphicEncode
-} = require('./util')
-const {
-  redirectStatusSet,
-  nullBodyStatus,
-  DOMException
-} = require('./constants')
-const { kState, kHeaders, kGuard, kRealm } = require('./symbols')
-const { webidl } = require('./webidl')
-const { FormData } = require('./formdata')
-const { getGlobalOrigin } = require('./global')
-const { URLSerializer } = require('./dataURL')
-const { kHeadersList, kConstruct } = require('../core/symbols')
-const assert = require('assert')
-const { types } = require('util')
-
-const ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream
-const textEncoder = new TextEncoder('utf-8')
-
-// https://fetch.spec.whatwg.org/#response-class
-class Response {
-  // Creates network error Response.
-  static error () {
-    // TODO
-    const relevantRealm = { settingsObject: {} }
-
-    // The static error() method steps are to return the result of creating a
-    // Response object, given a new network error, "immutable", and this’s
-    // relevant Realm.
-    const responseObject = new Response()
-    responseObject[kState] = makeNetworkError()
-    responseObject[kRealm] = relevantRealm
-    responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList
-    responseObject[kHeaders][kGuard] = 'immutable'
-    responseObject[kHeaders][kRealm] = relevantRealm
-    return responseObject
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-response-json
-  static json (data, init = {}) {
-    webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' })
-
-    if (init !== null) {
-      init = webidl.converters.ResponseInit(init)
-    }
-
-    // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.
-    const bytes = textEncoder.encode(
-      serializeJavascriptValueToJSONString(data)
-    )
-
-    // 2. Let body be the result of extracting bytes.
-    const body = extractBody(bytes)
-
-    // 3. Let responseObject be the result of creating a Response object, given a new response,
-    //    "response", and this’s relevant Realm.
-    const relevantRealm = { settingsObject: {} }
-    const responseObject = new Response()
-    responseObject[kRealm] = relevantRealm
-    responseObject[kHeaders][kGuard] = 'response'
-    responseObject[kHeaders][kRealm] = relevantRealm
-
-    // 4. Perform initialize a response given responseObject, init, and (body, "application/json").
-    initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })
-
-    // 5. Return responseObject.
-    return responseObject
-  }
-
-  // Creates a redirect Response that redirects to url with status status.
-  static redirect (url, status = 302) {
-    const relevantRealm = { settingsObject: {} }
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' })
-
-    url = webidl.converters.USVString(url)
-    status = webidl.converters['unsigned short'](status)
-
-    // 1. Let parsedURL be the result of parsing url with current settings
-    // object’s API base URL.
-    // 2. If parsedURL is failure, then throw a TypeError.
-    // TODO: base-URL?
-    let parsedURL
-    try {
-      parsedURL = new URL(url, getGlobalOrigin())
-    } catch (err) {
-      throw Object.assign(new TypeError('Failed to parse URL from ' + url), {
-        cause: err
-      })
-    }
-
-    // 3. If status is not a redirect status, then throw a RangeError.
-    if (!redirectStatusSet.has(status)) {
-      throw new RangeError('Invalid status code ' + status)
-    }
-
-    // 4. Let responseObject be the result of creating a Response object,
-    // given a new response, "immutable", and this’s relevant Realm.
-    const responseObject = new Response()
-    responseObject[kRealm] = relevantRealm
-    responseObject[kHeaders][kGuard] = 'immutable'
-    responseObject[kHeaders][kRealm] = relevantRealm
-
-    // 5. Set responseObject’s response’s status to status.
-    responseObject[kState].status = status
-
-    // 6. Let value be parsedURL, serialized and isomorphic encoded.
-    const value = isomorphicEncode(URLSerializer(parsedURL))
-
-    // 7. Append `Location`/value to responseObject’s response’s header list.
-    responseObject[kState].headersList.append('location', value)
-
-    // 8. Return responseObject.
-    return responseObject
-  }
-
-  // https://fetch.spec.whatwg.org/#dom-response
-  constructor (body = null, init = {}) {
-    if (body !== null) {
-      body = webidl.converters.BodyInit(body)
-    }
-
-    init = webidl.converters.ResponseInit(init)
-
-    // TODO
-    this[kRealm] = { settingsObject: {} }
-
-    // 1. Set this’s response to a new response.
-    this[kState] = makeResponse({})
-
-    // 2. Set this’s headers to a new Headers object with this’s relevant
-    // Realm, whose header list is this’s response’s header list and guard
-    // is "response".
-    this[kHeaders] = new Headers(kConstruct)
-    this[kHeaders][kGuard] = 'response'
-    this[kHeaders][kHeadersList] = this[kState].headersList
-    this[kHeaders][kRealm] = this[kRealm]
-
-    // 3. Let bodyWithType be null.
-    let bodyWithType = null
-
-    // 4. If body is non-null, then set bodyWithType to the result of extracting body.
-    if (body != null) {
-      const [extractedBody, type] = extractBody(body)
-      bodyWithType = { body: extractedBody, type }
-    }
-
-    // 5. Perform initialize a response given this, init, and bodyWithType.
-    initializeResponse(this, init, bodyWithType)
-  }
-
-  // Returns response’s type, e.g., "cors".
-  get type () {
-    webidl.brandCheck(this, Response)
-
-    // The type getter steps are to return this’s response’s type.
-    return this[kState].type
-  }
-
-  // Returns response’s URL, if it has one; otherwise the empty string.
-  get url () {
-    webidl.brandCheck(this, Response)
-
-    const urlList = this[kState].urlList
-
-    // The url getter steps are to return the empty string if this’s
-    // response’s URL is null; otherwise this’s response’s URL,
-    // serialized with exclude fragment set to true.
-    const url = urlList[urlList.length - 1] ?? null
-
-    if (url === null) {
-      return ''
-    }
-
-    return URLSerializer(url, true)
-  }
-
-  // Returns whether response was obtained through a redirect.
-  get redirected () {
-    webidl.brandCheck(this, Response)
-
-    // The redirected getter steps are to return true if this’s response’s URL
-    // list has more than one item; otherwise false.
-    return this[kState].urlList.length > 1
-  }
-
-  // Returns response’s status.
-  get status () {
-    webidl.brandCheck(this, Response)
-
-    // The status getter steps are to return this’s response’s status.
-    return this[kState].status
-  }
-
-  // Returns whether response’s status is an ok status.
-  get ok () {
-    webidl.brandCheck(this, Response)
-
-    // The ok getter steps are to return true if this’s response’s status is an
-    // ok status; otherwise false.
-    return this[kState].status >= 200 && this[kState].status <= 299
-  }
-
-  // Returns response’s status message.
-  get statusText () {
-    webidl.brandCheck(this, Response)
-
-    // The statusText getter steps are to return this’s response’s status
-    // message.
-    return this[kState].statusText
-  }
-
-  // Returns response’s headers as Headers.
-  get headers () {
-    webidl.brandCheck(this, Response)
-
-    // The headers getter steps are to return this’s headers.
-    return this[kHeaders]
-  }
-
-  get body () {
-    webidl.brandCheck(this, Response)
-
-    return this[kState].body ? this[kState].body.stream : null
-  }
-
-  get bodyUsed () {
-    webidl.brandCheck(this, Response)
-
-    return !!this[kState].body && util.isDisturbed(this[kState].body.stream)
-  }
-
-  // Returns a clone of response.
-  clone () {
-    webidl.brandCheck(this, Response)
-
-    // 1. If this is unusable, then throw a TypeError.
-    if (this.bodyUsed || (this.body && this.body.locked)) {
-      throw webidl.errors.exception({
-        header: 'Response.clone',
-        message: 'Body has already been consumed.'
-      })
-    }
-
-    // 2. Let clonedResponse be the result of cloning this’s response.
-    const clonedResponse = cloneResponse(this[kState])
-
-    // 3. Return the result of creating a Response object, given
-    // clonedResponse, this’s headers’s guard, and this’s relevant Realm.
-    const clonedResponseObject = new Response()
-    clonedResponseObject[kState] = clonedResponse
-    clonedResponseObject[kRealm] = this[kRealm]
-    clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList
-    clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]
-    clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]
-
-    return clonedResponseObject
-  }
-}
-
-mixinBody(Response)
-
-Object.defineProperties(Response.prototype, {
-  type: kEnumerableProperty,
-  url: kEnumerableProperty,
-  status: kEnumerableProperty,
-  ok: kEnumerableProperty,
-  redirected: kEnumerableProperty,
-  statusText: kEnumerableProperty,
-  headers: kEnumerableProperty,
-  clone: kEnumerableProperty,
-  body: kEnumerableProperty,
-  bodyUsed: kEnumerableProperty,
-  [Symbol.toStringTag]: {
-    value: 'Response',
-    configurable: true
-  }
-})
-
-Object.defineProperties(Response, {
-  json: kEnumerableProperty,
-  redirect: kEnumerableProperty,
-  error: kEnumerableProperty
-})
-
-// https://fetch.spec.whatwg.org/#concept-response-clone
-function cloneResponse (response) {
-  // To clone a response response, run these steps:
-
-  // 1. If response is a filtered response, then return a new identical
-  // filtered response whose internal response is a clone of response’s
-  // internal response.
-  if (response.internalResponse) {
-    return filterResponse(
-      cloneResponse(response.internalResponse),
-      response.type
-    )
-  }
-
-  // 2. Let newResponse be a copy of response, except for its body.
-  const newResponse = makeResponse({ ...response, body: null })
-
-  // 3. If response’s body is non-null, then set newResponse’s body to the
-  // result of cloning response’s body.
-  if (response.body != null) {
-    newResponse.body = cloneBody(response.body)
-  }
-
-  // 4. Return newResponse.
-  return newResponse
-}
-
-function makeResponse (init) {
-  return {
-    aborted: false,
-    rangeRequested: false,
-    timingAllowPassed: false,
-    requestIncludesCredentials: false,
-    type: 'default',
-    status: 200,
-    timingInfo: null,
-    cacheState: '',
-    statusText: '',
-    ...init,
-    headersList: init.headersList
-      ? new HeadersList(init.headersList)
-      : new HeadersList(),
-    urlList: init.urlList ? [...init.urlList] : []
-  }
-}
-
-function makeNetworkError (reason) {
-  const isError = isErrorLike(reason)
-  return makeResponse({
-    type: 'error',
-    status: 0,
-    error: isError
-      ? reason
-      : new Error(reason ? String(reason) : reason),
-    aborted: reason && reason.name === 'AbortError'
-  })
-}
-
-function makeFilteredResponse (response, state) {
-  state = {
-    internalResponse: response,
-    ...state
-  }
-
-  return new Proxy(response, {
-    get (target, p) {
-      return p in state ? state[p] : target[p]
-    },
-    set (target, p, value) {
-      assert(!(p in state))
-      target[p] = value
-      return true
-    }
-  })
-}
-
-// https://fetch.spec.whatwg.org/#concept-filtered-response
-function filterResponse (response, type) {
-  // Set response to the following filtered response with response as its
-  // internal response, depending on request’s response tainting:
-  if (type === 'basic') {
-    // A basic filtered response is a filtered response whose type is "basic"
-    // and header list excludes any headers in internal response’s header list
-    // whose name is a forbidden response-header name.
-
-    // Note: undici does not implement forbidden response-header names
-    return makeFilteredResponse(response, {
-      type: 'basic',
-      headersList: response.headersList
-    })
-  } else if (type === 'cors') {
-    // A CORS filtered response is a filtered response whose type is "cors"
-    // and header list excludes any headers in internal response’s header
-    // list whose name is not a CORS-safelisted response-header name, given
-    // internal response’s CORS-exposed header-name list.
-
-    // Note: undici does not implement CORS-safelisted response-header names
-    return makeFilteredResponse(response, {
-      type: 'cors',
-      headersList: response.headersList
-    })
-  } else if (type === 'opaque') {
-    // An opaque filtered response is a filtered response whose type is
-    // "opaque", URL list is the empty list, status is 0, status message
-    // is the empty byte sequence, header list is empty, and body is null.
-
-    return makeFilteredResponse(response, {
-      type: 'opaque',
-      urlList: Object.freeze([]),
-      status: 0,
-      statusText: '',
-      body: null
-    })
-  } else if (type === 'opaqueredirect') {
-    // An opaque-redirect filtered response is a filtered response whose type
-    // is "opaqueredirect", status is 0, status message is the empty byte
-    // sequence, header list is empty, and body is null.
-
-    return makeFilteredResponse(response, {
-      type: 'opaqueredirect',
-      status: 0,
-      statusText: '',
-      headersList: [],
-      body: null
-    })
-  } else {
-    assert(false)
-  }
-}
-
-// https://fetch.spec.whatwg.org/#appropriate-network-error
-function makeAppropriateNetworkError (fetchParams, err = null) {
-  // 1. Assert: fetchParams is canceled.
-  assert(isCancelled(fetchParams))
-
-  // 2. Return an aborted network error if fetchParams is aborted;
-  // otherwise return a network error.
-  return isAborted(fetchParams)
-    ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err }))
-    : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err }))
-}
-
-// https://whatpr.org/fetch/1392.html#initialize-a-response
-function initializeResponse (response, init, body) {
-  // 1. If init["status"] is not in the range 200 to 599, inclusive, then
-  //    throw a RangeError.
-  if (init.status !== null && (init.status < 200 || init.status > 599)) {
-    throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.')
-  }
-
-  // 2. If init["statusText"] does not match the reason-phrase token production,
-  //    then throw a TypeError.
-  if ('statusText' in init && init.statusText != null) {
-    // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2:
-    //   reason-phrase  = *( HTAB / SP / VCHAR / obs-text )
-    if (!isValidReasonPhrase(String(init.statusText))) {
-      throw new TypeError('Invalid statusText')
-    }
-  }
-
-  // 3. Set response’s response’s status to init["status"].
-  if ('status' in init && init.status != null) {
-    response[kState].status = init.status
-  }
-
-  // 4. Set response’s response’s status message to init["statusText"].
-  if ('statusText' in init && init.statusText != null) {
-    response[kState].statusText = init.statusText
-  }
-
-  // 5. If init["headers"] exists, then fill response’s headers with init["headers"].
-  if ('headers' in init && init.headers != null) {
-    fill(response[kHeaders], init.headers)
-  }
-
-  // 6. If body was given, then:
-  if (body) {
-    // 1. If response's status is a null body status, then throw a TypeError.
-    if (nullBodyStatus.includes(response.status)) {
-      throw webidl.errors.exception({
-        header: 'Response constructor',
-        message: 'Invalid response status code ' + response.status
-      })
-    }
-
-    // 2. Set response's body to body's body.
-    response[kState].body = body.body
-
-    // 3. If body's type is non-null and response's header list does not contain
-    //    `Content-Type`, then append (`Content-Type`, body's type) to response's header list.
-    if (body.type != null && !response[kState].headersList.contains('Content-Type')) {
-      response[kState].headersList.append('content-type', body.type)
-    }
-  }
-}
-
-webidl.converters.ReadableStream = webidl.interfaceConverter(
-  ReadableStream
-)
-
-webidl.converters.FormData = webidl.interfaceConverter(
-  FormData
-)
-
-webidl.converters.URLSearchParams = webidl.interfaceConverter(
-  URLSearchParams
-)
-
-// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit
-webidl.converters.XMLHttpRequestBodyInit = function (V) {
-  if (typeof V === 'string') {
-    return webidl.converters.USVString(V)
-  }
-
-  if (isBlobLike(V)) {
-    return webidl.converters.Blob(V, { strict: false })
-  }
-
-  if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) {
-    return webidl.converters.BufferSource(V)
-  }
-
-  if (util.isFormDataLike(V)) {
-    return webidl.converters.FormData(V, { strict: false })
-  }
-
-  if (V instanceof URLSearchParams) {
-    return webidl.converters.URLSearchParams(V)
-  }
-
-  return webidl.converters.DOMString(V)
-}
-
-// https://fetch.spec.whatwg.org/#bodyinit
-webidl.converters.BodyInit = function (V) {
-  if (V instanceof ReadableStream) {
-    return webidl.converters.ReadableStream(V)
-  }
-
-  // Note: the spec doesn't include async iterables,
-  // this is an undici extension.
-  if (V?.[Symbol.asyncIterator]) {
-    return V
-  }
-
-  return webidl.converters.XMLHttpRequestBodyInit(V)
-}
-
-webidl.converters.ResponseInit = webidl.dictionaryConverter([
-  {
-    key: 'status',
-    converter: webidl.converters['unsigned short'],
-    defaultValue: 200
-  },
-  {
-    key: 'statusText',
-    converter: webidl.converters.ByteString,
-    defaultValue: ''
-  },
-  {
-    key: 'headers',
-    converter: webidl.converters.HeadersInit
-  }
-])
-
-module.exports = {
-  makeNetworkError,
-  makeResponse,
-  makeAppropriateNetworkError,
-  filterResponse,
-  Response,
-  cloneResponse
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/symbols.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/symbols.js
deleted file mode 100644
index 0b947d5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/symbols.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict'
-
-module.exports = {
-  kUrl: Symbol('url'),
-  kHeaders: Symbol('headers'),
-  kSignal: Symbol('signal'),
-  kState: Symbol('state'),
-  kGuard: Symbol('guard'),
-  kRealm: Symbol('realm')
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/util.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/util.js
deleted file mode 100644
index b12142c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/util.js
+++ /dev/null
@@ -1,1071 +0,0 @@
-'use strict'
-
-const { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants')
-const { getGlobalOrigin } = require('./global')
-const { performance } = require('perf_hooks')
-const { isBlobLike, toUSVString, ReadableStreamFrom } = require('../core/util')
-const assert = require('assert')
-const { isUint8Array } = require('util/types')
-
-// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable
-/** @type {import('crypto')|undefined} */
-let crypto
-
-try {
-  crypto = require('crypto')
-} catch {
-
-}
-
-function responseURL (response) {
-  // https://fetch.spec.whatwg.org/#responses
-  // A response has an associated URL. It is a pointer to the last URL
-  // in response’s URL list and null if response’s URL list is empty.
-  const urlList = response.urlList
-  const length = urlList.length
-  return length === 0 ? null : urlList[length - 1].toString()
-}
-
-// https://fetch.spec.whatwg.org/#concept-response-location-url
-function responseLocationURL (response, requestFragment) {
-  // 1. If response’s status is not a redirect status, then return null.
-  if (!redirectStatusSet.has(response.status)) {
-    return null
-  }
-
-  // 2. Let location be the result of extracting header list values given
-  // `Location` and response’s header list.
-  let location = response.headersList.get('location')
-
-  // 3. If location is a header value, then set location to the result of
-  //    parsing location with response’s URL.
-  if (location !== null && isValidHeaderValue(location)) {
-    location = new URL(location, responseURL(response))
-  }
-
-  // 4. If location is a URL whose fragment is null, then set location’s
-  // fragment to requestFragment.
-  if (location && !location.hash) {
-    location.hash = requestFragment
-  }
-
-  // 5. Return location.
-  return location
-}
-
-/** @returns {URL} */
-function requestCurrentURL (request) {
-  return request.urlList[request.urlList.length - 1]
-}
-
-function requestBadPort (request) {
-  // 1. Let url be request’s current URL.
-  const url = requestCurrentURL(request)
-
-  // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port,
-  // then return blocked.
-  if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {
-    return 'blocked'
-  }
-
-  // 3. Return allowed.
-  return 'allowed'
-}
-
-function isErrorLike (object) {
-  return object instanceof Error || (
-    object?.constructor?.name === 'Error' ||
-    object?.constructor?.name === 'DOMException'
-  )
-}
-
-// Check whether |statusText| is a ByteString and
-// matches the Reason-Phrase token production.
-// RFC 2616: https://tools.ietf.org/html/rfc2616
-// RFC 7230: https://tools.ietf.org/html/rfc7230
-// "reason-phrase = *( HTAB / SP / VCHAR / obs-text )"
-// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116
-function isValidReasonPhrase (statusText) {
-  for (let i = 0; i < statusText.length; ++i) {
-    const c = statusText.charCodeAt(i)
-    if (
-      !(
-        (
-          c === 0x09 || // HTAB
-          (c >= 0x20 && c <= 0x7e) || // SP / VCHAR
-          (c >= 0x80 && c <= 0xff)
-        ) // obs-text
-      )
-    ) {
-      return false
-    }
-  }
-  return true
-}
-
-/**
- * @see https://tools.ietf.org/html/rfc7230#section-3.2.6
- * @param {number} c
- */
-function isTokenCharCode (c) {
-  switch (c) {
-    case 0x22:
-    case 0x28:
-    case 0x29:
-    case 0x2c:
-    case 0x2f:
-    case 0x3a:
-    case 0x3b:
-    case 0x3c:
-    case 0x3d:
-    case 0x3e:
-    case 0x3f:
-    case 0x40:
-    case 0x5b:
-    case 0x5c:
-    case 0x5d:
-    case 0x7b:
-    case 0x7d:
-      // DQUOTE and "(),/:;<=>?@[\]{}"
-      return false
-    default:
-      // VCHAR %x21-7E
-      return c >= 0x21 && c <= 0x7e
-  }
-}
-
-/**
- * @param {string} characters
- */
-function isValidHTTPToken (characters) {
-  if (characters.length === 0) {
-    return false
-  }
-  for (let i = 0; i < characters.length; ++i) {
-    if (!isTokenCharCode(characters.charCodeAt(i))) {
-      return false
-    }
-  }
-  return true
-}
-
-/**
- * @see https://fetch.spec.whatwg.org/#header-name
- * @param {string} potentialValue
- */
-function isValidHeaderName (potentialValue) {
-  return isValidHTTPToken(potentialValue)
-}
-
-/**
- * @see https://fetch.spec.whatwg.org/#header-value
- * @param {string} potentialValue
- */
-function isValidHeaderValue (potentialValue) {
-  // - Has no leading or trailing HTTP tab or space bytes.
-  // - Contains no 0x00 (NUL) or HTTP newline bytes.
-  if (
-    potentialValue.startsWith('\t') ||
-    potentialValue.startsWith(' ') ||
-    potentialValue.endsWith('\t') ||
-    potentialValue.endsWith(' ')
-  ) {
-    return false
-  }
-
-  if (
-    potentialValue.includes('\0') ||
-    potentialValue.includes('\r') ||
-    potentialValue.includes('\n')
-  ) {
-    return false
-  }
-
-  return true
-}
-
-// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect
-function setRequestReferrerPolicyOnRedirect (request, actualResponse) {
-  //  Given a request request and a response actualResponse, this algorithm
-  //  updates request’s referrer policy according to the Referrer-Policy
-  //  header (if any) in actualResponse.
-
-  // 1. Let policy be the result of executing § 8.1 Parse a referrer policy
-  // from a Referrer-Policy header on actualResponse.
-
-  // 8.1 Parse a referrer policy from a Referrer-Policy header
-  // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list.
-  const { headersList } = actualResponse
-  // 2. Let policy be the empty string.
-  // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.
-  // 4. Return policy.
-  const policyHeader = (headersList.get('referrer-policy') ?? '').split(',')
-
-  // Note: As the referrer-policy can contain multiple policies
-  // separated by comma, we need to loop through all of them
-  // and pick the first valid one.
-  // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy
-  let policy = ''
-  if (policyHeader.length > 0) {
-    // The right-most policy takes precedence.
-    // The left-most policy is the fallback.
-    for (let i = policyHeader.length; i !== 0; i--) {
-      const token = policyHeader[i - 1].trim()
-      if (referrerPolicyTokens.has(token)) {
-        policy = token
-        break
-      }
-    }
-  }
-
-  // 2. If policy is not the empty string, then set request’s referrer policy to policy.
-  if (policy !== '') {
-    request.referrerPolicy = policy
-  }
-}
-
-// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check
-function crossOriginResourcePolicyCheck () {
-  // TODO
-  return 'allowed'
-}
-
-// https://fetch.spec.whatwg.org/#concept-cors-check
-function corsCheck () {
-  // TODO
-  return 'success'
-}
-
-// https://fetch.spec.whatwg.org/#concept-tao-check
-function TAOCheck () {
-  // TODO
-  return 'success'
-}
-
-function appendFetchMetadata (httpRequest) {
-  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header
-  //  TODO
-
-  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header
-
-  //  1. Assert: r’s url is a potentially trustworthy URL.
-  //  TODO
-
-  //  2. Let header be a Structured Header whose value is a token.
-  let header = null
-
-  //  3. Set header’s value to r’s mode.
-  header = httpRequest.mode
-
-  //  4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list.
-  httpRequest.headersList.set('sec-fetch-mode', header)
-
-  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header
-  //  TODO
-
-  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header
-  //  TODO
-}
-
-// https://fetch.spec.whatwg.org/#append-a-request-origin-header
-function appendRequestOriginHeader (request) {
-  // 1. Let serializedOrigin be the result of byte-serializing a request origin with request.
-  let serializedOrigin = request.origin
-
-  // 2. If request’s response tainting is "cors" or request’s mode is "websocket", then append (`Origin`, serializedOrigin) to request’s header list.
-  if (request.responseTainting === 'cors' || request.mode === 'websocket') {
-    if (serializedOrigin) {
-      request.headersList.append('origin', serializedOrigin)
-    }
-
-  // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then:
-  } else if (request.method !== 'GET' && request.method !== 'HEAD') {
-    // 1. Switch on request’s referrer policy:
-    switch (request.referrerPolicy) {
-      case 'no-referrer':
-        // Set serializedOrigin to `null`.
-        serializedOrigin = null
-        break
-      case 'no-referrer-when-downgrade':
-      case 'strict-origin':
-      case 'strict-origin-when-cross-origin':
-        // If request’s origin is a tuple origin, its scheme is "https", and request’s current URL’s scheme is not "https", then set serializedOrigin to `null`.
-        if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {
-          serializedOrigin = null
-        }
-        break
-      case 'same-origin':
-        // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`.
-        if (!sameOrigin(request, requestCurrentURL(request))) {
-          serializedOrigin = null
-        }
-        break
-      default:
-        // Do nothing.
-    }
-
-    if (serializedOrigin) {
-      // 2. Append (`Origin`, serializedOrigin) to request’s header list.
-      request.headersList.append('origin', serializedOrigin)
-    }
-  }
-}
-
-function coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {
-  // TODO
-  return performance.now()
-}
-
-// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info
-function createOpaqueTimingInfo (timingInfo) {
-  return {
-    startTime: timingInfo.startTime ?? 0,
-    redirectStartTime: 0,
-    redirectEndTime: 0,
-    postRedirectStartTime: timingInfo.startTime ?? 0,
-    finalServiceWorkerStartTime: 0,
-    finalNetworkResponseStartTime: 0,
-    finalNetworkRequestStartTime: 0,
-    endTime: 0,
-    encodedBodySize: 0,
-    decodedBodySize: 0,
-    finalConnectionTimingInfo: null
-  }
-}
-
-// https://html.spec.whatwg.org/multipage/origin.html#policy-container
-function makePolicyContainer () {
-  // Note: the fetch spec doesn't make use of embedder policy or CSP list
-  return {
-    referrerPolicy: 'strict-origin-when-cross-origin'
-  }
-}
-
-// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container
-function clonePolicyContainer (policyContainer) {
-  return {
-    referrerPolicy: policyContainer.referrerPolicy
-  }
-}
-
-// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer
-function determineRequestsReferrer (request) {
-  // 1. Let policy be request's referrer policy.
-  const policy = request.referrerPolicy
-
-  // Note: policy cannot (shouldn't) be null or an empty string.
-  assert(policy)
-
-  // 2. Let environment be request’s client.
-
-  let referrerSource = null
-
-  // 3. Switch on request’s referrer:
-  if (request.referrer === 'client') {
-    // Note: node isn't a browser and doesn't implement document/iframes,
-    // so we bypass this step and replace it with our own.
-
-    const globalOrigin = getGlobalOrigin()
-
-    if (!globalOrigin || globalOrigin.origin === 'null') {
-      return 'no-referrer'
-    }
-
-    // note: we need to clone it as it's mutated
-    referrerSource = new URL(globalOrigin)
-  } else if (request.referrer instanceof URL) {
-    // Let referrerSource be request’s referrer.
-    referrerSource = request.referrer
-  }
-
-  // 4. Let request’s referrerURL be the result of stripping referrerSource for
-  //    use as a referrer.
-  let referrerURL = stripURLForReferrer(referrerSource)
-
-  // 5. Let referrerOrigin be the result of stripping referrerSource for use as
-  //    a referrer, with the origin-only flag set to true.
-  const referrerOrigin = stripURLForReferrer(referrerSource, true)
-
-  // 6. If the result of serializing referrerURL is a string whose length is
-  //    greater than 4096, set referrerURL to referrerOrigin.
-  if (referrerURL.toString().length > 4096) {
-    referrerURL = referrerOrigin
-  }
-
-  const areSameOrigin = sameOrigin(request, referrerURL)
-  const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) &&
-    !isURLPotentiallyTrustworthy(request.url)
-
-  // 8. Execute the switch statements corresponding to the value of policy:
-  switch (policy) {
-    case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true)
-    case 'unsafe-url': return referrerURL
-    case 'same-origin':
-      return areSameOrigin ? referrerOrigin : 'no-referrer'
-    case 'origin-when-cross-origin':
-      return areSameOrigin ? referrerURL : referrerOrigin
-    case 'strict-origin-when-cross-origin': {
-      const currentURL = requestCurrentURL(request)
-
-      // 1. If the origin of referrerURL and the origin of request’s current
-      //    URL are the same, then return referrerURL.
-      if (sameOrigin(referrerURL, currentURL)) {
-        return referrerURL
-      }
-
-      // 2. If referrerURL is a potentially trustworthy URL and request’s
-      //    current URL is not a potentially trustworthy URL, then return no
-      //    referrer.
-      if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
-        return 'no-referrer'
-      }
-
-      // 3. Return referrerOrigin.
-      return referrerOrigin
-    }
-    case 'strict-origin': // eslint-disable-line
-      /**
-         * 1. If referrerURL is a potentially trustworthy URL and
-         * request’s current URL is not a potentially trustworthy URL,
-         * then return no referrer.
-         * 2. Return referrerOrigin
-        */
-    case 'no-referrer-when-downgrade': // eslint-disable-line
-      /**
-       * 1. If referrerURL is a potentially trustworthy URL and
-       * request’s current URL is not a potentially trustworthy URL,
-       * then return no referrer.
-       * 2. Return referrerOrigin
-      */
-
-    default: // eslint-disable-line
-      return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin
-  }
-}
-
-/**
- * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url
- * @param {URL} url
- * @param {boolean|undefined} originOnly
- */
-function stripURLForReferrer (url, originOnly) {
-  // 1. Assert: url is a URL.
-  assert(url instanceof URL)
-
-  // 2. If url’s scheme is a local scheme, then return no referrer.
-  if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') {
-    return 'no-referrer'
-  }
-
-  // 3. Set url’s username to the empty string.
-  url.username = ''
-
-  // 4. Set url’s password to the empty string.
-  url.password = ''
-
-  // 5. Set url’s fragment to null.
-  url.hash = ''
-
-  // 6. If the origin-only flag is true, then:
-  if (originOnly) {
-    // 1. Set url’s path to « the empty string ».
-    url.pathname = ''
-
-    // 2. Set url’s query to null.
-    url.search = ''
-  }
-
-  // 7. Return url.
-  return url
-}
-
-function isURLPotentiallyTrustworthy (url) {
-  if (!(url instanceof URL)) {
-    return false
-  }
-
-  // If child of about, return true
-  if (url.href === 'about:blank' || url.href === 'about:srcdoc') {
-    return true
-  }
-
-  // If scheme is data, return true
-  if (url.protocol === 'data:') return true
-
-  // If file, return true
-  if (url.protocol === 'file:') return true
-
-  return isOriginPotentiallyTrustworthy(url.origin)
-
-  function isOriginPotentiallyTrustworthy (origin) {
-    // If origin is explicitly null, return false
-    if (origin == null || origin === 'null') return false
-
-    const originAsURL = new URL(origin)
-
-    // If secure, return true
-    if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') {
-      return true
-    }
-
-    // If localhost or variants, return true
-    if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) ||
-     (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) ||
-     (originAsURL.hostname.endsWith('.localhost'))) {
-      return true
-    }
-
-    // If any other, return false
-    return false
-  }
-}
-
-/**
- * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist
- * @param {Uint8Array} bytes
- * @param {string} metadataList
- */
-function bytesMatch (bytes, metadataList) {
-  // If node is not built with OpenSSL support, we cannot check
-  // a request's integrity, so allow it by default (the spec will
-  // allow requests if an invalid hash is given, as precedence).
-  /* istanbul ignore if: only if node is built with --without-ssl */
-  if (crypto === undefined) {
-    return true
-  }
-
-  // 1. Let parsedMetadata be the result of parsing metadataList.
-  const parsedMetadata = parseMetadata(metadataList)
-
-  // 2. If parsedMetadata is no metadata, return true.
-  if (parsedMetadata === 'no metadata') {
-    return true
-  }
-
-  // 3. If parsedMetadata is the empty set, return true.
-  if (parsedMetadata.length === 0) {
-    return true
-  }
-
-  // 4. Let metadata be the result of getting the strongest
-  //    metadata from parsedMetadata.
-  const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo))
-  // get the strongest algorithm
-  const strongest = list[0].algo
-  // get all entries that use the strongest algorithm; ignore weaker
-  const metadata = list.filter((item) => item.algo === strongest)
-
-  // 5. For each item in metadata:
-  for (const item of metadata) {
-    // 1. Let algorithm be the alg component of item.
-    const algorithm = item.algo
-
-    // 2. Let expectedValue be the val component of item.
-    let expectedValue = item.hash
-
-    // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e
-    // "be liberal with padding". This is annoying, and it's not even in the spec.
-
-    if (expectedValue.endsWith('==')) {
-      expectedValue = expectedValue.slice(0, -2)
-    }
-
-    // 3. Let actualValue be the result of applying algorithm to bytes.
-    let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')
-
-    if (actualValue.endsWith('==')) {
-      actualValue = actualValue.slice(0, -2)
-    }
-
-    // 4. If actualValue is a case-sensitive match for expectedValue,
-    //    return true.
-    if (actualValue === expectedValue) {
-      return true
-    }
-
-    let actualBase64URL = crypto.createHash(algorithm).update(bytes).digest('base64url')
-
-    if (actualBase64URL.endsWith('==')) {
-      actualBase64URL = actualBase64URL.slice(0, -2)
-    }
-
-    if (actualBase64URL === expectedValue) {
-      return true
-    }
-  }
-
-  // 6. Return false.
-  return false
-}
-
-// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options
-// https://www.w3.org/TR/CSP2/#source-list-syntax
-// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1
-const parseHashWithOptions = /((?<algo>sha256|sha384|sha512)-(?<hash>[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i
-
-/**
- * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
- * @param {string} metadata
- */
-function parseMetadata (metadata) {
-  // 1. Let result be the empty set.
-  /** @type {{ algo: string, hash: string }[]} */
-  const result = []
-
-  // 2. Let empty be equal to true.
-  let empty = true
-
-  const supportedHashes = crypto.getHashes()
-
-  // 3. For each token returned by splitting metadata on spaces:
-  for (const token of metadata.split(' ')) {
-    // 1. Set empty to false.
-    empty = false
-
-    // 2. Parse token as a hash-with-options.
-    const parsedToken = parseHashWithOptions.exec(token)
-
-    // 3. If token does not parse, continue to the next token.
-    if (parsedToken === null || parsedToken.groups === undefined) {
-      // Note: Chromium blocks the request at this point, but Firefox
-      // gives a warning that an invalid integrity was given. The
-      // correct behavior is to ignore these, and subsequently not
-      // check the integrity of the resource.
-      continue
-    }
-
-    // 4. Let algorithm be the hash-algo component of token.
-    const algorithm = parsedToken.groups.algo
-
-    // 5. If algorithm is a hash function recognized by the user
-    //    agent, add the parsed token to result.
-    if (supportedHashes.includes(algorithm.toLowerCase())) {
-      result.push(parsedToken.groups)
-    }
-  }
-
-  // 4. Return no metadata if empty is true, otherwise return result.
-  if (empty === true) {
-    return 'no metadata'
-  }
-
-  return result
-}
-
-// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request
-function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {
-  // TODO
-}
-
-/**
- * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin}
- * @param {URL} A
- * @param {URL} B
- */
-function sameOrigin (A, B) {
-  // 1. If A and B are the same opaque origin, then return true.
-  if (A.origin === B.origin && A.origin === 'null') {
-    return true
-  }
-
-  // 2. If A and B are both tuple origins and their schemes,
-  //    hosts, and port are identical, then return true.
-  if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {
-    return true
-  }
-
-  // 3. Return false.
-  return false
-}
-
-function createDeferredPromise () {
-  let res
-  let rej
-  const promise = new Promise((resolve, reject) => {
-    res = resolve
-    rej = reject
-  })
-
-  return { promise, resolve: res, reject: rej }
-}
-
-function isAborted (fetchParams) {
-  return fetchParams.controller.state === 'aborted'
-}
-
-function isCancelled (fetchParams) {
-  return fetchParams.controller.state === 'aborted' ||
-    fetchParams.controller.state === 'terminated'
-}
-
-const normalizeMethodRecord = {
-  delete: 'DELETE',
-  DELETE: 'DELETE',
-  get: 'GET',
-  GET: 'GET',
-  head: 'HEAD',
-  HEAD: 'HEAD',
-  options: 'OPTIONS',
-  OPTIONS: 'OPTIONS',
-  post: 'POST',
-  POST: 'POST',
-  put: 'PUT',
-  PUT: 'PUT'
-}
-
-// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.
-Object.setPrototypeOf(normalizeMethodRecord, null)
-
-/**
- * @see https://fetch.spec.whatwg.org/#concept-method-normalize
- * @param {string} method
- */
-function normalizeMethod (method) {
-  return normalizeMethodRecord[method.toLowerCase()] ?? method
-}
-
-// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string
-function serializeJavascriptValueToJSONString (value) {
-  // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »).
-  const result = JSON.stringify(value)
-
-  // 2. If result is undefined, then throw a TypeError.
-  if (result === undefined) {
-    throw new TypeError('Value is not JSON serializable')
-  }
-
-  // 3. Assert: result is a string.
-  assert(typeof result === 'string')
-
-  // 4. Return result.
-  return result
-}
-
-// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object
-const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))
-
-/**
- * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object
- * @param {() => unknown[]} iterator
- * @param {string} name name of the instance
- * @param {'key'|'value'|'key+value'} kind
- */
-function makeIterator (iterator, name, kind) {
-  const object = {
-    index: 0,
-    kind,
-    target: iterator
-  }
-
-  const i = {
-    next () {
-      // 1. Let interface be the interface for which the iterator prototype object exists.
-
-      // 2. Let thisValue be the this value.
-
-      // 3. Let object be ? ToObject(thisValue).
-
-      // 4. If object is a platform object, then perform a security
-      //    check, passing:
-
-      // 5. If object is not a default iterator object for interface,
-      //    then throw a TypeError.
-      if (Object.getPrototypeOf(this) !== i) {
-        throw new TypeError(
-          `'next' called on an object that does not implement interface ${name} Iterator.`
-        )
-      }
-
-      // 6. Let index be object’s index.
-      // 7. Let kind be object’s kind.
-      // 8. Let values be object’s target's value pairs to iterate over.
-      const { index, kind, target } = object
-      const values = target()
-
-      // 9. Let len be the length of values.
-      const len = values.length
-
-      // 10. If index is greater than or equal to len, then return
-      //     CreateIterResultObject(undefined, true).
-      if (index >= len) {
-        return { value: undefined, done: true }
-      }
-
-      // 11. Let pair be the entry in values at index index.
-      const pair = values[index]
-
-      // 12. Set object’s index to index + 1.
-      object.index = index + 1
-
-      // 13. Return the iterator result for pair and kind.
-      return iteratorResult(pair, kind)
-    },
-    // The class string of an iterator prototype object for a given interface is the
-    // result of concatenating the identifier of the interface and the string " Iterator".
-    [Symbol.toStringTag]: `${name} Iterator`
-  }
-
-  // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%.
-  Object.setPrototypeOf(i, esIteratorPrototype)
-  // esIteratorPrototype needs to be the prototype of i
-  // which is the prototype of an empty object. Yes, it's confusing.
-  return Object.setPrototypeOf({}, i)
-}
-
-// https://webidl.spec.whatwg.org/#iterator-result
-function iteratorResult (pair, kind) {
-  let result
-
-  // 1. Let result be a value determined by the value of kind:
-  switch (kind) {
-    case 'key': {
-      // 1. Let idlKey be pair’s key.
-      // 2. Let key be the result of converting idlKey to an
-      //    ECMAScript value.
-      // 3. result is key.
-      result = pair[0]
-      break
-    }
-    case 'value': {
-      // 1. Let idlValue be pair’s value.
-      // 2. Let value be the result of converting idlValue to
-      //    an ECMAScript value.
-      // 3. result is value.
-      result = pair[1]
-      break
-    }
-    case 'key+value': {
-      // 1. Let idlKey be pair’s key.
-      // 2. Let idlValue be pair’s value.
-      // 3. Let key be the result of converting idlKey to an
-      //    ECMAScript value.
-      // 4. Let value be the result of converting idlValue to
-      //    an ECMAScript value.
-      // 5. Let array be ! ArrayCreate(2).
-      // 6. Call ! CreateDataProperty(array, "0", key).
-      // 7. Call ! CreateDataProperty(array, "1", value).
-      // 8. result is array.
-      result = pair
-      break
-    }
-  }
-
-  // 2. Return CreateIterResultObject(result, false).
-  return { value: result, done: false }
-}
-
-/**
- * @see https://fetch.spec.whatwg.org/#body-fully-read
- */
-async function fullyReadBody (body, processBody, processBodyError) {
-  // 1. If taskDestination is null, then set taskDestination to
-  //    the result of starting a new parallel queue.
-
-  // 2. Let successSteps given a byte sequence bytes be to queue a
-  //    fetch task to run processBody given bytes, with taskDestination.
-  const successSteps = processBody
-
-  // 3. Let errorSteps be to queue a fetch task to run processBodyError,
-  //    with taskDestination.
-  const errorSteps = processBodyError
-
-  // 4. Let reader be the result of getting a reader for body’s stream.
-  //    If that threw an exception, then run errorSteps with that
-  //    exception and return.
-  let reader
-
-  try {
-    reader = body.stream.getReader()
-  } catch (e) {
-    errorSteps(e)
-    return
-  }
-
-  // 5. Read all bytes from reader, given successSteps and errorSteps.
-  try {
-    const result = await readAllBytes(reader)
-    successSteps(result)
-  } catch (e) {
-    errorSteps(e)
-  }
-}
-
-/** @type {ReadableStream} */
-let ReadableStream = globalThis.ReadableStream
-
-function isReadableStreamLike (stream) {
-  if (!ReadableStream) {
-    ReadableStream = require('stream/web').ReadableStream
-  }
-
-  return stream instanceof ReadableStream || (
-    stream[Symbol.toStringTag] === 'ReadableStream' &&
-    typeof stream.tee === 'function'
-  )
-}
-
-const MAXIMUM_ARGUMENT_LENGTH = 65535
-
-/**
- * @see https://infra.spec.whatwg.org/#isomorphic-decode
- * @param {number[]|Uint8Array} input
- */
-function isomorphicDecode (input) {
-  // 1. To isomorphic decode a byte sequence input, return a string whose code point
-  //    length is equal to input’s length and whose code points have the same values
-  //    as the values of input’s bytes, in the same order.
-
-  if (input.length < MAXIMUM_ARGUMENT_LENGTH) {
-    return String.fromCharCode(...input)
-  }
-
-  return input.reduce((previous, current) => previous + String.fromCharCode(current), '')
-}
-
-/**
- * @param {ReadableStreamController<Uint8Array>} controller
- */
-function readableStreamClose (controller) {
-  try {
-    controller.close()
-  } catch (err) {
-    // TODO: add comment explaining why this error occurs.
-    if (!err.message.includes('Controller is already closed')) {
-      throw err
-    }
-  }
-}
-
-/**
- * @see https://infra.spec.whatwg.org/#isomorphic-encode
- * @param {string} input
- */
-function isomorphicEncode (input) {
-  // 1. Assert: input contains no code points greater than U+00FF.
-  for (let i = 0; i < input.length; i++) {
-    assert(input.charCodeAt(i) <= 0xFF)
-  }
-
-  // 2. Return a byte sequence whose length is equal to input’s code
-  //    point length and whose bytes have the same values as the
-  //    values of input’s code points, in the same order
-  return input
-}
-
-/**
- * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes
- * @see https://streams.spec.whatwg.org/#read-loop
- * @param {ReadableStreamDefaultReader} reader
- */
-async function readAllBytes (reader) {
-  const bytes = []
-  let byteLength = 0
-
-  while (true) {
-    const { done, value: chunk } = await reader.read()
-
-    if (done) {
-      // 1. Call successSteps with bytes.
-      return Buffer.concat(bytes, byteLength)
-    }
-
-    // 1. If chunk is not a Uint8Array object, call failureSteps
-    //    with a TypeError and abort these steps.
-    if (!isUint8Array(chunk)) {
-      throw new TypeError('Received non-Uint8Array chunk')
-    }
-
-    // 2. Append the bytes represented by chunk to bytes.
-    bytes.push(chunk)
-    byteLength += chunk.length
-
-    // 3. Read-loop given reader, bytes, successSteps, and failureSteps.
-  }
-}
-
-/**
- * @see https://fetch.spec.whatwg.org/#is-local
- * @param {URL} url
- */
-function urlIsLocal (url) {
-  assert('protocol' in url) // ensure it's a url object
-
-  const protocol = url.protocol
-
-  return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'
-}
-
-/**
- * @param {string|URL} url
- */
-function urlHasHttpsScheme (url) {
-  if (typeof url === 'string') {
-    return url.startsWith('https:')
-  }
-
-  return url.protocol === 'https:'
-}
-
-/**
- * @see https://fetch.spec.whatwg.org/#http-scheme
- * @param {URL} url
- */
-function urlIsHttpHttpsScheme (url) {
-  assert('protocol' in url) // ensure it's a url object
-
-  const protocol = url.protocol
-
-  return protocol === 'http:' || protocol === 'https:'
-}
-
-/**
- * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0.
- */
-const hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key))
-
-module.exports = {
-  isAborted,
-  isCancelled,
-  createDeferredPromise,
-  ReadableStreamFrom,
-  toUSVString,
-  tryUpgradeRequestToAPotentiallyTrustworthyURL,
-  coarsenedSharedCurrentTime,
-  determineRequestsReferrer,
-  makePolicyContainer,
-  clonePolicyContainer,
-  appendFetchMetadata,
-  appendRequestOriginHeader,
-  TAOCheck,
-  corsCheck,
-  crossOriginResourcePolicyCheck,
-  createOpaqueTimingInfo,
-  setRequestReferrerPolicyOnRedirect,
-  isValidHTTPToken,
-  requestBadPort,
-  requestCurrentURL,
-  responseURL,
-  responseLocationURL,
-  isBlobLike,
-  isURLPotentiallyTrustworthy,
-  isValidReasonPhrase,
-  sameOrigin,
-  normalizeMethod,
-  serializeJavascriptValueToJSONString,
-  makeIterator,
-  isValidHeaderName,
-  isValidHeaderValue,
-  hasOwn,
-  isErrorLike,
-  fullyReadBody,
-  bytesMatch,
-  isReadableStreamLike,
-  readableStreamClose,
-  isomorphicEncode,
-  isomorphicDecode,
-  urlIsLocal,
-  urlHasHttpsScheme,
-  urlIsHttpHttpsScheme,
-  readAllBytes,
-  normalizeMethodRecord
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/webidl.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/webidl.js
deleted file mode 100644
index 6fcf2ab..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fetch/webidl.js
+++ /dev/null
@@ -1,646 +0,0 @@
-'use strict'
-
-const { types } = require('util')
-const { hasOwn, toUSVString } = require('./util')
-
-/** @type {import('../../types/webidl').Webidl} */
-const webidl = {}
-webidl.converters = {}
-webidl.util = {}
-webidl.errors = {}
-
-webidl.errors.exception = function (message) {
-  return new TypeError(`${message.header}: ${message.message}`)
-}
-
-webidl.errors.conversionFailed = function (context) {
-  const plural = context.types.length === 1 ? '' : ' one of'
-  const message =
-    `${context.argument} could not be converted to` +
-    `${plural}: ${context.types.join(', ')}.`
-
-  return webidl.errors.exception({
-    header: context.prefix,
-    message
-  })
-}
-
-webidl.errors.invalidArgument = function (context) {
-  return webidl.errors.exception({
-    header: context.prefix,
-    message: `"${context.value}" is an invalid ${context.type}.`
-  })
-}
-
-// https://webidl.spec.whatwg.org/#implements
-webidl.brandCheck = function (V, I, opts = undefined) {
-  if (opts?.strict !== false && !(V instanceof I)) {
-    throw new TypeError('Illegal invocation')
-  } else {
-    return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]
-  }
-}
-
-webidl.argumentLengthCheck = function ({ length }, min, ctx) {
-  if (length < min) {
-    throw webidl.errors.exception({
-      message: `${min} argument${min !== 1 ? 's' : ''} required, ` +
-               `but${length ? ' only' : ''} ${length} found.`,
-      ...ctx
-    })
-  }
-}
-
-webidl.illegalConstructor = function () {
-  throw webidl.errors.exception({
-    header: 'TypeError',
-    message: 'Illegal constructor'
-  })
-}
-
-// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values
-webidl.util.Type = function (V) {
-  switch (typeof V) {
-    case 'undefined': return 'Undefined'
-    case 'boolean': return 'Boolean'
-    case 'string': return 'String'
-    case 'symbol': return 'Symbol'
-    case 'number': return 'Number'
-    case 'bigint': return 'BigInt'
-    case 'function':
-    case 'object': {
-      if (V === null) {
-        return 'Null'
-      }
-
-      return 'Object'
-    }
-  }
-}
-
-// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
-webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) {
-  let upperBound
-  let lowerBound
-
-  // 1. If bitLength is 64, then:
-  if (bitLength === 64) {
-    // 1. Let upperBound be 2^53 − 1.
-    upperBound = Math.pow(2, 53) - 1
-
-    // 2. If signedness is "unsigned", then let lowerBound be 0.
-    if (signedness === 'unsigned') {
-      lowerBound = 0
-    } else {
-      // 3. Otherwise let lowerBound be −2^53 + 1.
-      lowerBound = Math.pow(-2, 53) + 1
-    }
-  } else if (signedness === 'unsigned') {
-    // 2. Otherwise, if signedness is "unsigned", then:
-
-    // 1. Let lowerBound be 0.
-    lowerBound = 0
-
-    // 2. Let upperBound be 2^bitLength − 1.
-    upperBound = Math.pow(2, bitLength) - 1
-  } else {
-    // 3. Otherwise:
-
-    // 1. Let lowerBound be -2^bitLength − 1.
-    lowerBound = Math.pow(-2, bitLength) - 1
-
-    // 2. Let upperBound be 2^bitLength − 1 − 1.
-    upperBound = Math.pow(2, bitLength - 1) - 1
-  }
-
-  // 4. Let x be ? ToNumber(V).
-  let x = Number(V)
-
-  // 5. If x is −0, then set x to +0.
-  if (x === 0) {
-    x = 0
-  }
-
-  // 6. If the conversion is to an IDL type associated
-  //    with the [EnforceRange] extended attribute, then:
-  if (opts.enforceRange === true) {
-    // 1. If x is NaN, +∞, or −∞, then throw a TypeError.
-    if (
-      Number.isNaN(x) ||
-      x === Number.POSITIVE_INFINITY ||
-      x === Number.NEGATIVE_INFINITY
-    ) {
-      throw webidl.errors.exception({
-        header: 'Integer conversion',
-        message: `Could not convert ${V} to an integer.`
-      })
-    }
-
-    // 2. Set x to IntegerPart(x).
-    x = webidl.util.IntegerPart(x)
-
-    // 3. If x < lowerBound or x > upperBound, then
-    //    throw a TypeError.
-    if (x < lowerBound || x > upperBound) {
-      throw webidl.errors.exception({
-        header: 'Integer conversion',
-        message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`
-      })
-    }
-
-    // 4. Return x.
-    return x
-  }
-
-  // 7. If x is not NaN and the conversion is to an IDL
-  //    type associated with the [Clamp] extended
-  //    attribute, then:
-  if (!Number.isNaN(x) && opts.clamp === true) {
-    // 1. Set x to min(max(x, lowerBound), upperBound).
-    x = Math.min(Math.max(x, lowerBound), upperBound)
-
-    // 2. Round x to the nearest integer, choosing the
-    //    even integer if it lies halfway between two,
-    //    and choosing +0 rather than −0.
-    if (Math.floor(x) % 2 === 0) {
-      x = Math.floor(x)
-    } else {
-      x = Math.ceil(x)
-    }
-
-    // 3. Return x.
-    return x
-  }
-
-  // 8. If x is NaN, +0, +∞, or −∞, then return +0.
-  if (
-    Number.isNaN(x) ||
-    (x === 0 && Object.is(0, x)) ||
-    x === Number.POSITIVE_INFINITY ||
-    x === Number.NEGATIVE_INFINITY
-  ) {
-    return 0
-  }
-
-  // 9. Set x to IntegerPart(x).
-  x = webidl.util.IntegerPart(x)
-
-  // 10. Set x to x modulo 2^bitLength.
-  x = x % Math.pow(2, bitLength)
-
-  // 11. If signedness is "signed" and x ≥ 2^bitLength − 1,
-  //    then return x − 2^bitLength.
-  if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) {
-    return x - Math.pow(2, bitLength)
-  }
-
-  // 12. Otherwise, return x.
-  return x
-}
-
-// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart
-webidl.util.IntegerPart = function (n) {
-  // 1. Let r be floor(abs(n)).
-  const r = Math.floor(Math.abs(n))
-
-  // 2. If n < 0, then return -1 × r.
-  if (n < 0) {
-    return -1 * r
-  }
-
-  // 3. Otherwise, return r.
-  return r
-}
-
-// https://webidl.spec.whatwg.org/#es-sequence
-webidl.sequenceConverter = function (converter) {
-  return (V) => {
-    // 1. If Type(V) is not Object, throw a TypeError.
-    if (webidl.util.Type(V) !== 'Object') {
-      throw webidl.errors.exception({
-        header: 'Sequence',
-        message: `Value of type ${webidl.util.Type(V)} is not an Object.`
-      })
-    }
-
-    // 2. Let method be ? GetMethod(V, @@iterator).
-    /** @type {Generator} */
-    const method = V?.[Symbol.iterator]?.()
-    const seq = []
-
-    // 3. If method is undefined, throw a TypeError.
-    if (
-      method === undefined ||
-      typeof method.next !== 'function'
-    ) {
-      throw webidl.errors.exception({
-        header: 'Sequence',
-        message: 'Object is not an iterator.'
-      })
-    }
-
-    // https://webidl.spec.whatwg.org/#create-sequence-from-iterable
-    while (true) {
-      const { done, value } = method.next()
-
-      if (done) {
-        break
-      }
-
-      seq.push(converter(value))
-    }
-
-    return seq
-  }
-}
-
-// https://webidl.spec.whatwg.org/#es-to-record
-webidl.recordConverter = function (keyConverter, valueConverter) {
-  return (O) => {
-    // 1. If Type(O) is not Object, throw a TypeError.
-    if (webidl.util.Type(O) !== 'Object') {
-      throw webidl.errors.exception({
-        header: 'Record',
-        message: `Value of type ${webidl.util.Type(O)} is not an Object.`
-      })
-    }
-
-    // 2. Let result be a new empty instance of record<K, V>.
-    const result = {}
-
-    if (!types.isProxy(O)) {
-      // Object.keys only returns enumerable properties
-      const keys = Object.keys(O)
-
-      for (const key of keys) {
-        // 1. Let typedKey be key converted to an IDL value of type K.
-        const typedKey = keyConverter(key)
-
-        // 2. Let value be ? Get(O, key).
-        // 3. Let typedValue be value converted to an IDL value of type V.
-        const typedValue = valueConverter(O[key])
-
-        // 4. Set result[typedKey] to typedValue.
-        result[typedKey] = typedValue
-      }
-
-      // 5. Return result.
-      return result
-    }
-
-    // 3. Let keys be ? O.[[OwnPropertyKeys]]().
-    const keys = Reflect.ownKeys(O)
-
-    // 4. For each key of keys.
-    for (const key of keys) {
-      // 1. Let desc be ? O.[[GetOwnProperty]](key).
-      const desc = Reflect.getOwnPropertyDescriptor(O, key)
-
-      // 2. If desc is not undefined and desc.[[Enumerable]] is true:
-      if (desc?.enumerable) {
-        // 1. Let typedKey be key converted to an IDL value of type K.
-        const typedKey = keyConverter(key)
-
-        // 2. Let value be ? Get(O, key).
-        // 3. Let typedValue be value converted to an IDL value of type V.
-        const typedValue = valueConverter(O[key])
-
-        // 4. Set result[typedKey] to typedValue.
-        result[typedKey] = typedValue
-      }
-    }
-
-    // 5. Return result.
-    return result
-  }
-}
-
-webidl.interfaceConverter = function (i) {
-  return (V, opts = {}) => {
-    if (opts.strict !== false && !(V instanceof i)) {
-      throw webidl.errors.exception({
-        header: i.name,
-        message: `Expected ${V} to be an instance of ${i.name}.`
-      })
-    }
-
-    return V
-  }
-}
-
-webidl.dictionaryConverter = function (converters) {
-  return (dictionary) => {
-    const type = webidl.util.Type(dictionary)
-    const dict = {}
-
-    if (type === 'Null' || type === 'Undefined') {
-      return dict
-    } else if (type !== 'Object') {
-      throw webidl.errors.exception({
-        header: 'Dictionary',
-        message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`
-      })
-    }
-
-    for (const options of converters) {
-      const { key, defaultValue, required, converter } = options
-
-      if (required === true) {
-        if (!hasOwn(dictionary, key)) {
-          throw webidl.errors.exception({
-            header: 'Dictionary',
-            message: `Missing required key "${key}".`
-          })
-        }
-      }
-
-      let value = dictionary[key]
-      const hasDefault = hasOwn(options, 'defaultValue')
-
-      // Only use defaultValue if value is undefined and
-      // a defaultValue options was provided.
-      if (hasDefault && value !== null) {
-        value = value ?? defaultValue
-      }
-
-      // A key can be optional and have no default value.
-      // When this happens, do not perform a conversion,
-      // and do not assign the key a value.
-      if (required || hasDefault || value !== undefined) {
-        value = converter(value)
-
-        if (
-          options.allowedValues &&
-          !options.allowedValues.includes(value)
-        ) {
-          throw webidl.errors.exception({
-            header: 'Dictionary',
-            message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.`
-          })
-        }
-
-        dict[key] = value
-      }
-    }
-
-    return dict
-  }
-}
-
-webidl.nullableConverter = function (converter) {
-  return (V) => {
-    if (V === null) {
-      return V
-    }
-
-    return converter(V)
-  }
-}
-
-// https://webidl.spec.whatwg.org/#es-DOMString
-webidl.converters.DOMString = function (V, opts = {}) {
-  // 1. If V is null and the conversion is to an IDL type
-  //    associated with the [LegacyNullToEmptyString]
-  //    extended attribute, then return the DOMString value
-  //    that represents the empty string.
-  if (V === null && opts.legacyNullToEmptyString) {
-    return ''
-  }
-
-  // 2. Let x be ? ToString(V).
-  if (typeof V === 'symbol') {
-    throw new TypeError('Could not convert argument of type symbol to string.')
-  }
-
-  // 3. Return the IDL DOMString value that represents the
-  //    same sequence of code units as the one the
-  //    ECMAScript String value x represents.
-  return String(V)
-}
-
-// https://webidl.spec.whatwg.org/#es-ByteString
-webidl.converters.ByteString = function (V) {
-  // 1. Let x be ? ToString(V).
-  // Note: DOMString converter perform ? ToString(V)
-  const x = webidl.converters.DOMString(V)
-
-  // 2. If the value of any element of x is greater than
-  //    255, then throw a TypeError.
-  for (let index = 0; index < x.length; index++) {
-    if (x.charCodeAt(index) > 255) {
-      throw new TypeError(
-        'Cannot convert argument to a ByteString because the character at ' +
-        `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`
-      )
-    }
-  }
-
-  // 3. Return an IDL ByteString value whose length is the
-  //    length of x, and where the value of each element is
-  //    the value of the corresponding element of x.
-  return x
-}
-
-// https://webidl.spec.whatwg.org/#es-USVString
-webidl.converters.USVString = toUSVString
-
-// https://webidl.spec.whatwg.org/#es-boolean
-webidl.converters.boolean = function (V) {
-  // 1. Let x be the result of computing ToBoolean(V).
-  const x = Boolean(V)
-
-  // 2. Return the IDL boolean value that is the one that represents
-  //    the same truth value as the ECMAScript Boolean value x.
-  return x
-}
-
-// https://webidl.spec.whatwg.org/#es-any
-webidl.converters.any = function (V) {
-  return V
-}
-
-// https://webidl.spec.whatwg.org/#es-long-long
-webidl.converters['long long'] = function (V) {
-  // 1. Let x be ? ConvertToInt(V, 64, "signed").
-  const x = webidl.util.ConvertToInt(V, 64, 'signed')
-
-  // 2. Return the IDL long long value that represents
-  //    the same numeric value as x.
-  return x
-}
-
-// https://webidl.spec.whatwg.org/#es-unsigned-long-long
-webidl.converters['unsigned long long'] = function (V) {
-  // 1. Let x be ? ConvertToInt(V, 64, "unsigned").
-  const x = webidl.util.ConvertToInt(V, 64, 'unsigned')
-
-  // 2. Return the IDL unsigned long long value that
-  //    represents the same numeric value as x.
-  return x
-}
-
-// https://webidl.spec.whatwg.org/#es-unsigned-long
-webidl.converters['unsigned long'] = function (V) {
-  // 1. Let x be ? ConvertToInt(V, 32, "unsigned").
-  const x = webidl.util.ConvertToInt(V, 32, 'unsigned')
-
-  // 2. Return the IDL unsigned long value that
-  //    represents the same numeric value as x.
-  return x
-}
-
-// https://webidl.spec.whatwg.org/#es-unsigned-short
-webidl.converters['unsigned short'] = function (V, opts) {
-  // 1. Let x be ? ConvertToInt(V, 16, "unsigned").
-  const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts)
-
-  // 2. Return the IDL unsigned short value that represents
-  //    the same numeric value as x.
-  return x
-}
-
-// https://webidl.spec.whatwg.org/#idl-ArrayBuffer
-webidl.converters.ArrayBuffer = function (V, opts = {}) {
-  // 1. If Type(V) is not Object, or V does not have an
-  //    [[ArrayBufferData]] internal slot, then throw a
-  //    TypeError.
-  // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances
-  // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances
-  if (
-    webidl.util.Type(V) !== 'Object' ||
-    !types.isAnyArrayBuffer(V)
-  ) {
-    throw webidl.errors.conversionFailed({
-      prefix: `${V}`,
-      argument: `${V}`,
-      types: ['ArrayBuffer']
-    })
-  }
-
-  // 2. If the conversion is not to an IDL type associated
-  //    with the [AllowShared] extended attribute, and
-  //    IsSharedArrayBuffer(V) is true, then throw a
-  //    TypeError.
-  if (opts.allowShared === false && types.isSharedArrayBuffer(V)) {
-    throw webidl.errors.exception({
-      header: 'ArrayBuffer',
-      message: 'SharedArrayBuffer is not allowed.'
-    })
-  }
-
-  // 3. If the conversion is not to an IDL type associated
-  //    with the [AllowResizable] extended attribute, and
-  //    IsResizableArrayBuffer(V) is true, then throw a
-  //    TypeError.
-  // Note: resizable ArrayBuffers are currently a proposal.
-
-  // 4. Return the IDL ArrayBuffer value that is a
-  //    reference to the same object as V.
-  return V
-}
-
-webidl.converters.TypedArray = function (V, T, opts = {}) {
-  // 1. Let T be the IDL type V is being converted to.
-
-  // 2. If Type(V) is not Object, or V does not have a
-  //    [[TypedArrayName]] internal slot with a value
-  //    equal to T’s name, then throw a TypeError.
-  if (
-    webidl.util.Type(V) !== 'Object' ||
-    !types.isTypedArray(V) ||
-    V.constructor.name !== T.name
-  ) {
-    throw webidl.errors.conversionFailed({
-      prefix: `${T.name}`,
-      argument: `${V}`,
-      types: [T.name]
-    })
-  }
-
-  // 3. If the conversion is not to an IDL type associated
-  //    with the [AllowShared] extended attribute, and
-  //    IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is
-  //    true, then throw a TypeError.
-  if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
-    throw webidl.errors.exception({
-      header: 'ArrayBuffer',
-      message: 'SharedArrayBuffer is not allowed.'
-    })
-  }
-
-  // 4. If the conversion is not to an IDL type associated
-  //    with the [AllowResizable] extended attribute, and
-  //    IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is
-  //    true, then throw a TypeError.
-  // Note: resizable array buffers are currently a proposal
-
-  // 5. Return the IDL value of type T that is a reference
-  //    to the same object as V.
-  return V
-}
-
-webidl.converters.DataView = function (V, opts = {}) {
-  // 1. If Type(V) is not Object, or V does not have a
-  //    [[DataView]] internal slot, then throw a TypeError.
-  if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) {
-    throw webidl.errors.exception({
-      header: 'DataView',
-      message: 'Object is not a DataView.'
-    })
-  }
-
-  // 2. If the conversion is not to an IDL type associated
-  //    with the [AllowShared] extended attribute, and
-  //    IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true,
-  //    then throw a TypeError.
-  if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
-    throw webidl.errors.exception({
-      header: 'ArrayBuffer',
-      message: 'SharedArrayBuffer is not allowed.'
-    })
-  }
-
-  // 3. If the conversion is not to an IDL type associated
-  //    with the [AllowResizable] extended attribute, and
-  //    IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is
-  //    true, then throw a TypeError.
-  // Note: resizable ArrayBuffers are currently a proposal
-
-  // 4. Return the IDL DataView value that is a reference
-  //    to the same object as V.
-  return V
-}
-
-// https://webidl.spec.whatwg.org/#BufferSource
-webidl.converters.BufferSource = function (V, opts = {}) {
-  if (types.isAnyArrayBuffer(V)) {
-    return webidl.converters.ArrayBuffer(V, opts)
-  }
-
-  if (types.isTypedArray(V)) {
-    return webidl.converters.TypedArray(V, V.constructor)
-  }
-
-  if (types.isDataView(V)) {
-    return webidl.converters.DataView(V, opts)
-  }
-
-  throw new TypeError(`Could not convert ${V} to a BufferSource.`)
-}
-
-webidl.converters['sequence<ByteString>'] = webidl.sequenceConverter(
-  webidl.converters.ByteString
-)
-
-webidl.converters['sequence<sequence<ByteString>>'] = webidl.sequenceConverter(
-  webidl.converters['sequence<ByteString>']
-)
-
-webidl.converters['record<ByteString, ByteString>'] = webidl.recordConverter(
-  webidl.converters.ByteString,
-  webidl.converters.ByteString
-)
-
-module.exports = {
-  webidl
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/encoding.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/encoding.js
deleted file mode 100644
index 1d1d2b6..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/encoding.js
+++ /dev/null
@@ -1,290 +0,0 @@
-'use strict'
-
-/**
- * @see https://encoding.spec.whatwg.org/#concept-encoding-get
- * @param {string|undefined} label
- */
-function getEncoding (label) {
-  if (!label) {
-    return 'failure'
-  }
-
-  // 1. Remove any leading and trailing ASCII whitespace from label.
-  // 2. If label is an ASCII case-insensitive match for any of the
-  //    labels listed in the table below, then return the
-  //    corresponding encoding; otherwise return failure.
-  switch (label.trim().toLowerCase()) {
-    case 'unicode-1-1-utf-8':
-    case 'unicode11utf8':
-    case 'unicode20utf8':
-    case 'utf-8':
-    case 'utf8':
-    case 'x-unicode20utf8':
-      return 'UTF-8'
-    case '866':
-    case 'cp866':
-    case 'csibm866':
-    case 'ibm866':
-      return 'IBM866'
-    case 'csisolatin2':
-    case 'iso-8859-2':
-    case 'iso-ir-101':
-    case 'iso8859-2':
-    case 'iso88592':
-    case 'iso_8859-2':
-    case 'iso_8859-2:1987':
-    case 'l2':
-    case 'latin2':
-      return 'ISO-8859-2'
-    case 'csisolatin3':
-    case 'iso-8859-3':
-    case 'iso-ir-109':
-    case 'iso8859-3':
-    case 'iso88593':
-    case 'iso_8859-3':
-    case 'iso_8859-3:1988':
-    case 'l3':
-    case 'latin3':
-      return 'ISO-8859-3'
-    case 'csisolatin4':
-    case 'iso-8859-4':
-    case 'iso-ir-110':
-    case 'iso8859-4':
-    case 'iso88594':
-    case 'iso_8859-4':
-    case 'iso_8859-4:1988':
-    case 'l4':
-    case 'latin4':
-      return 'ISO-8859-4'
-    case 'csisolatincyrillic':
-    case 'cyrillic':
-    case 'iso-8859-5':
-    case 'iso-ir-144':
-    case 'iso8859-5':
-    case 'iso88595':
-    case 'iso_8859-5':
-    case 'iso_8859-5:1988':
-      return 'ISO-8859-5'
-    case 'arabic':
-    case 'asmo-708':
-    case 'csiso88596e':
-    case 'csiso88596i':
-    case 'csisolatinarabic':
-    case 'ecma-114':
-    case 'iso-8859-6':
-    case 'iso-8859-6-e':
-    case 'iso-8859-6-i':
-    case 'iso-ir-127':
-    case 'iso8859-6':
-    case 'iso88596':
-    case 'iso_8859-6':
-    case 'iso_8859-6:1987':
-      return 'ISO-8859-6'
-    case 'csisolatingreek':
-    case 'ecma-118':
-    case 'elot_928':
-    case 'greek':
-    case 'greek8':
-    case 'iso-8859-7':
-    case 'iso-ir-126':
-    case 'iso8859-7':
-    case 'iso88597':
-    case 'iso_8859-7':
-    case 'iso_8859-7:1987':
-    case 'sun_eu_greek':
-      return 'ISO-8859-7'
-    case 'csiso88598e':
-    case 'csisolatinhebrew':
-    case 'hebrew':
-    case 'iso-8859-8':
-    case 'iso-8859-8-e':
-    case 'iso-ir-138':
-    case 'iso8859-8':
-    case 'iso88598':
-    case 'iso_8859-8':
-    case 'iso_8859-8:1988':
-    case 'visual':
-      return 'ISO-8859-8'
-    case 'csiso88598i':
-    case 'iso-8859-8-i':
-    case 'logical':
-      return 'ISO-8859-8-I'
-    case 'csisolatin6':
-    case 'iso-8859-10':
-    case 'iso-ir-157':
-    case 'iso8859-10':
-    case 'iso885910':
-    case 'l6':
-    case 'latin6':
-      return 'ISO-8859-10'
-    case 'iso-8859-13':
-    case 'iso8859-13':
-    case 'iso885913':
-      return 'ISO-8859-13'
-    case 'iso-8859-14':
-    case 'iso8859-14':
-    case 'iso885914':
-      return 'ISO-8859-14'
-    case 'csisolatin9':
-    case 'iso-8859-15':
-    case 'iso8859-15':
-    case 'iso885915':
-    case 'iso_8859-15':
-    case 'l9':
-      return 'ISO-8859-15'
-    case 'iso-8859-16':
-      return 'ISO-8859-16'
-    case 'cskoi8r':
-    case 'koi':
-    case 'koi8':
-    case 'koi8-r':
-    case 'koi8_r':
-      return 'KOI8-R'
-    case 'koi8-ru':
-    case 'koi8-u':
-      return 'KOI8-U'
-    case 'csmacintosh':
-    case 'mac':
-    case 'macintosh':
-    case 'x-mac-roman':
-      return 'macintosh'
-    case 'iso-8859-11':
-    case 'iso8859-11':
-    case 'iso885911':
-    case 'tis-620':
-    case 'windows-874':
-      return 'windows-874'
-    case 'cp1250':
-    case 'windows-1250':
-    case 'x-cp1250':
-      return 'windows-1250'
-    case 'cp1251':
-    case 'windows-1251':
-    case 'x-cp1251':
-      return 'windows-1251'
-    case 'ansi_x3.4-1968':
-    case 'ascii':
-    case 'cp1252':
-    case 'cp819':
-    case 'csisolatin1':
-    case 'ibm819':
-    case 'iso-8859-1':
-    case 'iso-ir-100':
-    case 'iso8859-1':
-    case 'iso88591':
-    case 'iso_8859-1':
-    case 'iso_8859-1:1987':
-    case 'l1':
-    case 'latin1':
-    case 'us-ascii':
-    case 'windows-1252':
-    case 'x-cp1252':
-      return 'windows-1252'
-    case 'cp1253':
-    case 'windows-1253':
-    case 'x-cp1253':
-      return 'windows-1253'
-    case 'cp1254':
-    case 'csisolatin5':
-    case 'iso-8859-9':
-    case 'iso-ir-148':
-    case 'iso8859-9':
-    case 'iso88599':
-    case 'iso_8859-9':
-    case 'iso_8859-9:1989':
-    case 'l5':
-    case 'latin5':
-    case 'windows-1254':
-    case 'x-cp1254':
-      return 'windows-1254'
-    case 'cp1255':
-    case 'windows-1255':
-    case 'x-cp1255':
-      return 'windows-1255'
-    case 'cp1256':
-    case 'windows-1256':
-    case 'x-cp1256':
-      return 'windows-1256'
-    case 'cp1257':
-    case 'windows-1257':
-    case 'x-cp1257':
-      return 'windows-1257'
-    case 'cp1258':
-    case 'windows-1258':
-    case 'x-cp1258':
-      return 'windows-1258'
-    case 'x-mac-cyrillic':
-    case 'x-mac-ukrainian':
-      return 'x-mac-cyrillic'
-    case 'chinese':
-    case 'csgb2312':
-    case 'csiso58gb231280':
-    case 'gb2312':
-    case 'gb_2312':
-    case 'gb_2312-80':
-    case 'gbk':
-    case 'iso-ir-58':
-    case 'x-gbk':
-      return 'GBK'
-    case 'gb18030':
-      return 'gb18030'
-    case 'big5':
-    case 'big5-hkscs':
-    case 'cn-big5':
-    case 'csbig5':
-    case 'x-x-big5':
-      return 'Big5'
-    case 'cseucpkdfmtjapanese':
-    case 'euc-jp':
-    case 'x-euc-jp':
-      return 'EUC-JP'
-    case 'csiso2022jp':
-    case 'iso-2022-jp':
-      return 'ISO-2022-JP'
-    case 'csshiftjis':
-    case 'ms932':
-    case 'ms_kanji':
-    case 'shift-jis':
-    case 'shift_jis':
-    case 'sjis':
-    case 'windows-31j':
-    case 'x-sjis':
-      return 'Shift_JIS'
-    case 'cseuckr':
-    case 'csksc56011987':
-    case 'euc-kr':
-    case 'iso-ir-149':
-    case 'korean':
-    case 'ks_c_5601-1987':
-    case 'ks_c_5601-1989':
-    case 'ksc5601':
-    case 'ksc_5601':
-    case 'windows-949':
-      return 'EUC-KR'
-    case 'csiso2022kr':
-    case 'hz-gb-2312':
-    case 'iso-2022-cn':
-    case 'iso-2022-cn-ext':
-    case 'iso-2022-kr':
-    case 'replacement':
-      return 'replacement'
-    case 'unicodefffe':
-    case 'utf-16be':
-      return 'UTF-16BE'
-    case 'csunicode':
-    case 'iso-10646-ucs-2':
-    case 'ucs-2':
-    case 'unicode':
-    case 'unicodefeff':
-    case 'utf-16':
-    case 'utf-16le':
-      return 'UTF-16LE'
-    case 'x-user-defined':
-      return 'x-user-defined'
-    default: return 'failure'
-  }
-}
-
-module.exports = {
-  getEncoding
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/filereader.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/filereader.js
deleted file mode 100644
index cd36a22..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/filereader.js
+++ /dev/null
@@ -1,344 +0,0 @@
-'use strict'
-
-const {
-  staticPropertyDescriptors,
-  readOperation,
-  fireAProgressEvent
-} = require('./util')
-const {
-  kState,
-  kError,
-  kResult,
-  kEvents,
-  kAborted
-} = require('./symbols')
-const { webidl } = require('../fetch/webidl')
-const { kEnumerableProperty } = require('../core/util')
-
-class FileReader extends EventTarget {
-  constructor () {
-    super()
-
-    this[kState] = 'empty'
-    this[kResult] = null
-    this[kError] = null
-    this[kEvents] = {
-      loadend: null,
-      error: null,
-      abort: null,
-      load: null,
-      progress: null,
-      loadstart: null
-    }
-  }
-
-  /**
-   * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer
-   * @param {import('buffer').Blob} blob
-   */
-  readAsArrayBuffer (blob) {
-    webidl.brandCheck(this, FileReader)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' })
-
-    blob = webidl.converters.Blob(blob, { strict: false })
-
-    // The readAsArrayBuffer(blob) method, when invoked,
-    // must initiate a read operation for blob with ArrayBuffer.
-    readOperation(this, blob, 'ArrayBuffer')
-  }
-
-  /**
-   * @see https://w3c.github.io/FileAPI/#readAsBinaryString
-   * @param {import('buffer').Blob} blob
-   */
-  readAsBinaryString (blob) {
-    webidl.brandCheck(this, FileReader)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' })
-
-    blob = webidl.converters.Blob(blob, { strict: false })
-
-    // The readAsBinaryString(blob) method, when invoked,
-    // must initiate a read operation for blob with BinaryString.
-    readOperation(this, blob, 'BinaryString')
-  }
-
-  /**
-   * @see https://w3c.github.io/FileAPI/#readAsDataText
-   * @param {import('buffer').Blob} blob
-   * @param {string?} encoding
-   */
-  readAsText (blob, encoding = undefined) {
-    webidl.brandCheck(this, FileReader)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' })
-
-    blob = webidl.converters.Blob(blob, { strict: false })
-
-    if (encoding !== undefined) {
-      encoding = webidl.converters.DOMString(encoding)
-    }
-
-    // The readAsText(blob, encoding) method, when invoked,
-    // must initiate a read operation for blob with Text and encoding.
-    readOperation(this, blob, 'Text', encoding)
-  }
-
-  /**
-   * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL
-   * @param {import('buffer').Blob} blob
-   */
-  readAsDataURL (blob) {
-    webidl.brandCheck(this, FileReader)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' })
-
-    blob = webidl.converters.Blob(blob, { strict: false })
-
-    // The readAsDataURL(blob) method, when invoked, must
-    // initiate a read operation for blob with DataURL.
-    readOperation(this, blob, 'DataURL')
-  }
-
-  /**
-   * @see https://w3c.github.io/FileAPI/#dfn-abort
-   */
-  abort () {
-    // 1. If this's state is "empty" or if this's state is
-    //    "done" set this's result to null and terminate
-    //    this algorithm.
-    if (this[kState] === 'empty' || this[kState] === 'done') {
-      this[kResult] = null
-      return
-    }
-
-    // 2. If this's state is "loading" set this's state to
-    //    "done" and set this's result to null.
-    if (this[kState] === 'loading') {
-      this[kState] = 'done'
-      this[kResult] = null
-    }
-
-    // 3. If there are any tasks from this on the file reading
-    //    task source in an affiliated task queue, then remove
-    //    those tasks from that task queue.
-    this[kAborted] = true
-
-    // 4. Terminate the algorithm for the read method being processed.
-    // TODO
-
-    // 5. Fire a progress event called abort at this.
-    fireAProgressEvent('abort', this)
-
-    // 6. If this's state is not "loading", fire a progress
-    //    event called loadend at this.
-    if (this[kState] !== 'loading') {
-      fireAProgressEvent('loadend', this)
-    }
-  }
-
-  /**
-   * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate
-   */
-  get readyState () {
-    webidl.brandCheck(this, FileReader)
-
-    switch (this[kState]) {
-      case 'empty': return this.EMPTY
-      case 'loading': return this.LOADING
-      case 'done': return this.DONE
-    }
-  }
-
-  /**
-   * @see https://w3c.github.io/FileAPI/#dom-filereader-result
-   */
-  get result () {
-    webidl.brandCheck(this, FileReader)
-
-    // The result attribute’s getter, when invoked, must return
-    // this's result.
-    return this[kResult]
-  }
-
-  /**
-   * @see https://w3c.github.io/FileAPI/#dom-filereader-error
-   */
-  get error () {
-    webidl.brandCheck(this, FileReader)
-
-    // The error attribute’s getter, when invoked, must return
-    // this's error.
-    return this[kError]
-  }
-
-  get onloadend () {
-    webidl.brandCheck(this, FileReader)
-
-    return this[kEvents].loadend
-  }
-
-  set onloadend (fn) {
-    webidl.brandCheck(this, FileReader)
-
-    if (this[kEvents].loadend) {
-      this.removeEventListener('loadend', this[kEvents].loadend)
-    }
-
-    if (typeof fn === 'function') {
-      this[kEvents].loadend = fn
-      this.addEventListener('loadend', fn)
-    } else {
-      this[kEvents].loadend = null
-    }
-  }
-
-  get onerror () {
-    webidl.brandCheck(this, FileReader)
-
-    return this[kEvents].error
-  }
-
-  set onerror (fn) {
-    webidl.brandCheck(this, FileReader)
-
-    if (this[kEvents].error) {
-      this.removeEventListener('error', this[kEvents].error)
-    }
-
-    if (typeof fn === 'function') {
-      this[kEvents].error = fn
-      this.addEventListener('error', fn)
-    } else {
-      this[kEvents].error = null
-    }
-  }
-
-  get onloadstart () {
-    webidl.brandCheck(this, FileReader)
-
-    return this[kEvents].loadstart
-  }
-
-  set onloadstart (fn) {
-    webidl.brandCheck(this, FileReader)
-
-    if (this[kEvents].loadstart) {
-      this.removeEventListener('loadstart', this[kEvents].loadstart)
-    }
-
-    if (typeof fn === 'function') {
-      this[kEvents].loadstart = fn
-      this.addEventListener('loadstart', fn)
-    } else {
-      this[kEvents].loadstart = null
-    }
-  }
-
-  get onprogress () {
-    webidl.brandCheck(this, FileReader)
-
-    return this[kEvents].progress
-  }
-
-  set onprogress (fn) {
-    webidl.brandCheck(this, FileReader)
-
-    if (this[kEvents].progress) {
-      this.removeEventListener('progress', this[kEvents].progress)
-    }
-
-    if (typeof fn === 'function') {
-      this[kEvents].progress = fn
-      this.addEventListener('progress', fn)
-    } else {
-      this[kEvents].progress = null
-    }
-  }
-
-  get onload () {
-    webidl.brandCheck(this, FileReader)
-
-    return this[kEvents].load
-  }
-
-  set onload (fn) {
-    webidl.brandCheck(this, FileReader)
-
-    if (this[kEvents].load) {
-      this.removeEventListener('load', this[kEvents].load)
-    }
-
-    if (typeof fn === 'function') {
-      this[kEvents].load = fn
-      this.addEventListener('load', fn)
-    } else {
-      this[kEvents].load = null
-    }
-  }
-
-  get onabort () {
-    webidl.brandCheck(this, FileReader)
-
-    return this[kEvents].abort
-  }
-
-  set onabort (fn) {
-    webidl.brandCheck(this, FileReader)
-
-    if (this[kEvents].abort) {
-      this.removeEventListener('abort', this[kEvents].abort)
-    }
-
-    if (typeof fn === 'function') {
-      this[kEvents].abort = fn
-      this.addEventListener('abort', fn)
-    } else {
-      this[kEvents].abort = null
-    }
-  }
-}
-
-// https://w3c.github.io/FileAPI/#dom-filereader-empty
-FileReader.EMPTY = FileReader.prototype.EMPTY = 0
-// https://w3c.github.io/FileAPI/#dom-filereader-loading
-FileReader.LOADING = FileReader.prototype.LOADING = 1
-// https://w3c.github.io/FileAPI/#dom-filereader-done
-FileReader.DONE = FileReader.prototype.DONE = 2
-
-Object.defineProperties(FileReader.prototype, {
-  EMPTY: staticPropertyDescriptors,
-  LOADING: staticPropertyDescriptors,
-  DONE: staticPropertyDescriptors,
-  readAsArrayBuffer: kEnumerableProperty,
-  readAsBinaryString: kEnumerableProperty,
-  readAsText: kEnumerableProperty,
-  readAsDataURL: kEnumerableProperty,
-  abort: kEnumerableProperty,
-  readyState: kEnumerableProperty,
-  result: kEnumerableProperty,
-  error: kEnumerableProperty,
-  onloadstart: kEnumerableProperty,
-  onprogress: kEnumerableProperty,
-  onload: kEnumerableProperty,
-  onabort: kEnumerableProperty,
-  onerror: kEnumerableProperty,
-  onloadend: kEnumerableProperty,
-  [Symbol.toStringTag]: {
-    value: 'FileReader',
-    writable: false,
-    enumerable: false,
-    configurable: true
-  }
-})
-
-Object.defineProperties(FileReader, {
-  EMPTY: staticPropertyDescriptors,
-  LOADING: staticPropertyDescriptors,
-  DONE: staticPropertyDescriptors
-})
-
-module.exports = {
-  FileReader
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/progressevent.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/progressevent.js
deleted file mode 100644
index 778cf22..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/progressevent.js
+++ /dev/null
@@ -1,78 +0,0 @@
-'use strict'
-
-const { webidl } = require('../fetch/webidl')
-
-const kState = Symbol('ProgressEvent state')
-
-/**
- * @see https://xhr.spec.whatwg.org/#progressevent
- */
-class ProgressEvent extends Event {
-  constructor (type, eventInitDict = {}) {
-    type = webidl.converters.DOMString(type)
-    eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {})
-
-    super(type, eventInitDict)
-
-    this[kState] = {
-      lengthComputable: eventInitDict.lengthComputable,
-      loaded: eventInitDict.loaded,
-      total: eventInitDict.total
-    }
-  }
-
-  get lengthComputable () {
-    webidl.brandCheck(this, ProgressEvent)
-
-    return this[kState].lengthComputable
-  }
-
-  get loaded () {
-    webidl.brandCheck(this, ProgressEvent)
-
-    return this[kState].loaded
-  }
-
-  get total () {
-    webidl.brandCheck(this, ProgressEvent)
-
-    return this[kState].total
-  }
-}
-
-webidl.converters.ProgressEventInit = webidl.dictionaryConverter([
-  {
-    key: 'lengthComputable',
-    converter: webidl.converters.boolean,
-    defaultValue: false
-  },
-  {
-    key: 'loaded',
-    converter: webidl.converters['unsigned long long'],
-    defaultValue: 0
-  },
-  {
-    key: 'total',
-    converter: webidl.converters['unsigned long long'],
-    defaultValue: 0
-  },
-  {
-    key: 'bubbles',
-    converter: webidl.converters.boolean,
-    defaultValue: false
-  },
-  {
-    key: 'cancelable',
-    converter: webidl.converters.boolean,
-    defaultValue: false
-  },
-  {
-    key: 'composed',
-    converter: webidl.converters.boolean,
-    defaultValue: false
-  }
-])
-
-module.exports = {
-  ProgressEvent
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/symbols.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/symbols.js
deleted file mode 100644
index dd11746..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/symbols.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict'
-
-module.exports = {
-  kState: Symbol('FileReader state'),
-  kResult: Symbol('FileReader result'),
-  kError: Symbol('FileReader error'),
-  kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'),
-  kEvents: Symbol('FileReader events'),
-  kAborted: Symbol('FileReader aborted')
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/util.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/util.js
deleted file mode 100644
index 1d10899..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/fileapi/util.js
+++ /dev/null
@@ -1,392 +0,0 @@
-'use strict'
-
-const {
-  kState,
-  kError,
-  kResult,
-  kAborted,
-  kLastProgressEventFired
-} = require('./symbols')
-const { ProgressEvent } = require('./progressevent')
-const { getEncoding } = require('./encoding')
-const { DOMException } = require('../fetch/constants')
-const { serializeAMimeType, parseMIMEType } = require('../fetch/dataURL')
-const { types } = require('util')
-const { StringDecoder } = require('string_decoder')
-const { btoa } = require('buffer')
-
-/** @type {PropertyDescriptor} */
-const staticPropertyDescriptors = {
-  enumerable: true,
-  writable: false,
-  configurable: false
-}
-
-/**
- * @see https://w3c.github.io/FileAPI/#readOperation
- * @param {import('./filereader').FileReader} fr
- * @param {import('buffer').Blob} blob
- * @param {string} type
- * @param {string?} encodingName
- */
-function readOperation (fr, blob, type, encodingName) {
-  // 1. If fr’s state is "loading", throw an InvalidStateError
-  //    DOMException.
-  if (fr[kState] === 'loading') {
-    throw new DOMException('Invalid state', 'InvalidStateError')
-  }
-
-  // 2. Set fr’s state to "loading".
-  fr[kState] = 'loading'
-
-  // 3. Set fr’s result to null.
-  fr[kResult] = null
-
-  // 4. Set fr’s error to null.
-  fr[kError] = null
-
-  // 5. Let stream be the result of calling get stream on blob.
-  /** @type {import('stream/web').ReadableStream} */
-  const stream = blob.stream()
-
-  // 6. Let reader be the result of getting a reader from stream.
-  const reader = stream.getReader()
-
-  // 7. Let bytes be an empty byte sequence.
-  /** @type {Uint8Array[]} */
-  const bytes = []
-
-  // 8. Let chunkPromise be the result of reading a chunk from
-  //    stream with reader.
-  let chunkPromise = reader.read()
-
-  // 9. Let isFirstChunk be true.
-  let isFirstChunk = true
-
-  // 10. In parallel, while true:
-  // Note: "In parallel" just means non-blocking
-  // Note 2: readOperation itself cannot be async as double
-  // reading the body would then reject the promise, instead
-  // of throwing an error.
-  ;(async () => {
-    while (!fr[kAborted]) {
-      // 1. Wait for chunkPromise to be fulfilled or rejected.
-      try {
-        const { done, value } = await chunkPromise
-
-        // 2. If chunkPromise is fulfilled, and isFirstChunk is
-        //    true, queue a task to fire a progress event called
-        //    loadstart at fr.
-        if (isFirstChunk && !fr[kAborted]) {
-          queueMicrotask(() => {
-            fireAProgressEvent('loadstart', fr)
-          })
-        }
-
-        // 3. Set isFirstChunk to false.
-        isFirstChunk = false
-
-        // 4. If chunkPromise is fulfilled with an object whose
-        //    done property is false and whose value property is
-        //    a Uint8Array object, run these steps:
-        if (!done && types.isUint8Array(value)) {
-          // 1. Let bs be the byte sequence represented by the
-          //    Uint8Array object.
-
-          // 2. Append bs to bytes.
-          bytes.push(value)
-
-          // 3. If roughly 50ms have passed since these steps
-          //    were last invoked, queue a task to fire a
-          //    progress event called progress at fr.
-          if (
-            (
-              fr[kLastProgressEventFired] === undefined ||
-              Date.now() - fr[kLastProgressEventFired] >= 50
-            ) &&
-            !fr[kAborted]
-          ) {
-            fr[kLastProgressEventFired] = Date.now()
-            queueMicrotask(() => {
-              fireAProgressEvent('progress', fr)
-            })
-          }
-
-          // 4. Set chunkPromise to the result of reading a
-          //    chunk from stream with reader.
-          chunkPromise = reader.read()
-        } else if (done) {
-          // 5. Otherwise, if chunkPromise is fulfilled with an
-          //    object whose done property is true, queue a task
-          //    to run the following steps and abort this algorithm:
-          queueMicrotask(() => {
-            // 1. Set fr’s state to "done".
-            fr[kState] = 'done'
-
-            // 2. Let result be the result of package data given
-            //    bytes, type, blob’s type, and encodingName.
-            try {
-              const result = packageData(bytes, type, blob.type, encodingName)
-
-              // 4. Else:
-
-              if (fr[kAborted]) {
-                return
-              }
-
-              // 1. Set fr’s result to result.
-              fr[kResult] = result
-
-              // 2. Fire a progress event called load at the fr.
-              fireAProgressEvent('load', fr)
-            } catch (error) {
-              // 3. If package data threw an exception error:
-
-              // 1. Set fr’s error to error.
-              fr[kError] = error
-
-              // 2. Fire a progress event called error at fr.
-              fireAProgressEvent('error', fr)
-            }
-
-            // 5. If fr’s state is not "loading", fire a progress
-            //    event called loadend at the fr.
-            if (fr[kState] !== 'loading') {
-              fireAProgressEvent('loadend', fr)
-            }
-          })
-
-          break
-        }
-      } catch (error) {
-        if (fr[kAborted]) {
-          return
-        }
-
-        // 6. Otherwise, if chunkPromise is rejected with an
-        //    error error, queue a task to run the following
-        //    steps and abort this algorithm:
-        queueMicrotask(() => {
-          // 1. Set fr’s state to "done".
-          fr[kState] = 'done'
-
-          // 2. Set fr’s error to error.
-          fr[kError] = error
-
-          // 3. Fire a progress event called error at fr.
-          fireAProgressEvent('error', fr)
-
-          // 4. If fr’s state is not "loading", fire a progress
-          //    event called loadend at fr.
-          if (fr[kState] !== 'loading') {
-            fireAProgressEvent('loadend', fr)
-          }
-        })
-
-        break
-      }
-    }
-  })()
-}
-
-/**
- * @see https://w3c.github.io/FileAPI/#fire-a-progress-event
- * @see https://dom.spec.whatwg.org/#concept-event-fire
- * @param {string} e The name of the event
- * @param {import('./filereader').FileReader} reader
- */
-function fireAProgressEvent (e, reader) {
-  // The progress event e does not bubble. e.bubbles must be false
-  // The progress event e is NOT cancelable. e.cancelable must be false
-  const event = new ProgressEvent(e, {
-    bubbles: false,
-    cancelable: false
-  })
-
-  reader.dispatchEvent(event)
-}
-
-/**
- * @see https://w3c.github.io/FileAPI/#blob-package-data
- * @param {Uint8Array[]} bytes
- * @param {string} type
- * @param {string?} mimeType
- * @param {string?} encodingName
- */
-function packageData (bytes, type, mimeType, encodingName) {
-  // 1. A Blob has an associated package data algorithm, given
-  //    bytes, a type, a optional mimeType, and a optional
-  //    encodingName, which switches on type and runs the
-  //    associated steps:
-
-  switch (type) {
-    case 'DataURL': {
-      // 1. Return bytes as a DataURL [RFC2397] subject to
-      //    the considerations below:
-      //  * Use mimeType as part of the Data URL if it is
-      //    available in keeping with the Data URL
-      //    specification [RFC2397].
-      //  * If mimeType is not available return a Data URL
-      //    without a media-type. [RFC2397].
-
-      // https://datatracker.ietf.org/doc/html/rfc2397#section-3
-      // dataurl    := "data:" [ mediatype ] [ ";base64" ] "," data
-      // mediatype  := [ type "/" subtype ] *( ";" parameter )
-      // data       := *urlchar
-      // parameter  := attribute "=" value
-      let dataURL = 'data:'
-
-      const parsed = parseMIMEType(mimeType || 'application/octet-stream')
-
-      if (parsed !== 'failure') {
-        dataURL += serializeAMimeType(parsed)
-      }
-
-      dataURL += ';base64,'
-
-      const decoder = new StringDecoder('latin1')
-
-      for (const chunk of bytes) {
-        dataURL += btoa(decoder.write(chunk))
-      }
-
-      dataURL += btoa(decoder.end())
-
-      return dataURL
-    }
-    case 'Text': {
-      // 1. Let encoding be failure
-      let encoding = 'failure'
-
-      // 2. If the encodingName is present, set encoding to the
-      //    result of getting an encoding from encodingName.
-      if (encodingName) {
-        encoding = getEncoding(encodingName)
-      }
-
-      // 3. If encoding is failure, and mimeType is present:
-      if (encoding === 'failure' && mimeType) {
-        // 1. Let type be the result of parse a MIME type
-        //    given mimeType.
-        const type = parseMIMEType(mimeType)
-
-        // 2. If type is not failure, set encoding to the result
-        //    of getting an encoding from type’s parameters["charset"].
-        if (type !== 'failure') {
-          encoding = getEncoding(type.parameters.get('charset'))
-        }
-      }
-
-      // 4. If encoding is failure, then set encoding to UTF-8.
-      if (encoding === 'failure') {
-        encoding = 'UTF-8'
-      }
-
-      // 5. Decode bytes using fallback encoding encoding, and
-      //    return the result.
-      return decode(bytes, encoding)
-    }
-    case 'ArrayBuffer': {
-      // Return a new ArrayBuffer whose contents are bytes.
-      const sequence = combineByteSequences(bytes)
-
-      return sequence.buffer
-    }
-    case 'BinaryString': {
-      // Return bytes as a binary string, in which every byte
-      //  is represented by a code unit of equal value [0..255].
-      let binaryString = ''
-
-      const decoder = new StringDecoder('latin1')
-
-      for (const chunk of bytes) {
-        binaryString += decoder.write(chunk)
-      }
-
-      binaryString += decoder.end()
-
-      return binaryString
-    }
-  }
-}
-
-/**
- * @see https://encoding.spec.whatwg.org/#decode
- * @param {Uint8Array[]} ioQueue
- * @param {string} encoding
- */
-function decode (ioQueue, encoding) {
-  const bytes = combineByteSequences(ioQueue)
-
-  // 1. Let BOMEncoding be the result of BOM sniffing ioQueue.
-  const BOMEncoding = BOMSniffing(bytes)
-
-  let slice = 0
-
-  // 2. If BOMEncoding is non-null:
-  if (BOMEncoding !== null) {
-    // 1. Set encoding to BOMEncoding.
-    encoding = BOMEncoding
-
-    // 2. Read three bytes from ioQueue, if BOMEncoding is
-    //    UTF-8; otherwise read two bytes.
-    //    (Do nothing with those bytes.)
-    slice = BOMEncoding === 'UTF-8' ? 3 : 2
-  }
-
-  // 3. Process a queue with an instance of encoding’s
-  //    decoder, ioQueue, output, and "replacement".
-
-  // 4. Return output.
-
-  const sliced = bytes.slice(slice)
-  return new TextDecoder(encoding).decode(sliced)
-}
-
-/**
- * @see https://encoding.spec.whatwg.org/#bom-sniff
- * @param {Uint8Array} ioQueue
- */
-function BOMSniffing (ioQueue) {
-  // 1. Let BOM be the result of peeking 3 bytes from ioQueue,
-  //    converted to a byte sequence.
-  const [a, b, c] = ioQueue
-
-  // 2. For each of the rows in the table below, starting with
-  //    the first one and going down, if BOM starts with the
-  //    bytes given in the first column, then return the
-  //    encoding given in the cell in the second column of that
-  //    row. Otherwise, return null.
-  if (a === 0xEF && b === 0xBB && c === 0xBF) {
-    return 'UTF-8'
-  } else if (a === 0xFE && b === 0xFF) {
-    return 'UTF-16BE'
-  } else if (a === 0xFF && b === 0xFE) {
-    return 'UTF-16LE'
-  }
-
-  return null
-}
-
-/**
- * @param {Uint8Array[]} sequences
- */
-function combineByteSequences (sequences) {
-  const size = sequences.reduce((a, b) => {
-    return a + b.byteLength
-  }, 0)
-
-  let offset = 0
-
-  return sequences.reduce((a, b) => {
-    a.set(b, offset)
-    offset += b.byteLength
-    return a
-  }, new Uint8Array(size))
-}
-
-module.exports = {
-  staticPropertyDescriptors,
-  readOperation,
-  fireAProgressEvent
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/global.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/global.js
deleted file mode 100644
index 18bfd73..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/global.js
+++ /dev/null
@@ -1,32 +0,0 @@
-'use strict'
-
-// We include a version number for the Dispatcher API. In case of breaking changes,
-// this version number must be increased to avoid conflicts.
-const globalDispatcher = Symbol.for('undici.globalDispatcher.1')
-const { InvalidArgumentError } = require('./core/errors')
-const Agent = require('./agent')
-
-if (getGlobalDispatcher() === undefined) {
-  setGlobalDispatcher(new Agent())
-}
-
-function setGlobalDispatcher (agent) {
-  if (!agent || typeof agent.dispatch !== 'function') {
-    throw new InvalidArgumentError('Argument agent must implement Agent')
-  }
-  Object.defineProperty(globalThis, globalDispatcher, {
-    value: agent,
-    writable: true,
-    enumerable: false,
-    configurable: false
-  })
-}
-
-function getGlobalDispatcher () {
-  return globalThis[globalDispatcher]
-}
-
-module.exports = {
-  setGlobalDispatcher,
-  getGlobalDispatcher
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/handler/DecoratorHandler.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/handler/DecoratorHandler.js
deleted file mode 100644
index 9d70a76..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/handler/DecoratorHandler.js
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict'
-
-module.exports = class DecoratorHandler {
-  constructor (handler) {
-    this.handler = handler
-  }
-
-  onConnect (...args) {
-    return this.handler.onConnect(...args)
-  }
-
-  onError (...args) {
-    return this.handler.onError(...args)
-  }
-
-  onUpgrade (...args) {
-    return this.handler.onUpgrade(...args)
-  }
-
-  onHeaders (...args) {
-    return this.handler.onHeaders(...args)
-  }
-
-  onData (...args) {
-    return this.handler.onData(...args)
-  }
-
-  onComplete (...args) {
-    return this.handler.onComplete(...args)
-  }
-
-  onBodySent (...args) {
-    return this.handler.onBodySent(...args)
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/handler/RedirectHandler.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/handler/RedirectHandler.js
deleted file mode 100644
index baca27e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/handler/RedirectHandler.js
+++ /dev/null
@@ -1,216 +0,0 @@
-'use strict'
-
-const util = require('../core/util')
-const { kBodyUsed } = require('../core/symbols')
-const assert = require('assert')
-const { InvalidArgumentError } = require('../core/errors')
-const EE = require('events')
-
-const redirectableStatusCodes = [300, 301, 302, 303, 307, 308]
-
-const kBody = Symbol('body')
-
-class BodyAsyncIterable {
-  constructor (body) {
-    this[kBody] = body
-    this[kBodyUsed] = false
-  }
-
-  async * [Symbol.asyncIterator] () {
-    assert(!this[kBodyUsed], 'disturbed')
-    this[kBodyUsed] = true
-    yield * this[kBody]
-  }
-}
-
-class RedirectHandler {
-  constructor (dispatch, maxRedirections, opts, handler) {
-    if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {
-      throw new InvalidArgumentError('maxRedirections must be a positive number')
-    }
-
-    util.validateHandler(handler, opts.method, opts.upgrade)
-
-    this.dispatch = dispatch
-    this.location = null
-    this.abort = null
-    this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy
-    this.maxRedirections = maxRedirections
-    this.handler = handler
-    this.history = []
-
-    if (util.isStream(this.opts.body)) {
-      // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp
-      // so that it can be dispatched again?
-      // TODO (fix): Do we need 100-expect support to provide a way to do this properly?
-      if (util.bodyLength(this.opts.body) === 0) {
-        this.opts.body
-          .on('data', function () {
-            assert(false)
-          })
-      }
-
-      if (typeof this.opts.body.readableDidRead !== 'boolean') {
-        this.opts.body[kBodyUsed] = false
-        EE.prototype.on.call(this.opts.body, 'data', function () {
-          this[kBodyUsed] = true
-        })
-      }
-    } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') {
-      // TODO (fix): We can't access ReadableStream internal state
-      // to determine whether or not it has been disturbed. This is just
-      // a workaround.
-      this.opts.body = new BodyAsyncIterable(this.opts.body)
-    } else if (
-      this.opts.body &&
-      typeof this.opts.body !== 'string' &&
-      !ArrayBuffer.isView(this.opts.body) &&
-      util.isIterable(this.opts.body)
-    ) {
-      // TODO: Should we allow re-using iterable if !this.opts.idempotent
-      // or through some other flag?
-      this.opts.body = new BodyAsyncIterable(this.opts.body)
-    }
-  }
-
-  onConnect (abort) {
-    this.abort = abort
-    this.handler.onConnect(abort, { history: this.history })
-  }
-
-  onUpgrade (statusCode, headers, socket) {
-    this.handler.onUpgrade(statusCode, headers, socket)
-  }
-
-  onError (error) {
-    this.handler.onError(error)
-  }
-
-  onHeaders (statusCode, headers, resume, statusText) {
-    this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body)
-      ? null
-      : parseLocation(statusCode, headers)
-
-    if (this.opts.origin) {
-      this.history.push(new URL(this.opts.path, this.opts.origin))
-    }
-
-    if (!this.location) {
-      return this.handler.onHeaders(statusCode, headers, resume, statusText)
-    }
-
-    const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)))
-    const path = search ? `${pathname}${search}` : pathname
-
-    // Remove headers referring to the original URL.
-    // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers.
-    // https://tools.ietf.org/html/rfc7231#section-6.4
-    this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin)
-    this.opts.path = path
-    this.opts.origin = origin
-    this.opts.maxRedirections = 0
-    this.opts.query = null
-
-    // https://tools.ietf.org/html/rfc7231#section-6.4.4
-    // In case of HTTP 303, always replace method to be either HEAD or GET
-    if (statusCode === 303 && this.opts.method !== 'HEAD') {
-      this.opts.method = 'GET'
-      this.opts.body = null
-    }
-  }
-
-  onData (chunk) {
-    if (this.location) {
-      /*
-        https://tools.ietf.org/html/rfc7231#section-6.4
-
-        TLDR: undici always ignores 3xx response bodies.
-
-        Redirection is used to serve the requested resource from another URL, so it is assumes that
-        no body is generated (and thus can be ignored). Even though generating a body is not prohibited.
-
-        For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually
-        (which means it's optional and not mandated) contain just an hyperlink to the value of
-        the Location response header, so the body can be ignored safely.
-
-        For status 300, which is "Multiple Choices", the spec mentions both generating a Location
-        response header AND a response body with the other possible location to follow.
-        Since the spec explicitily chooses not to specify a format for such body and leave it to
-        servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it.
-      */
-    } else {
-      return this.handler.onData(chunk)
-    }
-  }
-
-  onComplete (trailers) {
-    if (this.location) {
-      /*
-        https://tools.ietf.org/html/rfc7231#section-6.4
-
-        TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections
-        and neither are useful if present.
-
-        See comment on onData method above for more detailed informations.
-      */
-
-      this.location = null
-      this.abort = null
-
-      this.dispatch(this.opts, this)
-    } else {
-      this.handler.onComplete(trailers)
-    }
-  }
-
-  onBodySent (chunk) {
-    if (this.handler.onBodySent) {
-      this.handler.onBodySent(chunk)
-    }
-  }
-}
-
-function parseLocation (statusCode, headers) {
-  if (redirectableStatusCodes.indexOf(statusCode) === -1) {
-    return null
-  }
-
-  for (let i = 0; i < headers.length; i += 2) {
-    if (headers[i].toString().toLowerCase() === 'location') {
-      return headers[i + 1]
-    }
-  }
-}
-
-// https://tools.ietf.org/html/rfc7231#section-6.4.4
-function shouldRemoveHeader (header, removeContent, unknownOrigin) {
-  return (
-    (header.length === 4 && header.toString().toLowerCase() === 'host') ||
-    (removeContent && header.toString().toLowerCase().indexOf('content-') === 0) ||
-    (unknownOrigin && header.length === 13 && header.toString().toLowerCase() === 'authorization') ||
-    (unknownOrigin && header.length === 6 && header.toString().toLowerCase() === 'cookie')
-  )
-}
-
-// https://tools.ietf.org/html/rfc7231#section-6.4
-function cleanRequestHeaders (headers, removeContent, unknownOrigin) {
-  const ret = []
-  if (Array.isArray(headers)) {
-    for (let i = 0; i < headers.length; i += 2) {
-      if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {
-        ret.push(headers[i], headers[i + 1])
-      }
-    }
-  } else if (headers && typeof headers === 'object') {
-    for (const key of Object.keys(headers)) {
-      if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {
-        ret.push(key, headers[key])
-      }
-    }
-  } else {
-    assert(headers == null, 'headers must be an object or an array')
-  }
-  return ret
-}
-
-module.exports = RedirectHandler
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/handler/RetryHandler.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/handler/RetryHandler.js
deleted file mode 100644
index 3710447..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/handler/RetryHandler.js
+++ /dev/null
@@ -1,336 +0,0 @@
-const assert = require('assert')
-
-const { kRetryHandlerDefaultRetry } = require('../core/symbols')
-const { RequestRetryError } = require('../core/errors')
-const { isDisturbed, parseHeaders, parseRangeHeader } = require('../core/util')
-
-function calculateRetryAfterHeader (retryAfter) {
-  const current = Date.now()
-  const diff = new Date(retryAfter).getTime() - current
-
-  return diff
-}
-
-class RetryHandler {
-  constructor (opts, handlers) {
-    const { retryOptions, ...dispatchOpts } = opts
-    const {
-      // Retry scoped
-      retry: retryFn,
-      maxRetries,
-      maxTimeout,
-      minTimeout,
-      timeoutFactor,
-      // Response scoped
-      methods,
-      errorCodes,
-      retryAfter,
-      statusCodes
-    } = retryOptions ?? {}
-
-    this.dispatch = handlers.dispatch
-    this.handler = handlers.handler
-    this.opts = dispatchOpts
-    this.abort = null
-    this.aborted = false
-    this.retryOpts = {
-      retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],
-      retryAfter: retryAfter ?? true,
-      maxTimeout: maxTimeout ?? 30 * 1000, // 30s,
-      timeout: minTimeout ?? 500, // .5s
-      timeoutFactor: timeoutFactor ?? 2,
-      maxRetries: maxRetries ?? 5,
-      // What errors we should retry
-      methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],
-      // Indicates which errors to retry
-      statusCodes: statusCodes ?? [500, 502, 503, 504, 429],
-      // List of errors to retry
-      errorCodes: errorCodes ?? [
-        'ECONNRESET',
-        'ECONNREFUSED',
-        'ENOTFOUND',
-        'ENETDOWN',
-        'ENETUNREACH',
-        'EHOSTDOWN',
-        'EHOSTUNREACH',
-        'EPIPE'
-      ]
-    }
-
-    this.retryCount = 0
-    this.start = 0
-    this.end = null
-    this.etag = null
-    this.resume = null
-
-    // Handle possible onConnect duplication
-    this.handler.onConnect(reason => {
-      this.aborted = true
-      if (this.abort) {
-        this.abort(reason)
-      } else {
-        this.reason = reason
-      }
-    })
-  }
-
-  onRequestSent () {
-    if (this.handler.onRequestSent) {
-      this.handler.onRequestSent()
-    }
-  }
-
-  onUpgrade (statusCode, headers, socket) {
-    if (this.handler.onUpgrade) {
-      this.handler.onUpgrade(statusCode, headers, socket)
-    }
-  }
-
-  onConnect (abort) {
-    if (this.aborted) {
-      abort(this.reason)
-    } else {
-      this.abort = abort
-    }
-  }
-
-  onBodySent (chunk) {
-    if (this.handler.onBodySent) return this.handler.onBodySent(chunk)
-  }
-
-  static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {
-    const { statusCode, code, headers } = err
-    const { method, retryOptions } = opts
-    const {
-      maxRetries,
-      timeout,
-      maxTimeout,
-      timeoutFactor,
-      statusCodes,
-      errorCodes,
-      methods
-    } = retryOptions
-    let { counter, currentTimeout } = state
-
-    currentTimeout =
-      currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout
-
-    // Any code that is not a Undici's originated and allowed to retry
-    if (
-      code &&
-      code !== 'UND_ERR_REQ_RETRY' &&
-      code !== 'UND_ERR_SOCKET' &&
-      !errorCodes.includes(code)
-    ) {
-      cb(err)
-      return
-    }
-
-    // If a set of method are provided and the current method is not in the list
-    if (Array.isArray(methods) && !methods.includes(method)) {
-      cb(err)
-      return
-    }
-
-    // If a set of status code are provided and the current status code is not in the list
-    if (
-      statusCode != null &&
-      Array.isArray(statusCodes) &&
-      !statusCodes.includes(statusCode)
-    ) {
-      cb(err)
-      return
-    }
-
-    // If we reached the max number of retries
-    if (counter > maxRetries) {
-      cb(err)
-      return
-    }
-
-    let retryAfterHeader = headers != null && headers['retry-after']
-    if (retryAfterHeader) {
-      retryAfterHeader = Number(retryAfterHeader)
-      retryAfterHeader = isNaN(retryAfterHeader)
-        ? calculateRetryAfterHeader(retryAfterHeader)
-        : retryAfterHeader * 1e3 // Retry-After is in seconds
-    }
-
-    const retryTimeout =
-      retryAfterHeader > 0
-        ? Math.min(retryAfterHeader, maxTimeout)
-        : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout)
-
-    state.currentTimeout = retryTimeout
-
-    setTimeout(() => cb(null), retryTimeout)
-  }
-
-  onHeaders (statusCode, rawHeaders, resume, statusMessage) {
-    const headers = parseHeaders(rawHeaders)
-
-    this.retryCount += 1
-
-    if (statusCode >= 300) {
-      this.abort(
-        new RequestRetryError('Request failed', statusCode, {
-          headers,
-          count: this.retryCount
-        })
-      )
-      return false
-    }
-
-    // Checkpoint for resume from where we left it
-    if (this.resume != null) {
-      this.resume = null
-
-      if (statusCode !== 206) {
-        return true
-      }
-
-      const contentRange = parseRangeHeader(headers['content-range'])
-      // If no content range
-      if (!contentRange) {
-        this.abort(
-          new RequestRetryError('Content-Range mismatch', statusCode, {
-            headers,
-            count: this.retryCount
-          })
-        )
-        return false
-      }
-
-      // Let's start with a weak etag check
-      if (this.etag != null && this.etag !== headers.etag) {
-        this.abort(
-          new RequestRetryError('ETag mismatch', statusCode, {
-            headers,
-            count: this.retryCount
-          })
-        )
-        return false
-      }
-
-      const { start, size, end = size } = contentRange
-
-      assert(this.start === start, 'content-range mismatch')
-      assert(this.end == null || this.end === end, 'content-range mismatch')
-
-      this.resume = resume
-      return true
-    }
-
-    if (this.end == null) {
-      if (statusCode === 206) {
-        // First time we receive 206
-        const range = parseRangeHeader(headers['content-range'])
-
-        if (range == null) {
-          return this.handler.onHeaders(
-            statusCode,
-            rawHeaders,
-            resume,
-            statusMessage
-          )
-        }
-
-        const { start, size, end = size } = range
-
-        assert(
-          start != null && Number.isFinite(start) && this.start !== start,
-          'content-range mismatch'
-        )
-        assert(Number.isFinite(start))
-        assert(
-          end != null && Number.isFinite(end) && this.end !== end,
-          'invalid content-length'
-        )
-
-        this.start = start
-        this.end = end
-      }
-
-      // We make our best to checkpoint the body for further range headers
-      if (this.end == null) {
-        const contentLength = headers['content-length']
-        this.end = contentLength != null ? Number(contentLength) : null
-      }
-
-      assert(Number.isFinite(this.start))
-      assert(
-        this.end == null || Number.isFinite(this.end),
-        'invalid content-length'
-      )
-
-      this.resume = resume
-      this.etag = headers.etag != null ? headers.etag : null
-
-      return this.handler.onHeaders(
-        statusCode,
-        rawHeaders,
-        resume,
-        statusMessage
-      )
-    }
-
-    const err = new RequestRetryError('Request failed', statusCode, {
-      headers,
-      count: this.retryCount
-    })
-
-    this.abort(err)
-
-    return false
-  }
-
-  onData (chunk) {
-    this.start += chunk.length
-
-    return this.handler.onData(chunk)
-  }
-
-  onComplete (rawTrailers) {
-    this.retryCount = 0
-    return this.handler.onComplete(rawTrailers)
-  }
-
-  onError (err) {
-    if (this.aborted || isDisturbed(this.opts.body)) {
-      return this.handler.onError(err)
-    }
-
-    this.retryOpts.retry(
-      err,
-      {
-        state: { counter: this.retryCount++, currentTimeout: this.retryAfter },
-        opts: { retryOptions: this.retryOpts, ...this.opts }
-      },
-      onRetry.bind(this)
-    )
-
-    function onRetry (err) {
-      if (err != null || this.aborted || isDisturbed(this.opts.body)) {
-        return this.handler.onError(err)
-      }
-
-      if (this.start !== 0) {
-        this.opts = {
-          ...this.opts,
-          headers: {
-            ...this.opts.headers,
-            range: `bytes=${this.start}-${this.end ?? ''}`
-          }
-        }
-      }
-
-      try {
-        this.dispatch(this.opts, this)
-      } catch (err) {
-        this.handler.onError(err)
-      }
-    }
-  }
-}
-
-module.exports = RetryHandler
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/interceptor/redirectInterceptor.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/interceptor/redirectInterceptor.js
deleted file mode 100644
index 7cc035e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/interceptor/redirectInterceptor.js
+++ /dev/null
@@ -1,21 +0,0 @@
-'use strict'
-
-const RedirectHandler = require('../handler/RedirectHandler')
-
-function createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) {
-  return (dispatch) => {
-    return function Intercept (opts, handler) {
-      const { maxRedirections = defaultMaxRedirections } = opts
-
-      if (!maxRedirections) {
-        return dispatch(opts, handler)
-      }
-
-      const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler)
-      opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting.
-      return dispatch(opts, redirectHandler)
-    }
-  }
-}
-
-module.exports = createRedirectInterceptor
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/constants.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/constants.d.ts
deleted file mode 100644
index b75ab1b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/constants.d.ts
+++ /dev/null
@@ -1,199 +0,0 @@
-import { IEnumMap } from './utils';
-export declare type HTTPMode = 'loose' | 'strict';
-export declare enum ERROR {
-    OK = 0,
-    INTERNAL = 1,
-    STRICT = 2,
-    LF_EXPECTED = 3,
-    UNEXPECTED_CONTENT_LENGTH = 4,
-    CLOSED_CONNECTION = 5,
-    INVALID_METHOD = 6,
-    INVALID_URL = 7,
-    INVALID_CONSTANT = 8,
-    INVALID_VERSION = 9,
-    INVALID_HEADER_TOKEN = 10,
-    INVALID_CONTENT_LENGTH = 11,
-    INVALID_CHUNK_SIZE = 12,
-    INVALID_STATUS = 13,
-    INVALID_EOF_STATE = 14,
-    INVALID_TRANSFER_ENCODING = 15,
-    CB_MESSAGE_BEGIN = 16,
-    CB_HEADERS_COMPLETE = 17,
-    CB_MESSAGE_COMPLETE = 18,
-    CB_CHUNK_HEADER = 19,
-    CB_CHUNK_COMPLETE = 20,
-    PAUSED = 21,
-    PAUSED_UPGRADE = 22,
-    PAUSED_H2_UPGRADE = 23,
-    USER = 24
-}
-export declare enum TYPE {
-    BOTH = 0,
-    REQUEST = 1,
-    RESPONSE = 2
-}
-export declare enum FLAGS {
-    CONNECTION_KEEP_ALIVE = 1,
-    CONNECTION_CLOSE = 2,
-    CONNECTION_UPGRADE = 4,
-    CHUNKED = 8,
-    UPGRADE = 16,
-    CONTENT_LENGTH = 32,
-    SKIPBODY = 64,
-    TRAILING = 128,
-    TRANSFER_ENCODING = 512
-}
-export declare enum LENIENT_FLAGS {
-    HEADERS = 1,
-    CHUNKED_LENGTH = 2,
-    KEEP_ALIVE = 4
-}
-export declare enum METHODS {
-    DELETE = 0,
-    GET = 1,
-    HEAD = 2,
-    POST = 3,
-    PUT = 4,
-    CONNECT = 5,
-    OPTIONS = 6,
-    TRACE = 7,
-    COPY = 8,
-    LOCK = 9,
-    MKCOL = 10,
-    MOVE = 11,
-    PROPFIND = 12,
-    PROPPATCH = 13,
-    SEARCH = 14,
-    UNLOCK = 15,
-    BIND = 16,
-    REBIND = 17,
-    UNBIND = 18,
-    ACL = 19,
-    REPORT = 20,
-    MKACTIVITY = 21,
-    CHECKOUT = 22,
-    MERGE = 23,
-    'M-SEARCH' = 24,
-    NOTIFY = 25,
-    SUBSCRIBE = 26,
-    UNSUBSCRIBE = 27,
-    PATCH = 28,
-    PURGE = 29,
-    MKCALENDAR = 30,
-    LINK = 31,
-    UNLINK = 32,
-    SOURCE = 33,
-    PRI = 34,
-    DESCRIBE = 35,
-    ANNOUNCE = 36,
-    SETUP = 37,
-    PLAY = 38,
-    PAUSE = 39,
-    TEARDOWN = 40,
-    GET_PARAMETER = 41,
-    SET_PARAMETER = 42,
-    REDIRECT = 43,
-    RECORD = 44,
-    FLUSH = 45
-}
-export declare const METHODS_HTTP: METHODS[];
-export declare const METHODS_ICE: METHODS[];
-export declare const METHODS_RTSP: METHODS[];
-export declare const METHOD_MAP: IEnumMap;
-export declare const H_METHOD_MAP: IEnumMap;
-export declare enum FINISH {
-    SAFE = 0,
-    SAFE_WITH_CB = 1,
-    UNSAFE = 2
-}
-export declare type CharList = Array<string | number>;
-export declare const ALPHA: CharList;
-export declare const NUM_MAP: {
-    0: number;
-    1: number;
-    2: number;
-    3: number;
-    4: number;
-    5: number;
-    6: number;
-    7: number;
-    8: number;
-    9: number;
-};
-export declare const HEX_MAP: {
-    0: number;
-    1: number;
-    2: number;
-    3: number;
-    4: number;
-    5: number;
-    6: number;
-    7: number;
-    8: number;
-    9: number;
-    A: number;
-    B: number;
-    C: number;
-    D: number;
-    E: number;
-    F: number;
-    a: number;
-    b: number;
-    c: number;
-    d: number;
-    e: number;
-    f: number;
-};
-export declare const NUM: CharList;
-export declare const ALPHANUM: CharList;
-export declare const MARK: CharList;
-export declare const USERINFO_CHARS: CharList;
-export declare const STRICT_URL_CHAR: CharList;
-export declare const URL_CHAR: CharList;
-export declare const HEX: CharList;
-export declare const STRICT_TOKEN: CharList;
-export declare const TOKEN: CharList;
-export declare const HEADER_CHARS: CharList;
-export declare const CONNECTION_TOKEN_CHARS: CharList;
-export declare const MAJOR: {
-    0: number;
-    1: number;
-    2: number;
-    3: number;
-    4: number;
-    5: number;
-    6: number;
-    7: number;
-    8: number;
-    9: number;
-};
-export declare const MINOR: {
-    0: number;
-    1: number;
-    2: number;
-    3: number;
-    4: number;
-    5: number;
-    6: number;
-    7: number;
-    8: number;
-    9: number;
-};
-export declare enum HEADER_STATE {
-    GENERAL = 0,
-    CONNECTION = 1,
-    CONTENT_LENGTH = 2,
-    TRANSFER_ENCODING = 3,
-    UPGRADE = 4,
-    CONNECTION_KEEP_ALIVE = 5,
-    CONNECTION_CLOSE = 6,
-    CONNECTION_UPGRADE = 7,
-    TRANSFER_ENCODING_CHUNKED = 8
-}
-export declare const SPECIAL_HEADERS: {
-    connection: HEADER_STATE;
-    'content-length': HEADER_STATE;
-    'proxy-connection': HEADER_STATE;
-    'transfer-encoding': HEADER_STATE;
-    upgrade: HEADER_STATE;
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/constants.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/constants.js
deleted file mode 100644
index fb0b5a2..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/constants.js
+++ /dev/null
@@ -1,278 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;
-const utils_1 = require("./utils");
-// C headers
-var ERROR;
-(function (ERROR) {
-    ERROR[ERROR["OK"] = 0] = "OK";
-    ERROR[ERROR["INTERNAL"] = 1] = "INTERNAL";
-    ERROR[ERROR["STRICT"] = 2] = "STRICT";
-    ERROR[ERROR["LF_EXPECTED"] = 3] = "LF_EXPECTED";
-    ERROR[ERROR["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH";
-    ERROR[ERROR["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION";
-    ERROR[ERROR["INVALID_METHOD"] = 6] = "INVALID_METHOD";
-    ERROR[ERROR["INVALID_URL"] = 7] = "INVALID_URL";
-    ERROR[ERROR["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT";
-    ERROR[ERROR["INVALID_VERSION"] = 9] = "INVALID_VERSION";
-    ERROR[ERROR["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN";
-    ERROR[ERROR["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH";
-    ERROR[ERROR["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE";
-    ERROR[ERROR["INVALID_STATUS"] = 13] = "INVALID_STATUS";
-    ERROR[ERROR["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE";
-    ERROR[ERROR["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING";
-    ERROR[ERROR["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN";
-    ERROR[ERROR["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE";
-    ERROR[ERROR["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE";
-    ERROR[ERROR["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER";
-    ERROR[ERROR["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE";
-    ERROR[ERROR["PAUSED"] = 21] = "PAUSED";
-    ERROR[ERROR["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE";
-    ERROR[ERROR["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE";
-    ERROR[ERROR["USER"] = 24] = "USER";
-})(ERROR = exports.ERROR || (exports.ERROR = {}));
-var TYPE;
-(function (TYPE) {
-    TYPE[TYPE["BOTH"] = 0] = "BOTH";
-    TYPE[TYPE["REQUEST"] = 1] = "REQUEST";
-    TYPE[TYPE["RESPONSE"] = 2] = "RESPONSE";
-})(TYPE = exports.TYPE || (exports.TYPE = {}));
-var FLAGS;
-(function (FLAGS) {
-    FLAGS[FLAGS["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE";
-    FLAGS[FLAGS["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE";
-    FLAGS[FLAGS["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE";
-    FLAGS[FLAGS["CHUNKED"] = 8] = "CHUNKED";
-    FLAGS[FLAGS["UPGRADE"] = 16] = "UPGRADE";
-    FLAGS[FLAGS["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH";
-    FLAGS[FLAGS["SKIPBODY"] = 64] = "SKIPBODY";
-    FLAGS[FLAGS["TRAILING"] = 128] = "TRAILING";
-    // 1 << 8 is unused
-    FLAGS[FLAGS["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING";
-})(FLAGS = exports.FLAGS || (exports.FLAGS = {}));
-var LENIENT_FLAGS;
-(function (LENIENT_FLAGS) {
-    LENIENT_FLAGS[LENIENT_FLAGS["HEADERS"] = 1] = "HEADERS";
-    LENIENT_FLAGS[LENIENT_FLAGS["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH";
-    LENIENT_FLAGS[LENIENT_FLAGS["KEEP_ALIVE"] = 4] = "KEEP_ALIVE";
-})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}));
-var METHODS;
-(function (METHODS) {
-    METHODS[METHODS["DELETE"] = 0] = "DELETE";
-    METHODS[METHODS["GET"] = 1] = "GET";
-    METHODS[METHODS["HEAD"] = 2] = "HEAD";
-    METHODS[METHODS["POST"] = 3] = "POST";
-    METHODS[METHODS["PUT"] = 4] = "PUT";
-    /* pathological */
-    METHODS[METHODS["CONNECT"] = 5] = "CONNECT";
-    METHODS[METHODS["OPTIONS"] = 6] = "OPTIONS";
-    METHODS[METHODS["TRACE"] = 7] = "TRACE";
-    /* WebDAV */
-    METHODS[METHODS["COPY"] = 8] = "COPY";
-    METHODS[METHODS["LOCK"] = 9] = "LOCK";
-    METHODS[METHODS["MKCOL"] = 10] = "MKCOL";
-    METHODS[METHODS["MOVE"] = 11] = "MOVE";
-    METHODS[METHODS["PROPFIND"] = 12] = "PROPFIND";
-    METHODS[METHODS["PROPPATCH"] = 13] = "PROPPATCH";
-    METHODS[METHODS["SEARCH"] = 14] = "SEARCH";
-    METHODS[METHODS["UNLOCK"] = 15] = "UNLOCK";
-    METHODS[METHODS["BIND"] = 16] = "BIND";
-    METHODS[METHODS["REBIND"] = 17] = "REBIND";
-    METHODS[METHODS["UNBIND"] = 18] = "UNBIND";
-    METHODS[METHODS["ACL"] = 19] = "ACL";
-    /* subversion */
-    METHODS[METHODS["REPORT"] = 20] = "REPORT";
-    METHODS[METHODS["MKACTIVITY"] = 21] = "MKACTIVITY";
-    METHODS[METHODS["CHECKOUT"] = 22] = "CHECKOUT";
-    METHODS[METHODS["MERGE"] = 23] = "MERGE";
-    /* upnp */
-    METHODS[METHODS["M-SEARCH"] = 24] = "M-SEARCH";
-    METHODS[METHODS["NOTIFY"] = 25] = "NOTIFY";
-    METHODS[METHODS["SUBSCRIBE"] = 26] = "SUBSCRIBE";
-    METHODS[METHODS["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE";
-    /* RFC-5789 */
-    METHODS[METHODS["PATCH"] = 28] = "PATCH";
-    METHODS[METHODS["PURGE"] = 29] = "PURGE";
-    /* CalDAV */
-    METHODS[METHODS["MKCALENDAR"] = 30] = "MKCALENDAR";
-    /* RFC-2068, section 19.6.1.2 */
-    METHODS[METHODS["LINK"] = 31] = "LINK";
-    METHODS[METHODS["UNLINK"] = 32] = "UNLINK";
-    /* icecast */
-    METHODS[METHODS["SOURCE"] = 33] = "SOURCE";
-    /* RFC-7540, section 11.6 */
-    METHODS[METHODS["PRI"] = 34] = "PRI";
-    /* RFC-2326 RTSP */
-    METHODS[METHODS["DESCRIBE"] = 35] = "DESCRIBE";
-    METHODS[METHODS["ANNOUNCE"] = 36] = "ANNOUNCE";
-    METHODS[METHODS["SETUP"] = 37] = "SETUP";
-    METHODS[METHODS["PLAY"] = 38] = "PLAY";
-    METHODS[METHODS["PAUSE"] = 39] = "PAUSE";
-    METHODS[METHODS["TEARDOWN"] = 40] = "TEARDOWN";
-    METHODS[METHODS["GET_PARAMETER"] = 41] = "GET_PARAMETER";
-    METHODS[METHODS["SET_PARAMETER"] = 42] = "SET_PARAMETER";
-    METHODS[METHODS["REDIRECT"] = 43] = "REDIRECT";
-    METHODS[METHODS["RECORD"] = 44] = "RECORD";
-    /* RAOP */
-    METHODS[METHODS["FLUSH"] = 45] = "FLUSH";
-})(METHODS = exports.METHODS || (exports.METHODS = {}));
-exports.METHODS_HTTP = [
-    METHODS.DELETE,
-    METHODS.GET,
-    METHODS.HEAD,
-    METHODS.POST,
-    METHODS.PUT,
-    METHODS.CONNECT,
-    METHODS.OPTIONS,
-    METHODS.TRACE,
-    METHODS.COPY,
-    METHODS.LOCK,
-    METHODS.MKCOL,
-    METHODS.MOVE,
-    METHODS.PROPFIND,
-    METHODS.PROPPATCH,
-    METHODS.SEARCH,
-    METHODS.UNLOCK,
-    METHODS.BIND,
-    METHODS.REBIND,
-    METHODS.UNBIND,
-    METHODS.ACL,
-    METHODS.REPORT,
-    METHODS.MKACTIVITY,
-    METHODS.CHECKOUT,
-    METHODS.MERGE,
-    METHODS['M-SEARCH'],
-    METHODS.NOTIFY,
-    METHODS.SUBSCRIBE,
-    METHODS.UNSUBSCRIBE,
-    METHODS.PATCH,
-    METHODS.PURGE,
-    METHODS.MKCALENDAR,
-    METHODS.LINK,
-    METHODS.UNLINK,
-    METHODS.PRI,
-    // TODO(indutny): should we allow it with HTTP?
-    METHODS.SOURCE,
-];
-exports.METHODS_ICE = [
-    METHODS.SOURCE,
-];
-exports.METHODS_RTSP = [
-    METHODS.OPTIONS,
-    METHODS.DESCRIBE,
-    METHODS.ANNOUNCE,
-    METHODS.SETUP,
-    METHODS.PLAY,
-    METHODS.PAUSE,
-    METHODS.TEARDOWN,
-    METHODS.GET_PARAMETER,
-    METHODS.SET_PARAMETER,
-    METHODS.REDIRECT,
-    METHODS.RECORD,
-    METHODS.FLUSH,
-    // For AirPlay
-    METHODS.GET,
-    METHODS.POST,
-];
-exports.METHOD_MAP = utils_1.enumToMap(METHODS);
-exports.H_METHOD_MAP = {};
-Object.keys(exports.METHOD_MAP).forEach((key) => {
-    if (/^H/.test(key)) {
-        exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key];
-    }
-});
-var FINISH;
-(function (FINISH) {
-    FINISH[FINISH["SAFE"] = 0] = "SAFE";
-    FINISH[FINISH["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB";
-    FINISH[FINISH["UNSAFE"] = 2] = "UNSAFE";
-})(FINISH = exports.FINISH || (exports.FINISH = {}));
-exports.ALPHA = [];
-for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {
-    // Upper case
-    exports.ALPHA.push(String.fromCharCode(i));
-    // Lower case
-    exports.ALPHA.push(String.fromCharCode(i + 0x20));
-}
-exports.NUM_MAP = {
-    0: 0, 1: 1, 2: 2, 3: 3, 4: 4,
-    5: 5, 6: 6, 7: 7, 8: 8, 9: 9,
-};
-exports.HEX_MAP = {
-    0: 0, 1: 1, 2: 2, 3: 3, 4: 4,
-    5: 5, 6: 6, 7: 7, 8: 8, 9: 9,
-    A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF,
-    a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf,
-};
-exports.NUM = [
-    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
-];
-exports.ALPHANUM = exports.ALPHA.concat(exports.NUM);
-exports.MARK = ['-', '_', '.', '!', '~', '*', '\'', '(', ')'];
-exports.USERINFO_CHARS = exports.ALPHANUM
-    .concat(exports.MARK)
-    .concat(['%', ';', ':', '&', '=', '+', '$', ',']);
-// TODO(indutny): use RFC
-exports.STRICT_URL_CHAR = [
-    '!', '"', '$', '%', '&', '\'',
-    '(', ')', '*', '+', ',', '-', '.', '/',
-    ':', ';', '<', '=', '>',
-    '@', '[', '\\', ']', '^', '_',
-    '`',
-    '{', '|', '}', '~',
-].concat(exports.ALPHANUM);
-exports.URL_CHAR = exports.STRICT_URL_CHAR
-    .concat(['\t', '\f']);
-// All characters with 0x80 bit set to 1
-for (let i = 0x80; i <= 0xff; i++) {
-    exports.URL_CHAR.push(i);
-}
-exports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']);
-/* Tokens as defined by rfc 2616. Also lowercases them.
- *        token       = 1*<any CHAR except CTLs or separators>
- *     separators     = "(" | ")" | "<" | ">" | "@"
- *                    | "," | ";" | ":" | "\" | <">
- *                    | "/" | "[" | "]" | "?" | "="
- *                    | "{" | "}" | SP | HT
- */
-exports.STRICT_TOKEN = [
-    '!', '#', '$', '%', '&', '\'',
-    '*', '+', '-', '.',
-    '^', '_', '`',
-    '|', '~',
-].concat(exports.ALPHANUM);
-exports.TOKEN = exports.STRICT_TOKEN.concat([' ']);
-/*
- * Verify that a char is a valid visible (printable) US-ASCII
- * character or %x80-FF
- */
-exports.HEADER_CHARS = ['\t'];
-for (let i = 32; i <= 255; i++) {
-    if (i !== 127) {
-        exports.HEADER_CHARS.push(i);
-    }
-}
-// ',' = \x44
-exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);
-exports.MAJOR = exports.NUM_MAP;
-exports.MINOR = exports.MAJOR;
-var HEADER_STATE;
-(function (HEADER_STATE) {
-    HEADER_STATE[HEADER_STATE["GENERAL"] = 0] = "GENERAL";
-    HEADER_STATE[HEADER_STATE["CONNECTION"] = 1] = "CONNECTION";
-    HEADER_STATE[HEADER_STATE["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH";
-    HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING";
-    HEADER_STATE[HEADER_STATE["UPGRADE"] = 4] = "UPGRADE";
-    HEADER_STATE[HEADER_STATE["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE";
-    HEADER_STATE[HEADER_STATE["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE";
-    HEADER_STATE[HEADER_STATE["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE";
-    HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED";
-})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}));
-exports.SPECIAL_HEADERS = {
-    'connection': HEADER_STATE.CONNECTION,
-    'content-length': HEADER_STATE.CONTENT_LENGTH,
-    'proxy-connection': HEADER_STATE.CONNECTION,
-    'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING,
-    'upgrade': HEADER_STATE.UPGRADE,
-};
-//# sourceMappingURL=constants.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/constants.js.map b/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/constants.js.map
deleted file mode 100644
index 6ac54bc..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/constants.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/llhttp/constants.ts"],"names":[],"mappings":";;;AAAA,mCAA8C;AAI9C,YAAY;AAEZ,IAAY,KA6BX;AA7BD,WAAY,KAAK;IACf,6BAAM,CAAA;IACN,yCAAQ,CAAA;IACR,qCAAM,CAAA;IACN,+CAAW,CAAA;IACX,2EAAyB,CAAA;IACzB,2DAAiB,CAAA;IACjB,qDAAc,CAAA;IACd,+CAAW,CAAA;IACX,yDAAgB,CAAA;IAChB,uDAAe,CAAA;IACf,kEAAoB,CAAA;IACpB,sEAAsB,CAAA;IACtB,8DAAkB,CAAA;IAClB,sDAAc,CAAA;IACd,4DAAiB,CAAA;IACjB,4EAAyB,CAAA;IAEzB,0DAAgB,CAAA;IAChB,gEAAmB,CAAA;IACnB,gEAAmB,CAAA;IACnB,wDAAe,CAAA;IACf,4DAAiB,CAAA;IAEjB,sCAAM,CAAA;IACN,sDAAc,CAAA;IACd,4DAAiB,CAAA;IAEjB,kCAAI,CAAA;AACN,CAAC,EA7BW,KAAK,GAAL,aAAK,KAAL,aAAK,QA6BhB;AAED,IAAY,IAIX;AAJD,WAAY,IAAI;IACd,+BAAQ,CAAA;IACR,qCAAO,CAAA;IACP,uCAAQ,CAAA;AACV,CAAC,EAJW,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAIf;AAED,IAAY,KAWX;AAXD,WAAY,KAAK;IACf,mEAA8B,CAAA;IAC9B,yDAAyB,CAAA;IACzB,6DAA2B,CAAA;IAC3B,uCAAgB,CAAA;IAChB,wCAAgB,CAAA;IAChB,sDAAuB,CAAA;IACvB,0CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,mBAAmB;IACnB,6DAA0B,CAAA;AAC5B,CAAC,EAXW,KAAK,GAAL,aAAK,KAAL,aAAK,QAWhB;AAED,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,uDAAgB,CAAA;IAChB,qEAAuB,CAAA;IACvB,6DAAmB,CAAA;AACrB,CAAC,EAJW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAIxB;AAED,IAAY,OA0DX;AA1DD,WAAY,OAAO;IACjB,yCAAU,CAAA;IACV,mCAAO,CAAA;IACP,qCAAQ,CAAA;IACR,qCAAQ,CAAA;IACR,mCAAO,CAAA;IACP,kBAAkB;IAClB,2CAAW,CAAA;IACX,2CAAW,CAAA;IACX,uCAAS,CAAA;IACT,YAAY;IACZ,qCAAQ,CAAA;IACR,qCAAQ,CAAA;IACR,wCAAU,CAAA;IACV,sCAAS,CAAA;IACT,8CAAa,CAAA;IACb,gDAAc,CAAA;IACd,0CAAW,CAAA;IACX,0CAAW,CAAA;IACX,sCAAS,CAAA;IACT,0CAAW,CAAA;IACX,0CAAW,CAAA;IACX,oCAAQ,CAAA;IACR,gBAAgB;IAChB,0CAAW,CAAA;IACX,kDAAe,CAAA;IACf,8CAAa,CAAA;IACb,wCAAU,CAAA;IACV,UAAU;IACV,8CAAe,CAAA;IACf,0CAAW,CAAA;IACX,gDAAc,CAAA;IACd,oDAAgB,CAAA;IAChB,cAAc;IACd,wCAAU,CAAA;IACV,wCAAU,CAAA;IACV,YAAY;IACZ,kDAAe,CAAA;IACf,gCAAgC;IAChC,sCAAS,CAAA;IACT,0CAAW,CAAA;IACX,aAAa;IACb,0CAAW,CAAA;IACX,4BAA4B;IAC5B,oCAAQ,CAAA;IACR,mBAAmB;IACnB,8CAAa,CAAA;IACb,8CAAa,CAAA;IACb,wCAAU,CAAA;IACV,sCAAS,CAAA;IACT,wCAAU,CAAA;IACV,8CAAa,CAAA;IACb,wDAAkB,CAAA;IAClB,wDAAkB,CAAA;IAClB,8CAAa,CAAA;IACb,0CAAW,CAAA;IACX,UAAU;IACV,wCAAU,CAAA;AACZ,CAAC,EA1DW,OAAO,GAAP,eAAO,KAAP,eAAO,QA0DlB;AAEY,QAAA,YAAY,GAAG;IAC1B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,GAAG;IAEX,+CAA+C;IAC/C,OAAO,CAAC,MAAM;CACf,CAAC;AAEW,QAAA,WAAW,GAAG;IACzB,OAAO,CAAC,MAAM;CACf,CAAC;AAEW,QAAA,YAAY,GAAG;IAC1B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;IAEb,cAAc;IACd,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,IAAI;CACb,CAAC;AAEW,QAAA,UAAU,GAAG,iBAAS,CAAC,OAAO,CAAC,CAAC;AAChC,QAAA,YAAY,GAAa,EAAE,CAAC;AAEzC,MAAM,CAAC,IAAI,CAAC,kBAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;IACtC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAClB,oBAAY,CAAC,GAAG,CAAC,GAAG,kBAAU,CAAC,GAAG,CAAC,CAAC;KACrC;AACH,CAAC,CAAC,CAAC;AAEH,IAAY,MAIX;AAJD,WAAY,MAAM;IAChB,mCAAQ,CAAA;IACR,mDAAY,CAAA;IACZ,uCAAM,CAAA;AACR,CAAC,EAJW,MAAM,GAAN,cAAM,KAAN,cAAM,QAIjB;AAMY,QAAA,KAAK,GAAa,EAAE,CAAC;AAElC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IAC3D,aAAa;IACb,aAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,aAAa;IACb,aAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;CAC3C;AAEY,QAAA,OAAO,GAAG;IACrB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CAC7B,CAAC;AAEW,QAAA,OAAO,GAAG;IACrB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5B,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;IAC9C,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;CAC/C,CAAC;AAEW,QAAA,GAAG,GAAa;IAC3B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CACjD,CAAC;AAEW,QAAA,QAAQ,GAAa,aAAK,CAAC,MAAM,CAAC,WAAG,CAAC,CAAC;AACvC,QAAA,IAAI,GAAa,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAE,CAAC;AAClE,QAAA,cAAc,GAAa,gBAAQ;KAC7C,MAAM,CAAC,YAAI,CAAC;KACZ,MAAM,CAAC,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,CAAC,CAAC;AAEtD,yBAAyB;AACZ,QAAA,eAAe,GAAc;IACxC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI;IAC7B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACtC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACvB,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7B,GAAG;IACH,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CACN,CAAC,MAAM,CAAC,gBAAQ,CAAC,CAAC;AAEnB,QAAA,QAAQ,GAAa,uBAAe;KAC9C,MAAM,CAAE,CAAE,IAAI,EAAE,IAAI,CAAe,CAAC,CAAC;AAExC,wCAAwC;AACxC,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;IACjC,gBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClB;AAEY,QAAA,GAAG,GAAa,WAAG,CAAC,MAAM,CACrC,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,CAAC,CAAC;AAElE;;;;;;GAMG;AACU,QAAA,YAAY,GAAc;IACrC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI;IAC7B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAClB,GAAG,EAAE,GAAG,EAAE,GAAG;IACb,GAAG,EAAE,GAAG;CACI,CAAC,MAAM,CAAC,gBAAQ,CAAC,CAAC;AAEnB,QAAA,KAAK,GAAa,oBAAY,CAAC,MAAM,CAAC,CAAE,GAAG,CAAE,CAAC,CAAC;AAE5D;;;GAGG;AACU,QAAA,YAAY,GAAa,CAAE,IAAI,CAAE,CAAC;AAC/C,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;IAC9B,IAAI,CAAC,KAAK,GAAG,EAAE;QACb,oBAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACtB;CACF;AAED,aAAa;AACA,QAAA,sBAAsB,GACjC,oBAAY,CAAC,MAAM,CAAC,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAE3C,QAAA,KAAK,GAAG,eAAO,CAAC;AAChB,QAAA,KAAK,GAAG,aAAK,CAAC;AAE3B,IAAY,YAWX;AAXD,WAAY,YAAY;IACtB,qDAAW,CAAA;IACX,2DAAU,CAAA;IACV,mEAAc,CAAA;IACd,yEAAiB,CAAA;IACjB,qDAAO,CAAA;IAEP,iFAAqB,CAAA;IACrB,uEAAgB,CAAA;IAChB,2EAAkB,CAAA;IAClB,yFAAyB,CAAA;AAC3B,CAAC,EAXW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAWvB;AAEY,QAAA,eAAe,GAAG;IAC7B,YAAY,EAAE,YAAY,CAAC,UAAU;IACrC,gBAAgB,EAAE,YAAY,CAAC,cAAc;IAC7C,kBAAkB,EAAE,YAAY,CAAC,UAAU;IAC3C,mBAAmB,EAAE,YAAY,CAAC,iBAAiB;IACnD,SAAS,EAAE,YAAY,CAAC,OAAO;CAChC,CAAC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/llhttp-wasm.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/llhttp-wasm.js
deleted file mode 100644
index ad4682c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/llhttp-wasm.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJsbGh0dHBfc3RhdHVzX25hbWUAIRpsbGh0dHBfc2V0X2xlbmllbnRfaGVhZGVycwAiIWxsaHR0cF9zZXRfbGVuaWVudF9jaHVua2VkX2xlbmd0aAAjHWxsaHR0cF9zZXRfbGVuaWVudF9rZWVwX2FsaXZlACQkbGxodHRwX3NldF9sZW5pZW50X3RyYW5zZmVyX2VuY29kaW5nACUYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mAD8JFwEAQQELEQECAwQFCwYHNTk3MS8tJyspCsLgAkUCAAsIABCIgICAAAsZACAAEMKAgIAAGiAAIAI2AjggACABOgAoCxwAIAAgAC8BMiAALQAuIAAQwYCAgAAQgICAgAALKgEBf0HAABDGgICAACIBEMKAgIAAGiABQYCIgIAANgI4IAEgADoAKCABCwoAIAAQyICAgAALBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LRQEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABDCgICAABogACAENgI4IAAgAzoAKCAAIAI6AC0gACABNgIYCxEAIAAgASABIAJqEMOAgIAACxAAIABBAEHcABDMgICAABoLZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI4IgFFDQAgASgCLCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQyoCAgAAACyAAQcOWgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQdGbgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBJEkNABDKgICAAAALIABBAnRBoLOAgABqKAIACyIAAkAgAEEuSQ0AEMqAgIAAAAsgAEECdEGwtICAAGooAgAL7gsBAX9B66iAgAAhAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABBnH9qDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0Hhp4CAAA8LQaShgIAADwtBy6yAgAAPC0H+sYCAAA8LQcCkgIAADwtBq6SAgAAPC0GNqICAAA8LQeKmgIAADwtBgLCAgAAPC0G5r4CAAA8LQdekgIAADwtB75+AgAAPC0Hhn4CAAA8LQfqfgIAADwtB8qCAgAAPC0Gor4CAAA8LQa6ygIAADwtBiLCAgAAPC0Hsp4CAAA8LQYKigIAADwtBjp2AgAAPC0HQroCAAA8LQcqjgIAADwtBxbKAgAAPC0HfnICAAA8LQdKcgIAADwtBxKCAgAAPC0HXoICAAA8LQaKfgIAADwtB7a6AgAAPC0GrsICAAA8LQdSlgIAADwtBzK6AgAAPC0H6roCAAA8LQfyrgIAADwtB0rCAgAAPC0HxnYCAAA8LQbuggIAADwtB96uAgAAPC0GQsYCAAA8LQdexgIAADwtBoq2AgAAPC0HUp4CAAA8LQeCrgIAADwtBn6yAgAAPC0HrsYCAAA8LQdWfgIAADwtByrGAgAAPC0HepYCAAA8LQdSegIAADwtB9JyAgAAPC0GnsoCAAA8LQbGdgIAADwtBoJ2AgAAPC0G5sYCAAA8LQbywgIAADwtBkqGAgAAPC0GzpoCAAA8LQemsgIAADwtBrJ6AgAAPC0HUq4CAAA8LQfemgIAADwtBgKaAgAAPC0GwoYCAAA8LQf6egIAADwtBjaOAgAAPC0GJrYCAAA8LQfeigIAADwtBoLGAgAAPC0Gun4CAAA8LQcalgIAADwtB6J6AgAAPC0GTooCAAA8LQcKvgIAADwtBw52AgAAPC0GLrICAAA8LQeGdgIAADwtBja+AgAAPC0HqoYCAAA8LQbStgIAADwtB0q+AgAAPC0HfsoCAAA8LQdKygIAADwtB8LCAgAAPC0GpooCAAA8LQfmjgIAADwtBmZ6AgAAPC0G1rICAAA8LQZuwgIAADwtBkrKAgAAPC0G2q4CAAA8LQcKigIAADwtB+LKAgAAPC0GepYCAAA8LQdCigIAADwtBup6AgAAPC0GBnoCAAA8LEMqAgIAAAAtB1qGAgAAhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcaRgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIwIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2ioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCNCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZqAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAjgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZWQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAI8IgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAhQiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEGqm4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCQCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAigiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2iICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCUCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIcIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBwpmAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCICIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZSUgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAJMIgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAlQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCWCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL/gEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARB//8DcSIDQQhxDQACQCADQYAEcUUNAAJAIAAtAChBAUcNACAALQAtQQpxDQBBBQ8LQQQPCwJAIANBIHENAAJAIAAtAChBAUYNACAALwEyQf//A3EiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQShxRQ0CIANBiARxQYAERg0CC0EADwtBAEEDIAApAyBQGyEFCyAFC2IBAn9BACEBAkAgAC0AKEEBRg0AIAAvATJB//8DcSICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6cBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMkH//wNxIgVBnH9qQeQASQ0AIAVBzAFGDQAgBUGwAkYNACAEQcAAcQ0AQQAhAyAEQYgEcUGABEYNACAEQShxQQBHIQMLIABBADsBMCAAQQA6AC8gAwuZAQECfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEBIAAvATAiAkECcUUNAQwCC0EAIQEgAC8BMCICQQFxRQ0BC0EBIQEgAC0AKEEBRg0AIAAvATJB//8DcSIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC1kAIABBGGpCADcDACAAQgA3AwAgAEE4akIANwMAIABBMGpCADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwHLAcoBuAHJAbkByAG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAQDcAQtBACEQDMYBC0EOIRAMxQELQQ0hEAzEAQtBDyEQDMMBC0EQIRAMwgELQRMhEAzBAQtBFCEQDMABC0EVIRAMvwELQRYhEAy+AQtBFyEQDL0BC0EYIRAMvAELQRkhEAy7AQtBGiEQDLoBC0EbIRAMuQELQRwhEAy4AQtBCCEQDLcBC0EdIRAMtgELQSAhEAy1AQtBHyEQDLQBC0EHIRAMswELQSEhEAyyAQtBIiEQDLEBC0EeIRAMsAELQSMhEAyvAQtBEiEQDK4BC0ERIRAMrQELQSQhEAysAQtBJSEQDKsBC0EmIRAMqgELQSchEAypAQtBwwEhEAyoAQtBKSEQDKcBC0ErIRAMpgELQSwhEAylAQtBLSEQDKQBC0EuIRAMowELQS8hEAyiAQtBxAEhEAyhAQtBMCEQDKABC0E0IRAMnwELQQwhEAyeAQtBMSEQDJ0BC0EyIRAMnAELQTMhEAybAQtBOSEQDJoBC0E1IRAMmQELQcUBIRAMmAELQQshEAyXAQtBOiEQDJYBC0E2IRAMlQELQQohEAyUAQtBNyEQDJMBC0E4IRAMkgELQTwhEAyRAQtBOyEQDJABC0E9IRAMjwELQQkhEAyOAQtBKCEQDI0BC0E+IRAMjAELQT8hEAyLAQtBwAAhEAyKAQtBwQAhEAyJAQtBwgAhEAyIAQtBwwAhEAyHAQtBxAAhEAyGAQtBxQAhEAyFAQtBxgAhEAyEAQtBKiEQDIMBC0HHACEQDIIBC0HIACEQDIEBC0HJACEQDIABC0HKACEQDH8LQcsAIRAMfgtBzQAhEAx9C0HMACEQDHwLQc4AIRAMewtBzwAhEAx6C0HQACEQDHkLQdEAIRAMeAtB0gAhEAx3C0HTACEQDHYLQdQAIRAMdQtB1gAhEAx0C0HVACEQDHMLQQYhEAxyC0HXACEQDHELQQUhEAxwC0HYACEQDG8LQQQhEAxuC0HZACEQDG0LQdoAIRAMbAtB2wAhEAxrC0HcACEQDGoLQQMhEAxpC0HdACEQDGgLQd4AIRAMZwtB3wAhEAxmC0HhACEQDGULQeAAIRAMZAtB4gAhEAxjC0HjACEQDGILQQIhEAxhC0HkACEQDGALQeUAIRAMXwtB5gAhEAxeC0HnACEQDF0LQegAIRAMXAtB6QAhEAxbC0HqACEQDFoLQesAIRAMWQtB7AAhEAxYC0HtACEQDFcLQe4AIRAMVgtB7wAhEAxVC0HwACEQDFQLQfEAIRAMUwtB8gAhEAxSC0HzACEQDFELQfQAIRAMUAtB9QAhEAxPC0H2ACEQDE4LQfcAIRAMTQtB+AAhEAxMC0H5ACEQDEsLQfoAIRAMSgtB+wAhEAxJC0H8ACEQDEgLQf0AIRAMRwtB/gAhEAxGC0H/ACEQDEULQYABIRAMRAtBgQEhEAxDC0GCASEQDEILQYMBIRAMQQtBhAEhEAxAC0GFASEQDD8LQYYBIRAMPgtBhwEhEAw9C0GIASEQDDwLQYkBIRAMOwtBigEhEAw6C0GLASEQDDkLQYwBIRAMOAtBjQEhEAw3C0GOASEQDDYLQY8BIRAMNQtBkAEhEAw0C0GRASEQDDMLQZIBIRAMMgtBkwEhEAwxC0GUASEQDDALQZUBIRAMLwtBlgEhEAwuC0GXASEQDC0LQZgBIRAMLAtBmQEhEAwrC0GaASEQDCoLQZsBIRAMKQtBnAEhEAwoC0GdASEQDCcLQZ4BIRAMJgtBnwEhEAwlC0GgASEQDCQLQaEBIRAMIwtBogEhEAwiC0GjASEQDCELQaQBIRAMIAtBpQEhEAwfC0GmASEQDB4LQacBIRAMHQtBqAEhEAwcC0GpASEQDBsLQaoBIRAMGgtBqwEhEAwZC0GsASEQDBgLQa0BIRAMFwtBrgEhEAwWC0EBIRAMFQtBrwEhEAwUC0GwASEQDBMLQbEBIRAMEgtBswEhEAwRC0GyASEQDBALQbQBIRAMDwtBtQEhEAwOC0G2ASEQDA0LQbcBIRAMDAtBuAEhEAwLC0G5ASEQDAoLQboBIRAMCQtBuwEhEAwIC0HGASEQDAcLQbwBIRAMBgtBvQEhEAwFC0G+ASEQDAQLQb8BIRAMAwtBwAEhEAwCC0HCASEQDAELQcEBIRALA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQDscBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxweHyAhIyUoP0BBREVGR0hJSktMTU9QUVJT3gNXWVtcXWBiZWZnaGlqa2xtb3BxcnN0dXZ3eHl6e3x9foABggGFAYYBhwGJAYsBjAGNAY4BjwGQAZEBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAZkCpAKwAv4C/gILIAEiBCACRw3zAUHdASEQDP8DCyABIhAgAkcN3QFBwwEhEAz+AwsgASIBIAJHDZABQfcAIRAM/QMLIAEiASACRw2GAUHvACEQDPwDCyABIgEgAkcNf0HqACEQDPsDCyABIgEgAkcNe0HoACEQDPoDCyABIgEgAkcNeEHmACEQDPkDCyABIgEgAkcNGkEYIRAM+AMLIAEiASACRw0UQRIhEAz3AwsgASIBIAJHDVlBxQAhEAz2AwsgASIBIAJHDUpBPyEQDPUDCyABIgEgAkcNSEE8IRAM9AMLIAEiASACRw1BQTEhEAzzAwsgAC0ALkEBRg3rAwyHAgsgACABIgEgAhDAgICAAEEBRw3mASAAQgA3AyAM5wELIAAgASIBIAIQtICAgAAiEA3nASABIQEM9QILAkAgASIBIAJHDQBBBiEQDPADCyAAIAFBAWoiASACELuAgIAAIhAN6AEgASEBDDELIABCADcDIEESIRAM1QMLIAEiECACRw0rQR0hEAztAwsCQCABIgEgAkYNACABQQFqIQFBECEQDNQDC0EHIRAM7AMLIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN5QFBCCEQDOsDCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEUIRAM0gMLQQkhEAzqAwsgASEBIAApAyBQDeQBIAEhAQzyAgsCQCABIgEgAkcNAEELIRAM6QMLIAAgAUEBaiIBIAIQtoCAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3mASABIQEMDQsgACABIgEgAhC6gICAACIQDecBIAEhAQzwAgsCQCABIgEgAkcNAEEPIRAM5QMLIAEtAAAiEEE7Rg0IIBBBDUcN6AEgAUEBaiEBDO8CCyAAIAEiASACELqAgIAAIhAN6AEgASEBDPICCwNAAkAgAS0AAEHwtYCAAGotAAAiEEEBRg0AIBBBAkcN6wEgACgCBCEQIABBADYCBCAAIBAgAUEBaiIBELmAgIAAIhAN6gEgASEBDPQCCyABQQFqIgEgAkcNAAtBEiEQDOIDCyAAIAEiASACELqAgIAAIhAN6QEgASEBDAoLIAEiASACRw0GQRshEAzgAwsCQCABIgEgAkcNAEEWIRAM4AMLIABBioCAgAA2AgggACABNgIEIAAgASACELiAgIAAIhAN6gEgASEBQSAhEAzGAwsCQCABIgEgAkYNAANAAkAgAS0AAEHwt4CAAGotAAAiEEECRg0AAkAgEEF/ag4E5QHsAQDrAewBCyABQQFqIQFBCCEQDMgDCyABQQFqIgEgAkcNAAtBFSEQDN8DC0EVIRAM3gMLA0ACQCABLQAAQfC5gIAAai0AACIQQQJGDQAgEEF/ag4E3gHsAeAB6wHsAQsgAUEBaiIBIAJHDQALQRghEAzdAwsCQCABIgEgAkYNACAAQYuAgIAANgIIIAAgATYCBCABIQFBByEQDMQDC0EZIRAM3AMLIAFBAWohAQwCCwJAIAEiFCACRw0AQRohEAzbAwsgFCEBAkAgFC0AAEFzag4U3QLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gIA7gILQQAhECAAQQA2AhwgAEGvi4CAADYCECAAQQI2AgwgACAUQQFqNgIUDNoDCwJAIAEtAAAiEEE7Rg0AIBBBDUcN6AEgAUEBaiEBDOUCCyABQQFqIQELQSIhEAy/AwsCQCABIhAgAkcNAEEcIRAM2AMLQgAhESAQIQEgEC0AAEFQag435wHmAQECAwQFBgcIAAAAAAAAAAkKCwwNDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxAREhMUAAtBHiEQDL0DC0ICIREM5QELQgMhEQzkAQtCBCERDOMBC0IFIREM4gELQgYhEQzhAQtCByERDOABC0IIIREM3wELQgkhEQzeAQtCCiERDN0BC0ILIREM3AELQgwhEQzbAQtCDSERDNoBC0IOIREM2QELQg8hEQzYAQtCCiERDNcBC0ILIREM1gELQgwhEQzVAQtCDSERDNQBC0IOIREM0wELQg8hEQzSAQtCACERAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQLQAAQVBqDjflAeQBAAECAwQFBgfmAeYB5gHmAeYB5gHmAQgJCgsMDeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gEODxAREhPmAQtCAiERDOQBC0IDIREM4wELQgQhEQziAQtCBSERDOEBC0IGIREM4AELQgchEQzfAQtCCCERDN4BC0IJIREM3QELQgohEQzcAQtCCyERDNsBC0IMIREM2gELQg0hEQzZAQtCDiERDNgBC0IPIREM1wELQgohEQzWAQtCCyERDNUBC0IMIREM1AELQg0hEQzTAQtCDiERDNIBC0IPIREM0QELIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN0gFBHyEQDMADCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEkIRAMpwMLQSAhEAy/AwsgACABIhAgAhC+gICAAEF/ag4FtgEAxQIB0QHSAQtBESEQDKQDCyAAQQE6AC8gECEBDLsDCyABIgEgAkcN0gFBJCEQDLsDCyABIg0gAkcNHkHGACEQDLoDCyAAIAEiASACELKAgIAAIhAN1AEgASEBDLUBCyABIhAgAkcNJkHQACEQDLgDCwJAIAEiASACRw0AQSghEAy4AwsgAEEANgIEIABBjICAgAA2AgggACABIAEQsYCAgAAiEA3TASABIQEM2AELAkAgASIQIAJHDQBBKSEQDLcDCyAQLQAAIgFBIEYNFCABQQlHDdMBIBBBAWohAQwVCwJAIAEiASACRg0AIAFBAWohAQwXC0EqIRAMtQMLAkAgASIQIAJHDQBBKyEQDLUDCwJAIBAtAAAiAUEJRg0AIAFBIEcN1QELIAAtACxBCEYN0wEgECEBDJEDCwJAIAEiASACRw0AQSwhEAy0AwsgAS0AAEEKRw3VASABQQFqIQEMyQILIAEiDiACRw3VAUEvIRAMsgMLA0ACQCABLQAAIhBBIEYNAAJAIBBBdmoOBADcAdwBANoBCyABIQEM4AELIAFBAWoiASACRw0AC0ExIRAMsQMLQTIhECABIhQgAkYNsAMgAiAUayAAKAIAIgFqIRUgFCABa0EDaiEWAkADQCAULQAAIhdBIHIgFyAXQb9/akH/AXFBGkkbQf8BcSABQfC7gIAAai0AAEcNAQJAIAFBA0cNAEEGIQEMlgMLIAFBAWohASAUQQFqIhQgAkcNAAsgACAVNgIADLEDCyAAQQA2AgAgFCEBDNkBC0EzIRAgASIUIAJGDa8DIAIgFGsgACgCACIBaiEVIBQgAWtBCGohFgJAA0AgFC0AACIXQSByIBcgF0G/f2pB/wFxQRpJG0H/AXEgAUH0u4CAAGotAABHDQECQCABQQhHDQBBBSEBDJUDCyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFTYCAAywAwsgAEEANgIAIBQhAQzYAQtBNCEQIAEiFCACRg2uAyACIBRrIAAoAgAiAWohFSAUIAFrQQVqIRYCQANAIBQtAAAiF0EgciAXIBdBv39qQf8BcUEaSRtB/wFxIAFB0MKAgABqLQAARw0BAkAgAUEFRw0AQQchAQyUAwsgAUEBaiEBIBRBAWoiFCACRw0ACyAAIBU2AgAMrwMLIABBADYCACAUIQEM1wELAkAgASIBIAJGDQADQAJAIAEtAABBgL6AgABqLQAAIhBBAUYNACAQQQJGDQogASEBDN0BCyABQQFqIgEgAkcNAAtBMCEQDK4DC0EwIRAMrQMLAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgRg0AIBBBdmoOBNkB2gHaAdkB2gELIAFBAWoiASACRw0AC0E4IRAMrQMLQTghEAysAwsDQAJAIAEtAAAiEEEgRg0AIBBBCUcNAwsgAUEBaiIBIAJHDQALQTwhEAyrAwsDQAJAIAEtAAAiEEEgRg0AAkACQCAQQXZqDgTaAQEB2gEACyAQQSxGDdsBCyABIQEMBAsgAUEBaiIBIAJHDQALQT8hEAyqAwsgASEBDNsBC0HAACEQIAEiFCACRg2oAyACIBRrIAAoAgAiAWohFiAUIAFrQQZqIRcCQANAIBQtAABBIHIgAUGAwICAAGotAABHDQEgAUEGRg2OAyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAypAwsgAEEANgIAIBQhAQtBNiEQDI4DCwJAIAEiDyACRw0AQcEAIRAMpwMLIABBjICAgAA2AgggACAPNgIEIA8hASAALQAsQX9qDgTNAdUB1wHZAYcDCyABQQFqIQEMzAELAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgciAQIBBBv39qQf8BcUEaSRtB/wFxIhBBCUYNACAQQSBGDQACQAJAAkACQCAQQZ1/ag4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIRAMkQMLIAFBAWohAUEyIRAMkAMLIAFBAWohAUEzIRAMjwMLIAEhAQzQAQsgAUEBaiIBIAJHDQALQTUhEAylAwtBNSEQDKQDCwJAIAEiASACRg0AA0ACQCABLQAAQYC8gIAAai0AAEEBRg0AIAEhAQzTAQsgAUEBaiIBIAJHDQALQT0hEAykAwtBPSEQDKMDCyAAIAEiASACELCAgIAAIhAN1gEgASEBDAELIBBBAWohAQtBPCEQDIcDCwJAIAEiASACRw0AQcIAIRAMoAMLAkADQAJAIAEtAABBd2oOGAAC/gL+AoQD/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4CAP4CCyABQQFqIgEgAkcNAAtBwgAhEAygAwsgAUEBaiEBIAAtAC1BAXFFDb0BIAEhAQtBLCEQDIUDCyABIgEgAkcN0wFBxAAhEAydAwsDQAJAIAEtAABBkMCAgABqLQAAQQFGDQAgASEBDLcCCyABQQFqIgEgAkcNAAtBxQAhEAycAwsgDS0AACIQQSBGDbMBIBBBOkcNgQMgACgCBCEBIABBADYCBCAAIAEgDRCvgICAACIBDdABIA1BAWohAQyzAgtBxwAhECABIg0gAkYNmgMgAiANayAAKAIAIgFqIRYgDSABa0EFaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGQwoCAAGotAABHDYADIAFBBUYN9AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMmgMLQcgAIRAgASINIAJGDZkDIAIgDWsgACgCACIBaiEWIA0gAWtBCWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBlsKAgABqLQAARw3/AgJAIAFBCUcNAEECIQEM9QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJkDCwJAIAEiDSACRw0AQckAIRAMmQMLAkACQCANLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwCAA4ADgAOAA4ADAYADCyANQQFqIQFBPiEQDIADCyANQQFqIQFBPyEQDP8CC0HKACEQIAEiDSACRg2XAyACIA1rIAAoAgAiAWohFiANIAFrQQFqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQaDCgIAAai0AAEcN/QIgAUEBRg3wAiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyXAwtBywAhECABIg0gAkYNlgMgAiANayAAKAIAIgFqIRYgDSABa0EOaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGiwoCAAGotAABHDfwCIAFBDkYN8AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMlgMLQcwAIRAgASINIAJGDZUDIAIgDWsgACgCACIBaiEWIA0gAWtBD2ohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBwMKAgABqLQAARw37AgJAIAFBD0cNAEEDIQEM8QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJUDC0HNACEQIAEiDSACRg2UAyACIA1rIAAoAgAiAWohFiANIAFrQQVqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQdDCgIAAai0AAEcN+gICQCABQQVHDQBBBCEBDPACCyABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyUAwsCQCABIg0gAkcNAEHOACEQDJQDCwJAAkACQAJAIA0tAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAP0C/QL9Av0C/QL9Av0C/QL9Av0C/QL9AgH9Av0C/QICA/0CCyANQQFqIQFBwQAhEAz9AgsgDUEBaiEBQcIAIRAM/AILIA1BAWohAUHDACEQDPsCCyANQQFqIQFBxAAhEAz6AgsCQCABIgEgAkYNACAAQY2AgIAANgIIIAAgATYCBCABIQFBxQAhEAz6AgtBzwAhEAySAwsgECEBAkACQCAQLQAAQXZqDgQBqAKoAgCoAgsgEEEBaiEBC0EnIRAM+AILAkAgASIBIAJHDQBB0QAhEAyRAwsCQCABLQAAQSBGDQAgASEBDI0BCyABQQFqIQEgAC0ALUEBcUUNxwEgASEBDIwBCyABIhcgAkcNyAFB0gAhEAyPAwtB0wAhECABIhQgAkYNjgMgAiAUayAAKAIAIgFqIRYgFCABa0EBaiEXA0AgFC0AACABQdbCgIAAai0AAEcNzAEgAUEBRg3HASABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAyOAwsCQCABIgEgAkcNAEHVACEQDI4DCyABLQAAQQpHDcwBIAFBAWohAQzHAQsCQCABIgEgAkcNAEHWACEQDI0DCwJAAkAgAS0AAEF2ag4EAM0BzQEBzQELIAFBAWohAQzHAQsgAUEBaiEBQcoAIRAM8wILIAAgASIBIAIQroCAgAAiEA3LASABIQFBzQAhEAzyAgsgAC0AKUEiRg2FAwymAgsCQCABIgEgAkcNAEHbACEQDIoDC0EAIRRBASEXQQEhFkEAIRACQAJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4K1AHTAQABAgMEBQYI1QELQQIhEAwGC0EDIRAMBQtBBCEQDAQLQQUhEAwDC0EGIRAMAgtBByEQDAELQQghEAtBACEXQQAhFkEAIRQMzAELQQkhEEEBIRRBACEXQQAhFgzLAQsCQCABIgEgAkcNAEHdACEQDIkDCyABLQAAQS5HDcwBIAFBAWohAQymAgsgASIBIAJHDcwBQd8AIRAMhwMLAkAgASIBIAJGDQAgAEGOgICAADYCCCAAIAE2AgQgASEBQdAAIRAM7gILQeAAIRAMhgMLQeEAIRAgASIBIAJGDYUDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHiwoCAAGotAABHDc0BIBRBA0YNzAEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhQMLQeIAIRAgASIBIAJGDYQDIAIgAWsgACgCACIUaiEWIAEgFGtBAmohFwNAIAEtAAAgFEHmwoCAAGotAABHDcwBIBRBAkYNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhAMLQeMAIRAgASIBIAJGDYMDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHpwoCAAGotAABHDcsBIBRBA0YNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMgwMLAkAgASIBIAJHDQBB5QAhEAyDAwsgACABQQFqIgEgAhCogICAACIQDc0BIAEhAUHWACEQDOkCCwJAIAEiASACRg0AA0ACQCABLQAAIhBBIEYNAAJAAkACQCAQQbh/ag4LAAHPAc8BzwHPAc8BzwHPAc8BAs8BCyABQQFqIQFB0gAhEAztAgsgAUEBaiEBQdMAIRAM7AILIAFBAWohAUHUACEQDOsCCyABQQFqIgEgAkcNAAtB5AAhEAyCAwtB5AAhEAyBAwsDQAJAIAEtAABB8MKAgABqLQAAIhBBAUYNACAQQX5qDgPPAdAB0QHSAQsgAUEBaiIBIAJHDQALQeYAIRAMgAMLAkAgASIBIAJGDQAgAUEBaiEBDAMLQecAIRAM/wILA0ACQCABLQAAQfDEgIAAai0AACIQQQFGDQACQCAQQX5qDgTSAdMB1AEA1QELIAEhAUHXACEQDOcCCyABQQFqIgEgAkcNAAtB6AAhEAz+AgsCQCABIgEgAkcNAEHpACEQDP4CCwJAIAEtAAAiEEF2ag4augHVAdUBvAHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHKAdUB1QEA0wELIAFBAWohAQtBBiEQDOMCCwNAAkAgAS0AAEHwxoCAAGotAABBAUYNACABIQEMngILIAFBAWoiASACRw0AC0HqACEQDPsCCwJAIAEiASACRg0AIAFBAWohAQwDC0HrACEQDPoCCwJAIAEiASACRw0AQewAIRAM+gILIAFBAWohAQwBCwJAIAEiASACRw0AQe0AIRAM+QILIAFBAWohAQtBBCEQDN4CCwJAIAEiFCACRw0AQe4AIRAM9wILIBQhAQJAAkACQCAULQAAQfDIgIAAai0AAEF/ag4H1AHVAdYBAJwCAQLXAQsgFEEBaiEBDAoLIBRBAWohAQzNAQtBACEQIABBADYCHCAAQZuSgIAANgIQIABBBzYCDCAAIBRBAWo2AhQM9gILAkADQAJAIAEtAABB8MiAgABqLQAAIhBBBEYNAAJAAkAgEEF/ag4H0gHTAdQB2QEABAHZAQsgASEBQdoAIRAM4AILIAFBAWohAUHcACEQDN8CCyABQQFqIgEgAkcNAAtB7wAhEAz2AgsgAUEBaiEBDMsBCwJAIAEiFCACRw0AQfAAIRAM9QILIBQtAABBL0cN1AEgFEEBaiEBDAYLAkAgASIUIAJHDQBB8QAhEAz0AgsCQCAULQAAIgFBL0cNACAUQQFqIQFB3QAhEAzbAgsgAUF2aiIEQRZLDdMBQQEgBHRBiYCAAnFFDdMBDMoCCwJAIAEiASACRg0AIAFBAWohAUHeACEQDNoCC0HyACEQDPICCwJAIAEiFCACRw0AQfQAIRAM8gILIBQhAQJAIBQtAABB8MyAgABqLQAAQX9qDgPJApQCANQBC0HhACEQDNgCCwJAIAEiFCACRg0AA0ACQCAULQAAQfDKgIAAai0AACIBQQNGDQACQCABQX9qDgLLAgDVAQsgFCEBQd8AIRAM2gILIBRBAWoiFCACRw0AC0HzACEQDPECC0HzACEQDPACCwJAIAEiASACRg0AIABBj4CAgAA2AgggACABNgIEIAEhAUHgACEQDNcCC0H1ACEQDO8CCwJAIAEiASACRw0AQfYAIRAM7wILIABBj4CAgAA2AgggACABNgIEIAEhAQtBAyEQDNQCCwNAIAEtAABBIEcNwwIgAUEBaiIBIAJHDQALQfcAIRAM7AILAkAgASIBIAJHDQBB+AAhEAzsAgsgAS0AAEEgRw3OASABQQFqIQEM7wELIAAgASIBIAIQrICAgAAiEA3OASABIQEMjgILAkAgASIEIAJHDQBB+gAhEAzqAgsgBC0AAEHMAEcN0QEgBEEBaiEBQRMhEAzPAQsCQCABIgQgAkcNAEH7ACEQDOkCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRADQCAELQAAIAFB8M6AgABqLQAARw3QASABQQVGDc4BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQfsAIRAM6AILAkAgASIEIAJHDQBB/AAhEAzoAgsCQAJAIAQtAABBvX9qDgwA0QHRAdEB0QHRAdEB0QHRAdEB0QEB0QELIARBAWohAUHmACEQDM8CCyAEQQFqIQFB5wAhEAzOAgsCQCABIgQgAkcNAEH9ACEQDOcCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDc8BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH9ACEQDOcCCyAAQQA2AgAgEEEBaiEBQRAhEAzMAQsCQCABIgQgAkcNAEH+ACEQDOYCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUH2zoCAAGotAABHDc4BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH+ACEQDOYCCyAAQQA2AgAgEEEBaiEBQRYhEAzLAQsCQCABIgQgAkcNAEH/ACEQDOUCCyACIARrIAAoAgAiAWohFCAEIAFrQQNqIRACQANAIAQtAAAgAUH8zoCAAGotAABHDc0BIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH/ACEQDOUCCyAAQQA2AgAgEEEBaiEBQQUhEAzKAQsCQCABIgQgAkcNAEGAASEQDOQCCyAELQAAQdkARw3LASAEQQFqIQFBCCEQDMkBCwJAIAEiBCACRw0AQYEBIRAM4wILAkACQCAELQAAQbJ/ag4DAMwBAcwBCyAEQQFqIQFB6wAhEAzKAgsgBEEBaiEBQewAIRAMyQILAkAgASIEIAJHDQBBggEhEAziAgsCQAJAIAQtAABBuH9qDggAywHLAcsBywHLAcsBAcsBCyAEQQFqIQFB6gAhEAzJAgsgBEEBaiEBQe0AIRAMyAILAkAgASIEIAJHDQBBgwEhEAzhAgsgAiAEayAAKAIAIgFqIRAgBCABa0ECaiEUAkADQCAELQAAIAFBgM+AgABqLQAARw3JASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBA2AgBBgwEhEAzhAgtBACEQIABBADYCACAUQQFqIQEMxgELAkAgASIEIAJHDQBBhAEhEAzgAgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBg8+AgABqLQAARw3IASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBhAEhEAzgAgsgAEEANgIAIBBBAWohAUEjIRAMxQELAkAgASIEIAJHDQBBhQEhEAzfAgsCQAJAIAQtAABBtH9qDggAyAHIAcgByAHIAcgBAcgBCyAEQQFqIQFB7wAhEAzGAgsgBEEBaiEBQfAAIRAMxQILAkAgASIEIAJHDQBBhgEhEAzeAgsgBC0AAEHFAEcNxQEgBEEBaiEBDIMCCwJAIAEiBCACRw0AQYcBIRAM3QILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQYjPgIAAai0AAEcNxQEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYcBIRAM3QILIABBADYCACAQQQFqIQFBLSEQDMIBCwJAIAEiBCACRw0AQYgBIRAM3AILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNxAEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYgBIRAM3AILIABBADYCACAQQQFqIQFBKSEQDMEBCwJAIAEiASACRw0AQYkBIRAM2wILQQEhECABLQAAQd8ARw3AASABQQFqIQEMgQILAkAgASIEIAJHDQBBigEhEAzaAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQA0AgBC0AACABQYzPgIAAai0AAEcNwQEgAUEBRg2vAiABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGKASEQDNkCCwJAIAEiBCACRw0AQYsBIRAM2QILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQY7PgIAAai0AAEcNwQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYsBIRAM2QILIABBADYCACAQQQFqIQFBAiEQDL4BCwJAIAEiBCACRw0AQYwBIRAM2AILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNwAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYwBIRAM2AILIABBADYCACAQQQFqIQFBHyEQDL0BCwJAIAEiBCACRw0AQY0BIRAM1wILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfLPgIAAai0AAEcNvwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQY0BIRAM1wILIABBADYCACAQQQFqIQFBCSEQDLwBCwJAIAEiBCACRw0AQY4BIRAM1gILAkACQCAELQAAQbd/ag4HAL8BvwG/Ab8BvwEBvwELIARBAWohAUH4ACEQDL0CCyAEQQFqIQFB+QAhEAy8AgsCQCABIgQgAkcNAEGPASEQDNUCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGRz4CAAGotAABHDb0BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGPASEQDNUCCyAAQQA2AgAgEEEBaiEBQRghEAy6AQsCQCABIgQgAkcNAEGQASEQDNQCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUGXz4CAAGotAABHDbwBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGQASEQDNQCCyAAQQA2AgAgEEEBaiEBQRchEAy5AQsCQCABIgQgAkcNAEGRASEQDNMCCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUGaz4CAAGotAABHDbsBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGRASEQDNMCCyAAQQA2AgAgEEEBaiEBQRUhEAy4AQsCQCABIgQgAkcNAEGSASEQDNICCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGhz4CAAGotAABHDboBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGSASEQDNICCyAAQQA2AgAgEEEBaiEBQR4hEAy3AQsCQCABIgQgAkcNAEGTASEQDNECCyAELQAAQcwARw24ASAEQQFqIQFBCiEQDLYBCwJAIAQgAkcNAEGUASEQDNACCwJAAkAgBC0AAEG/f2oODwC5AbkBuQG5AbkBuQG5AbkBuQG5AbkBuQG5AQG5AQsgBEEBaiEBQf4AIRAMtwILIARBAWohAUH/ACEQDLYCCwJAIAQgAkcNAEGVASEQDM8CCwJAAkAgBC0AAEG/f2oOAwC4AQG4AQsgBEEBaiEBQf0AIRAMtgILIARBAWohBEGAASEQDLUCCwJAIAQgAkcNAEGWASEQDM4CCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUGnz4CAAGotAABHDbYBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGWASEQDM4CCyAAQQA2AgAgEEEBaiEBQQshEAyzAQsCQCAEIAJHDQBBlwEhEAzNAgsCQAJAAkACQCAELQAAQVNqDiMAuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AQG4AbgBuAG4AbgBArgBuAG4AQO4AQsgBEEBaiEBQfsAIRAMtgILIARBAWohAUH8ACEQDLUCCyAEQQFqIQRBgQEhEAy0AgsgBEEBaiEEQYIBIRAMswILAkAgBCACRw0AQZgBIRAMzAILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQanPgIAAai0AAEcNtAEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZgBIRAMzAILIABBADYCACAQQQFqIQFBGSEQDLEBCwJAIAQgAkcNAEGZASEQDMsCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGuz4CAAGotAABHDbMBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGZASEQDMsCCyAAQQA2AgAgEEEBaiEBQQYhEAywAQsCQCAEIAJHDQBBmgEhEAzKAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBtM+AgABqLQAARw2yASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmgEhEAzKAgsgAEEANgIAIBBBAWohAUEcIRAMrwELAkAgBCACRw0AQZsBIRAMyQILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbbPgIAAai0AAEcNsQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZsBIRAMyQILIABBADYCACAQQQFqIQFBJyEQDK4BCwJAIAQgAkcNAEGcASEQDMgCCwJAAkAgBC0AAEGsf2oOAgABsQELIARBAWohBEGGASEQDK8CCyAEQQFqIQRBhwEhEAyuAgsCQCAEIAJHDQBBnQEhEAzHAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBuM+AgABqLQAARw2vASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBnQEhEAzHAgsgAEEANgIAIBBBAWohAUEmIRAMrAELAkAgBCACRw0AQZ4BIRAMxgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbrPgIAAai0AAEcNrgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZ4BIRAMxgILIABBADYCACAQQQFqIQFBAyEQDKsBCwJAIAQgAkcNAEGfASEQDMUCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDa0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGfASEQDMUCCyAAQQA2AgAgEEEBaiEBQQwhEAyqAQsCQCAEIAJHDQBBoAEhEAzEAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFBvM+AgABqLQAARw2sASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBoAEhEAzEAgsgAEEANgIAIBBBAWohAUENIRAMqQELAkAgBCACRw0AQaEBIRAMwwILAkACQCAELQAAQbp/ag4LAKwBrAGsAawBrAGsAawBrAGsAQGsAQsgBEEBaiEEQYsBIRAMqgILIARBAWohBEGMASEQDKkCCwJAIAQgAkcNAEGiASEQDMICCyAELQAAQdAARw2pASAEQQFqIQQM6QELAkAgBCACRw0AQaMBIRAMwQILAkACQCAELQAAQbd/ag4HAaoBqgGqAaoBqgEAqgELIARBAWohBEGOASEQDKgCCyAEQQFqIQFBIiEQDKYBCwJAIAQgAkcNAEGkASEQDMACCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHAz4CAAGotAABHDagBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGkASEQDMACCyAAQQA2AgAgEEEBaiEBQR0hEAylAQsCQCAEIAJHDQBBpQEhEAy/AgsCQAJAIAQtAABBrn9qDgMAqAEBqAELIARBAWohBEGQASEQDKYCCyAEQQFqIQFBBCEQDKQBCwJAIAQgAkcNAEGmASEQDL4CCwJAAkACQAJAAkAgBC0AAEG/f2oOFQCqAaoBqgGqAaoBqgGqAaoBqgGqAQGqAaoBAqoBqgEDqgGqAQSqAQsgBEEBaiEEQYgBIRAMqAILIARBAWohBEGJASEQDKcCCyAEQQFqIQRBigEhEAymAgsgBEEBaiEEQY8BIRAMpQILIARBAWohBEGRASEQDKQCCwJAIAQgAkcNAEGnASEQDL0CCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDaUBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGnASEQDL0CCyAAQQA2AgAgEEEBaiEBQREhEAyiAQsCQCAEIAJHDQBBqAEhEAy8AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBws+AgABqLQAARw2kASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBqAEhEAy8AgsgAEEANgIAIBBBAWohAUEsIRAMoQELAkAgBCACRw0AQakBIRAMuwILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQcXPgIAAai0AAEcNowEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQakBIRAMuwILIABBADYCACAQQQFqIQFBKyEQDKABCwJAIAQgAkcNAEGqASEQDLoCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHKz4CAAGotAABHDaIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGqASEQDLoCCyAAQQA2AgAgEEEBaiEBQRQhEAyfAQsCQCAEIAJHDQBBqwEhEAy5AgsCQAJAAkACQCAELQAAQb5/ag4PAAECpAGkAaQBpAGkAaQBpAGkAaQBpAGkAQOkAQsgBEEBaiEEQZMBIRAMogILIARBAWohBEGUASEQDKECCyAEQQFqIQRBlQEhEAygAgsgBEEBaiEEQZYBIRAMnwILAkAgBCACRw0AQawBIRAMuAILIAQtAABBxQBHDZ8BIARBAWohBAzgAQsCQCAEIAJHDQBBrQEhEAy3AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBzc+AgABqLQAARw2fASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBrQEhEAy3AgsgAEEANgIAIBBBAWohAUEOIRAMnAELAkAgBCACRw0AQa4BIRAMtgILIAQtAABB0ABHDZ0BIARBAWohAUElIRAMmwELAkAgBCACRw0AQa8BIRAMtQILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNnQEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQa8BIRAMtQILIABBADYCACAQQQFqIQFBKiEQDJoBCwJAIAQgAkcNAEGwASEQDLQCCwJAAkAgBC0AAEGrf2oOCwCdAZ0BnQGdAZ0BnQGdAZ0BnQEBnQELIARBAWohBEGaASEQDJsCCyAEQQFqIQRBmwEhEAyaAgsCQCAEIAJHDQBBsQEhEAyzAgsCQAJAIAQtAABBv39qDhQAnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBAZwBCyAEQQFqIQRBmQEhEAyaAgsgBEEBaiEEQZwBIRAMmQILAkAgBCACRw0AQbIBIRAMsgILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQdnPgIAAai0AAEcNmgEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbIBIRAMsgILIABBADYCACAQQQFqIQFBISEQDJcBCwJAIAQgAkcNAEGzASEQDLECCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUHdz4CAAGotAABHDZkBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGzASEQDLECCyAAQQA2AgAgEEEBaiEBQRohEAyWAQsCQCAEIAJHDQBBtAEhEAywAgsCQAJAAkAgBC0AAEG7f2oOEQCaAZoBmgGaAZoBmgGaAZoBmgEBmgGaAZoBmgGaAQKaAQsgBEEBaiEEQZ0BIRAMmAILIARBAWohBEGeASEQDJcCCyAEQQFqIQRBnwEhEAyWAgsCQCAEIAJHDQBBtQEhEAyvAgsgAiAEayAAKAIAIgFqIRQgBCABa0EFaiEQAkADQCAELQAAIAFB5M+AgABqLQAARw2XASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBtQEhEAyvAgsgAEEANgIAIBBBAWohAUEoIRAMlAELAkAgBCACRw0AQbYBIRAMrgILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQerPgIAAai0AAEcNlgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbYBIRAMrgILIABBADYCACAQQQFqIQFBByEQDJMBCwJAIAQgAkcNAEG3ASEQDK0CCwJAAkAgBC0AAEG7f2oODgCWAZYBlgGWAZYBlgGWAZYBlgGWAZYBlgEBlgELIARBAWohBEGhASEQDJQCCyAEQQFqIQRBogEhEAyTAgsCQCAEIAJHDQBBuAEhEAysAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFB7c+AgABqLQAARw2UASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBuAEhEAysAgsgAEEANgIAIBBBAWohAUESIRAMkQELAkAgBCACRw0AQbkBIRAMqwILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNkwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbkBIRAMqwILIABBADYCACAQQQFqIQFBICEQDJABCwJAIAQgAkcNAEG6ASEQDKoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHyz4CAAGotAABHDZIBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG6ASEQDKoCCyAAQQA2AgAgEEEBaiEBQQ8hEAyPAQsCQCAEIAJHDQBBuwEhEAypAgsCQAJAIAQtAABBt39qDgcAkgGSAZIBkgGSAQGSAQsgBEEBaiEEQaUBIRAMkAILIARBAWohBEGmASEQDI8CCwJAIAQgAkcNAEG8ASEQDKgCCyACIARrIAAoAgAiAWohFCAEIAFrQQdqIRACQANAIAQtAAAgAUH0z4CAAGotAABHDZABIAFBB0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG8ASEQDKgCCyAAQQA2AgAgEEEBaiEBQRshEAyNAQsCQCAEIAJHDQBBvQEhEAynAgsCQAJAAkAgBC0AAEG+f2oOEgCRAZEBkQGRAZEBkQGRAZEBkQEBkQGRAZEBkQGRAZEBApEBCyAEQQFqIQRBpAEhEAyPAgsgBEEBaiEEQacBIRAMjgILIARBAWohBEGoASEQDI0CCwJAIAQgAkcNAEG+ASEQDKYCCyAELQAAQc4ARw2NASAEQQFqIQQMzwELAkAgBCACRw0AQb8BIRAMpQILAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AAEG/f2oOFQABAgOcAQQFBpwBnAGcAQcICQoLnAEMDQ4PnAELIARBAWohAUHoACEQDJoCCyAEQQFqIQFB6QAhEAyZAgsgBEEBaiEBQe4AIRAMmAILIARBAWohAUHyACEQDJcCCyAEQQFqIQFB8wAhEAyWAgsgBEEBaiEBQfYAIRAMlQILIARBAWohAUH3ACEQDJQCCyAEQQFqIQFB+gAhEAyTAgsgBEEBaiEEQYMBIRAMkgILIARBAWohBEGEASEQDJECCyAEQQFqIQRBhQEhEAyQAgsgBEEBaiEEQZIBIRAMjwILIARBAWohBEGYASEQDI4CCyAEQQFqIQRBoAEhEAyNAgsgBEEBaiEEQaMBIRAMjAILIARBAWohBEGqASEQDIsCCwJAIAQgAkYNACAAQZCAgIAANgIIIAAgBDYCBEGrASEQDIsCC0HAASEQDKMCCyAAIAUgAhCqgICAACIBDYsBIAUhAQxcCwJAIAYgAkYNACAGQQFqIQUMjQELQcIBIRAMoQILA0ACQCAQLQAAQXZqDgSMAQAAjwEACyAQQQFqIhAgAkcNAAtBwwEhEAygAgsCQCAHIAJGDQAgAEGRgICAADYCCCAAIAc2AgQgByEBQQEhEAyHAgtBxAEhEAyfAgsCQCAHIAJHDQBBxQEhEAyfAgsCQAJAIActAABBdmoOBAHOAc4BAM4BCyAHQQFqIQYMjQELIAdBAWohBQyJAQsCQCAHIAJHDQBBxgEhEAyeAgsCQAJAIActAABBdmoOFwGPAY8BAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAQCPAQsgB0EBaiEHC0GwASEQDIQCCwJAIAggAkcNAEHIASEQDJ0CCyAILQAAQSBHDY0BIABBADsBMiAIQQFqIQFBswEhEAyDAgsgASEXAkADQCAXIgcgAkYNASAHLQAAQVBqQf8BcSIQQQpPDcwBAkAgAC8BMiIUQZkzSw0AIAAgFEEKbCIUOwEyIBBB//8DcyAUQf7/A3FJDQAgB0EBaiEXIAAgFCAQaiIQOwEyIBBB//8DcUHoB0kNAQsLQQAhECAAQQA2AhwgAEHBiYCAADYCECAAQQ02AgwgACAHQQFqNgIUDJwCC0HHASEQDJsCCyAAIAggAhCugICAACIQRQ3KASAQQRVHDYwBIABByAE2AhwgACAINgIUIABByZeAgAA2AhAgAEEVNgIMQQAhEAyaAgsCQCAJIAJHDQBBzAEhEAyaAgtBACEUQQEhF0EBIRZBACEQAkACQAJAAkACQAJAAkACQAJAIAktAABBUGoOCpYBlQEAAQIDBAUGCJcBC0ECIRAMBgtBAyEQDAULQQQhEAwEC0EFIRAMAwtBBiEQDAILQQchEAwBC0EIIRALQQAhF0EAIRZBACEUDI4BC0EJIRBBASEUQQAhF0EAIRYMjQELAkAgCiACRw0AQc4BIRAMmQILIAotAABBLkcNjgEgCkEBaiEJDMoBCyALIAJHDY4BQdABIRAMlwILAkAgCyACRg0AIABBjoCAgAA2AgggACALNgIEQbcBIRAM/gELQdEBIRAMlgILAkAgBCACRw0AQdIBIRAMlgILIAIgBGsgACgCACIQaiEUIAQgEGtBBGohCwNAIAQtAAAgEEH8z4CAAGotAABHDY4BIBBBBEYN6QEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB0gEhEAyVAgsgACAMIAIQrICAgAAiAQ2NASAMIQEMuAELAkAgBCACRw0AQdQBIRAMlAILIAIgBGsgACgCACIQaiEUIAQgEGtBAWohDANAIAQtAAAgEEGB0ICAAGotAABHDY8BIBBBAUYNjgEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB1AEhEAyTAgsCQCAEIAJHDQBB1gEhEAyTAgsgAiAEayAAKAIAIhBqIRQgBCAQa0ECaiELA0AgBC0AACAQQYPQgIAAai0AAEcNjgEgEEECRg2QASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHWASEQDJICCwJAIAQgAkcNAEHXASEQDJICCwJAAkAgBC0AAEG7f2oOEACPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BAY8BCyAEQQFqIQRBuwEhEAz5AQsgBEEBaiEEQbwBIRAM+AELAkAgBCACRw0AQdgBIRAMkQILIAQtAABByABHDYwBIARBAWohBAzEAQsCQCAEIAJGDQAgAEGQgICAADYCCCAAIAQ2AgRBvgEhEAz3AQtB2QEhEAyPAgsCQCAEIAJHDQBB2gEhEAyPAgsgBC0AAEHIAEYNwwEgAEEBOgAoDLkBCyAAQQI6AC8gACAEIAIQpoCAgAAiEA2NAUHCASEQDPQBCyAALQAoQX9qDgK3AbkBuAELA0ACQCAELQAAQXZqDgQAjgGOAQCOAQsgBEEBaiIEIAJHDQALQd0BIRAMiwILIABBADoALyAALQAtQQRxRQ2EAgsgAEEAOgAvIABBAToANCABIQEMjAELIBBBFUYN2gEgAEEANgIcIAAgATYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAMiAILAkAgACAQIAIQtICAgAAiBA0AIBAhAQyBAgsCQCAEQRVHDQAgAEEDNgIcIAAgEDYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMiAILIABBADYCHCAAIBA2AhQgAEGnjoCAADYCECAAQRI2AgxBACEQDIcCCyAQQRVGDdYBIABBADYCHCAAIAE2AhQgAEHajYCAADYCECAAQRQ2AgxBACEQDIYCCyAAKAIEIRcgAEEANgIEIBAgEadqIhYhASAAIBcgECAWIBQbIhAQtYCAgAAiFEUNjQEgAEEHNgIcIAAgEDYCFCAAIBQ2AgxBACEQDIUCCyAAIAAvATBBgAFyOwEwIAEhAQtBKiEQDOoBCyAQQRVGDdEBIABBADYCHCAAIAE2AhQgAEGDjICAADYCECAAQRM2AgxBACEQDIICCyAQQRVGDc8BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDIECCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyNAQsgAEEMNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDIACCyAQQRVGDcwBIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDP8BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyMAQsgAEENNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDP4BCyAQQRVGDckBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDP0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyLAQsgAEEONgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPwBCyAAQQA2AhwgACABNgIUIABBwJWAgAA2AhAgAEECNgIMQQAhEAz7AQsgEEEVRg3FASAAQQA2AhwgACABNgIUIABBxoyAgAA2AhAgAEEjNgIMQQAhEAz6AQsgAEEQNgIcIAAgATYCFCAAIBA2AgxBACEQDPkBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQzxAQsgAEERNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPgBCyAQQRVGDcEBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDPcBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyIAQsgAEETNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPYBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQztAQsgAEEUNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPUBCyAQQRVGDb0BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDPQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyGAQsgAEEWNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPMBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQt4CAgAAiBA0AIAFBAWohAQzpAQsgAEEXNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPIBCyAAQQA2AhwgACABNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzxAQtCASERCyAQQQFqIQECQCAAKQMgIhJC//////////8PVg0AIAAgEkIEhiARhDcDICABIQEMhAELIABBADYCHCAAIAE2AhQgAEGtiYCAADYCECAAQQw2AgxBACEQDO8BCyAAQQA2AhwgACAQNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzuAQsgACgCBCEXIABBADYCBCAQIBGnaiIWIQEgACAXIBAgFiAUGyIQELWAgIAAIhRFDXMgAEEFNgIcIAAgEDYCFCAAIBQ2AgxBACEQDO0BCyAAQQA2AhwgACAQNgIUIABBqpyAgAA2AhAgAEEPNgIMQQAhEAzsAQsgACAQIAIQtICAgAAiAQ0BIBAhAQtBDiEQDNEBCwJAIAFBFUcNACAAQQI2AhwgACAQNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAzqAQsgAEEANgIcIAAgEDYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAM6QELIAFBAWohEAJAIAAvATAiAUGAAXFFDQACQCAAIBAgAhC7gICAACIBDQAgECEBDHALIAFBFUcNugEgAEEFNgIcIAAgEDYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAM6QELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIBA2AhQgAEGWk4CAADYCECAAQQQ2AgxBACEQDOkBCyAAIBAgAhC9gICAABogECEBAkACQAJAAkACQCAAIBAgAhCzgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAQIQELQSYhEAzRAQsgAEEjNgIcIAAgEDYCFCAAQaWWgIAANgIQIABBFTYCDEEAIRAM6QELIABBADYCHCAAIBA2AhQgAEHVi4CAADYCECAAQRE2AgxBACEQDOgBCyAALQAtQQFxRQ0BQcMBIRAMzgELAkAgDSACRg0AA0ACQCANLQAAQSBGDQAgDSEBDMQBCyANQQFqIg0gAkcNAAtBJSEQDOcBC0ElIRAM5gELIAAoAgQhBCAAQQA2AgQgACAEIA0Qr4CAgAAiBEUNrQEgAEEmNgIcIAAgBDYCDCAAIA1BAWo2AhRBACEQDOUBCyAQQRVGDasBIABBADYCHCAAIAE2AhQgAEH9jYCAADYCECAAQR02AgxBACEQDOQBCyAAQSc2AhwgACABNgIUIAAgEDYCDEEAIRAM4wELIBAhAUEBIRQCQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhFAwBC0EEIRQLIABBAToALCAAIAAvATAgFHI7ATALIBAhAQtBKyEQDMoBCyAAQQA2AhwgACAQNgIUIABBq5KAgAA2AhAgAEELNgIMQQAhEAziAQsgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDEEAIRAM4QELIABBADoALCAQIQEMvQELIBAhAUEBIRQCQAJAAkACQAJAIAAtACxBe2oOBAMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEUDAELQQQhFAsgAEEBOgAsIAAgAC8BMCAUcjsBMAsgECEBC0EpIRAMxQELIABBADYCHCAAIAE2AhQgAEHwlICAADYCECAAQQM2AgxBACEQDN0BCwJAIA4tAABBDUcNACAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA5BAWohAQx1CyAAQSw2AhwgACABNgIMIAAgDkEBajYCFEEAIRAM3QELIAAtAC1BAXFFDQFBxAEhEAzDAQsCQCAOIAJHDQBBLSEQDNwBCwJAAkADQAJAIA4tAABBdmoOBAIAAAMACyAOQQFqIg4gAkcNAAtBLSEQDN0BCyAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA4hAQx0CyAAQSw2AhwgACAONgIUIAAgATYCDEEAIRAM3AELIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDkEBaiEBDHMLIABBLDYCHCAAIAE2AgwgACAOQQFqNgIUQQAhEAzbAQsgACgCBCEEIABBADYCBCAAIAQgDhCxgICAACIEDaABIA4hAQzOAQsgEEEsRw0BIAFBAWohEEEBIQECQAJAAkACQAJAIAAtACxBe2oOBAMBAgQACyAQIQEMBAtBAiEBDAELQQQhAQsgAEEBOgAsIAAgAC8BMCABcjsBMCAQIQEMAQsgACAALwEwQQhyOwEwIBAhAQtBOSEQDL8BCyAAQQA6ACwgASEBC0E0IRAMvQELIAAgAC8BMEEgcjsBMCABIQEMAgsgACgCBCEEIABBADYCBAJAIAAgBCABELGAgIAAIgQNACABIQEMxwELIABBNzYCHCAAIAE2AhQgACAENgIMQQAhEAzUAQsgAEEIOgAsIAEhAQtBMCEQDLkBCwJAIAAtAChBAUYNACABIQEMBAsgAC0ALUEIcUUNkwEgASEBDAMLIAAtADBBIHENlAFBxQEhEAy3AQsCQCAPIAJGDQACQANAAkAgDy0AAEFQaiIBQf8BcUEKSQ0AIA8hAUE1IRAMugELIAApAyAiEUKZs+bMmbPmzBlWDQEgACARQgp+IhE3AyAgESABrUL/AYMiEkJ/hVYNASAAIBEgEnw3AyAgD0EBaiIPIAJHDQALQTkhEAzRAQsgACgCBCECIABBADYCBCAAIAIgD0EBaiIEELGAgIAAIgINlQEgBCEBDMMBC0E5IRAMzwELAkAgAC8BMCIBQQhxRQ0AIAAtAChBAUcNACAALQAtQQhxRQ2QAQsgACABQff7A3FBgARyOwEwIA8hAQtBNyEQDLQBCyAAIAAvATBBEHI7ATAMqwELIBBBFUYNiwEgAEEANgIcIAAgATYCFCAAQfCOgIAANgIQIABBHDYCDEEAIRAMywELIABBwwA2AhwgACABNgIMIAAgDUEBajYCFEEAIRAMygELAkAgAS0AAEE6Rw0AIAAoAgQhECAAQQA2AgQCQCAAIBAgARCvgICAACIQDQAgAUEBaiEBDGMLIABBwwA2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAMygELIABBADYCHCAAIAE2AhQgAEGxkYCAADYCECAAQQo2AgxBACEQDMkBCyAAQQA2AhwgACABNgIUIABBoJmAgAA2AhAgAEEeNgIMQQAhEAzIAQsgAEEANgIACyAAQYASOwEqIAAgF0EBaiIBIAIQqICAgAAiEA0BIAEhAQtBxwAhEAysAQsgEEEVRw2DASAAQdEANgIcIAAgATYCFCAAQeOXgIAANgIQIABBFTYCDEEAIRAMxAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDF4LIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMwwELIABBADYCHCAAIBQ2AhQgAEHBqICAADYCECAAQQc2AgwgAEEANgIAQQAhEAzCAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMXQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAzBAQtBACEQIABBADYCHCAAIAE2AhQgAEGAkYCAADYCECAAQQk2AgwMwAELIBBBFUYNfSAAQQA2AhwgACABNgIUIABBlI2AgAA2AhAgAEEhNgIMQQAhEAy/AQtBASEWQQAhF0EAIRRBASEQCyAAIBA6ACsgAUEBaiEBAkACQCAALQAtQRBxDQACQAJAAkAgAC0AKg4DAQACBAsgFkUNAwwCCyAUDQEMAgsgF0UNAQsgACgCBCEQIABBADYCBAJAIAAgECABEK2AgIAAIhANACABIQEMXAsgAEHYADYCHCAAIAE2AhQgACAQNgIMQQAhEAy+AQsgACgCBCEEIABBADYCBAJAIAAgBCABEK2AgIAAIgQNACABIQEMrQELIABB2QA2AhwgACABNgIUIAAgBDYCDEEAIRAMvQELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKsBCyAAQdoANgIcIAAgATYCFCAAIAQ2AgxBACEQDLwBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQypAQsgAEHcADYCHCAAIAE2AhQgACAENgIMQQAhEAy7AQsCQCABLQAAQVBqIhBB/wFxQQpPDQAgACAQOgAqIAFBAWohAUHPACEQDKIBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQynAQsgAEHeADYCHCAAIAE2AhQgACAENgIMQQAhEAy6AQsgAEEANgIAIBdBAWohAQJAIAAtAClBI08NACABIQEMWQsgAEEANgIcIAAgATYCFCAAQdOJgIAANgIQIABBCDYCDEEAIRAMuQELIABBADYCAAtBACEQIABBADYCHCAAIAE2AhQgAEGQs4CAADYCECAAQQg2AgwMtwELIABBADYCACAXQQFqIQECQCAALQApQSFHDQAgASEBDFYLIABBADYCHCAAIAE2AhQgAEGbioCAADYCECAAQQg2AgxBACEQDLYBCyAAQQA2AgAgF0EBaiEBAkAgAC0AKSIQQV1qQQtPDQAgASEBDFULAkAgEEEGSw0AQQEgEHRBygBxRQ0AIAEhAQxVC0EAIRAgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDAy1AQsgEEEVRg1xIABBADYCHCAAIAE2AhQgAEG5jYCAADYCECAAQRo2AgxBACEQDLQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxUCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLMBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdIANgIcIAAgATYCFCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAUNgIUIAAgATYCDEEAIRAMogELIABBADYCHCAAIBQ2AhQgAEHDj4CAADYCECAAQQc2AgxBACEQDKEBCyAAQQA2AhwgACABNgIUIABBw4+AgAA2AhAgAEEHNgIMQQAhEAygAQtBACEQIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgwMnwELIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgxBACEQDJ4BCyAAQQA2AhwgACAUNgIUIABB/pGAgAA2AhAgAEEHNgIMQQAhEAydAQsgAEEANgIcIAAgATYCFCAAQY6bgIAANgIQIABBBjYCDEEAIRAMnAELIBBBFUYNVyAAQQA2AhwgACABNgIUIABBzI6AgAA2AhAgAEEgNgIMQQAhEAybAQsgAEEANgIAIBBBAWohAUEkIRALIAAgEDoAKSAAKAIEIRAgAEEANgIEIAAgECABEKuAgIAAIhANVCABIQEMPgsgAEEANgIAC0EAIRAgAEEANgIcIAAgBDYCFCAAQfGbgIAANgIQIABBBjYCDAyXAQsgAUEVRg1QIABBADYCHCAAIAU2AhQgAEHwjICAADYCECAAQRs2AgxBACEQDJYBCyAAKAIEIQUgAEEANgIEIAAgBSAQEKmAgIAAIgUNASAQQQFqIQULQa0BIRAMewsgAEHBATYCHCAAIAU2AgwgACAQQQFqNgIUQQAhEAyTAQsgACgCBCEGIABBADYCBCAAIAYgEBCpgICAACIGDQEgEEEBaiEGC0GuASEQDHgLIABBwgE2AhwgACAGNgIMIAAgEEEBajYCFEEAIRAMkAELIABBADYCHCAAIAc2AhQgAEGXi4CAADYCECAAQQ02AgxBACEQDI8BCyAAQQA2AhwgACAINgIUIABB45CAgAA2AhAgAEEJNgIMQQAhEAyOAQsgAEEANgIcIAAgCDYCFCAAQZSNgIAANgIQIABBITYCDEEAIRAMjQELQQEhFkEAIRdBACEUQQEhEAsgACAQOgArIAlBAWohCAJAAkAgAC0ALUEQcQ0AAkACQAJAIAAtACoOAwEAAgQLIBZFDQMMAgsgFA0BDAILIBdFDQELIAAoAgQhECAAQQA2AgQgACAQIAgQrYCAgAAiEEUNPSAAQckBNgIcIAAgCDYCFCAAIBA2AgxBACEQDIwBCyAAKAIEIQQgAEEANgIEIAAgBCAIEK2AgIAAIgRFDXYgAEHKATYCHCAAIAg2AhQgACAENgIMQQAhEAyLAQsgACgCBCEEIABBADYCBCAAIAQgCRCtgICAACIERQ10IABBywE2AhwgACAJNgIUIAAgBDYCDEEAIRAMigELIAAoAgQhBCAAQQA2AgQgACAEIAoQrYCAgAAiBEUNciAAQc0BNgIcIAAgCjYCFCAAIAQ2AgxBACEQDIkBCwJAIAstAABBUGoiEEH/AXFBCk8NACAAIBA6ACogC0EBaiEKQbYBIRAMcAsgACgCBCEEIABBADYCBCAAIAQgCxCtgICAACIERQ1wIABBzwE2AhwgACALNgIUIAAgBDYCDEEAIRAMiAELIABBADYCHCAAIAQ2AhQgAEGQs4CAADYCECAAQQg2AgwgAEEANgIAQQAhEAyHAQsgAUEVRg0/IABBADYCHCAAIAw2AhQgAEHMjoCAADYCECAAQSA2AgxBACEQDIYBCyAAQYEEOwEoIAAoAgQhECAAQgA3AwAgACAQIAxBAWoiDBCrgICAACIQRQ04IABB0wE2AhwgACAMNgIUIAAgEDYCDEEAIRAMhQELIABBADYCAAtBACEQIABBADYCHCAAIAQ2AhQgAEHYm4CAADYCECAAQQg2AgwMgwELIAAoAgQhECAAQgA3AwAgACAQIAtBAWoiCxCrgICAACIQDQFBxgEhEAxpCyAAQQI6ACgMVQsgAEHVATYCHCAAIAs2AhQgACAQNgIMQQAhEAyAAQsgEEEVRg03IABBADYCHCAAIAQ2AhQgAEGkjICAADYCECAAQRA2AgxBACEQDH8LIAAtADRBAUcNNCAAIAQgAhC8gICAACIQRQ00IBBBFUcNNSAAQdwBNgIcIAAgBDYCFCAAQdWWgIAANgIQIABBFTYCDEEAIRAMfgtBACEQIABBADYCHCAAQa+LgIAANgIQIABBAjYCDCAAIBRBAWo2AhQMfQtBACEQDGMLQQIhEAxiC0ENIRAMYQtBDyEQDGALQSUhEAxfC0ETIRAMXgtBFSEQDF0LQRYhEAxcC0EXIRAMWwtBGCEQDFoLQRkhEAxZC0EaIRAMWAtBGyEQDFcLQRwhEAxWC0EdIRAMVQtBHyEQDFQLQSEhEAxTC0EjIRAMUgtBxgAhEAxRC0EuIRAMUAtBLyEQDE8LQTshEAxOC0E9IRAMTQtByAAhEAxMC0HJACEQDEsLQcsAIRAMSgtBzAAhEAxJC0HOACEQDEgLQdEAIRAMRwtB1QAhEAxGC0HYACEQDEULQdkAIRAMRAtB2wAhEAxDC0HkACEQDEILQeUAIRAMQQtB8QAhEAxAC0H0ACEQDD8LQY0BIRAMPgtBlwEhEAw9C0GpASEQDDwLQawBIRAMOwtBwAEhEAw6C0G5ASEQDDkLQa8BIRAMOAtBsQEhEAw3C0GyASEQDDYLQbQBIRAMNQtBtQEhEAw0C0G6ASEQDDMLQb0BIRAMMgtBvwEhEAwxC0HBASEQDDALIABBADYCHCAAIAQ2AhQgAEHpi4CAADYCECAAQR82AgxBACEQDEgLIABB2wE2AhwgACAENgIUIABB+paAgAA2AhAgAEEVNgIMQQAhEAxHCyAAQfgANgIcIAAgDDYCFCAAQcqYgIAANgIQIABBFTYCDEEAIRAMRgsgAEHRADYCHCAAIAU2AhQgAEGwl4CAADYCECAAQRU2AgxBACEQDEULIABB+QA2AhwgACABNgIUIAAgEDYCDEEAIRAMRAsgAEH4ADYCHCAAIAE2AhQgAEHKmICAADYCECAAQRU2AgxBACEQDEMLIABB5AA2AhwgACABNgIUIABB45eAgAA2AhAgAEEVNgIMQQAhEAxCCyAAQdcANgIcIAAgATYCFCAAQcmXgIAANgIQIABBFTYCDEEAIRAMQQsgAEEANgIcIAAgATYCFCAAQbmNgIAANgIQIABBGjYCDEEAIRAMQAsgAEHCADYCHCAAIAE2AhQgAEHjmICAADYCECAAQRU2AgxBACEQDD8LIABBADYCBCAAIA8gDxCxgICAACIERQ0BIABBOjYCHCAAIAQ2AgwgACAPQQFqNgIUQQAhEAw+CyAAKAIEIQQgAEEANgIEAkAgACAEIAEQsYCAgAAiBEUNACAAQTs2AhwgACAENgIMIAAgAUEBajYCFEEAIRAMPgsgAUEBaiEBDC0LIA9BAWohAQwtCyAAQQA2AhwgACAPNgIUIABB5JKAgAA2AhAgAEEENgIMQQAhEAw7CyAAQTY2AhwgACAENgIUIAAgAjYCDEEAIRAMOgsgAEEuNgIcIAAgDjYCFCAAIAQ2AgxBACEQDDkLIABB0AA2AhwgACABNgIUIABBkZiAgAA2AhAgAEEVNgIMQQAhEAw4CyANQQFqIQEMLAsgAEEVNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMNgsgAEEbNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNQsgAEEPNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNAsgAEELNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMMwsgAEEaNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMgsgAEELNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMQsgAEEKNgIcIAAgATYCFCAAQeSWgIAANgIQIABBFTYCDEEAIRAMMAsgAEEeNgIcIAAgATYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAMLwsgAEEANgIcIAAgEDYCFCAAQdqNgIAANgIQIABBFDYCDEEAIRAMLgsgAEEENgIcIAAgATYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMLQsgAEEANgIAIAtBAWohCwtBuAEhEAwSCyAAQQA2AgAgEEEBaiEBQfUAIRAMEQsgASEBAkAgAC0AKUEFRw0AQeMAIRAMEQtB4gAhEAwQC0EAIRAgAEEANgIcIABB5JGAgAA2AhAgAEEHNgIMIAAgFEEBajYCFAwoCyAAQQA2AgAgF0EBaiEBQcAAIRAMDgtBASEBCyAAIAE6ACwgAEEANgIAIBdBAWohAQtBKCEQDAsLIAEhAQtBOCEQDAkLAkAgASIPIAJGDQADQAJAIA8tAABBgL6AgABqLQAAIgFBAUYNACABQQJHDQMgD0EBaiEBDAQLIA9BAWoiDyACRw0AC0E+IRAMIgtBPiEQDCELIABBADoALCAPIQEMAQtBCyEQDAYLQTohEAwFCyABQQFqIQFBLSEQDAQLIAAgAToALCAAQQA2AgAgFkEBaiEBQQwhEAwDCyAAQQA2AgAgF0EBaiEBQQohEAwCCyAAQQA2AgALIABBADoALCANIQFBCSEQDAALC0EAIRAgAEEANgIcIAAgCzYCFCAAQc2QgIAANgIQIABBCTYCDAwXC0EAIRAgAEEANgIcIAAgCjYCFCAAQemKgIAANgIQIABBCTYCDAwWC0EAIRAgAEEANgIcIAAgCTYCFCAAQbeQgIAANgIQIABBCTYCDAwVC0EAIRAgAEEANgIcIAAgCDYCFCAAQZyRgIAANgIQIABBCTYCDAwUC0EAIRAgAEEANgIcIAAgATYCFCAAQc2QgIAANgIQIABBCTYCDAwTC0EAIRAgAEEANgIcIAAgATYCFCAAQemKgIAANgIQIABBCTYCDAwSC0EAIRAgAEEANgIcIAAgATYCFCAAQbeQgIAANgIQIABBCTYCDAwRC0EAIRAgAEEANgIcIAAgATYCFCAAQZyRgIAANgIQIABBCTYCDAwQC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwPC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwOC0EAIRAgAEEANgIcIAAgATYCFCAAQcCSgIAANgIQIABBCzYCDAwNC0EAIRAgAEEANgIcIAAgATYCFCAAQZWJgIAANgIQIABBCzYCDAwMC0EAIRAgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDAwLC0EAIRAgAEEANgIcIAAgATYCFCAAQfuPgIAANgIQIABBCjYCDAwKC0EAIRAgAEEANgIcIAAgATYCFCAAQfGZgIAANgIQIABBAjYCDAwJC0EAIRAgAEEANgIcIAAgATYCFCAAQcSUgIAANgIQIABBAjYCDAwIC0EAIRAgAEEANgIcIAAgATYCFCAAQfKVgIAANgIQIABBAjYCDAwHCyAAQQI2AhwgACABNgIUIABBnJqAgAA2AhAgAEEWNgIMQQAhEAwGC0EBIRAMBQtB1AAhECABIgQgAkYNBCADQQhqIAAgBCACQdjCgIAAQQoQxYCAgAAgAygCDCEEIAMoAggOAwEEAgALEMqAgIAAAAsgAEEANgIcIABBtZqAgAA2AhAgAEEXNgIMIAAgBEEBajYCFEEAIRAMAgsgAEEANgIcIAAgBDYCFCAAQcqagIAANgIQIABBCTYCDEEAIRAMAQsCQCABIgQgAkcNAEEiIRAMAQsgAEGJgICAADYCCCAAIAQ2AgRBISEQCyADQRBqJICAgIAAIBALrwEBAn8gASgCACEGAkACQCACIANGDQAgBCAGaiEEIAYgA2ogAmshByACIAZBf3MgBWoiBmohBQNAAkAgAi0AACAELQAARg0AQQIhBAwDCwJAIAYNAEEAIQQgBSECDAMLIAZBf2ohBiAEQQFqIQQgAkEBaiICIANHDQALIAchBiADIQILIABBATYCACABIAY2AgAgACACNgIEDwsgAUEANgIAIAAgBDYCACAAIAI2AgQLCgAgABDHgICAAAvyNgELfyOAgICAAEEQayIBJICAgIAAAkBBACgCoNCAgAANAEEAEMuAgIAAQYDUhIAAayICQdkASQ0AQQAhAwJAQQAoAuDTgIAAIgQNAEEAQn83AuzTgIAAQQBCgICEgICAwAA3AuTTgIAAQQAgAUEIakFwcUHYqtWqBXMiBDYC4NOAgABBAEEANgL004CAAEEAQQA2AsTTgIAAC0EAIAI2AszTgIAAQQBBgNSEgAA2AsjTgIAAQQBBgNSEgAA2ApjQgIAAQQAgBDYCrNCAgABBAEF/NgKo0ICAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALQYDUhIAAQXhBgNSEgABrQQ9xQQBBgNSEgABBCGpBD3EbIgNqIgRBBGogAkFIaiIFIANrIgNBAXI2AgBBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAQYDUhIAAIAVqQTg2AgQLAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKI0ICAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQACQAJAIANBAXEgBHJBAXMiBUEDdCIEQbDQgIAAaiIDIARBuNCAgABqKAIAIgQoAggiAkcNAEEAIAZBfiAFd3E2AojQgIAADAELIAMgAjYCCCACIAM2AgwLIARBCGohAyAEIAVBA3QiBUEDcjYCBCAEIAVqIgQgBCgCBEEBcjYCBAwMCyACQQAoApDQgIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgRBA3QiA0Gw0ICAAGoiBSADQbjQgIAAaigCACIDKAIIIgBHDQBBACAGQX4gBHdxIgY2AojQgIAADAELIAUgADYCCCAAIAU2AgwLIAMgAkEDcjYCBCADIARBA3QiBGogBCACayIFNgIAIAMgAmoiACAFQQFyNgIEAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQQCQAJAIAZBASAHQQN2dCIIcQ0AQQAgBiAIcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIICyADQQhqIQNBACAANgKc0ICAAEEAIAU2ApDQgIAADAwLQQAoAozQgIAAIglFDQEgCUEAIAlrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqQQJ0QbjSgIAAaigCACIAKAIEQXhxIAJrIQQgACEFAkADQAJAIAUoAhAiAw0AIAVBFGooAgAiA0UNAgsgAygCBEF4cSACayIFIAQgBSAESSIFGyEEIAMgACAFGyEAIAMhBQwACwsgACgCGCEKAkAgACgCDCIIIABGDQAgACgCCCIDQQAoApjQgIAASRogCCADNgIIIAMgCDYCDAwLCwJAIABBFGoiBSgCACIDDQAgACgCECIDRQ0DIABBEGohBQsDQCAFIQsgAyIIQRRqIgUoAgAiAw0AIAhBEGohBSAIKAIQIgMNAAsgC0EANgIADAoLQX8hAiAAQb9/Sw0AIABBE2oiA0FwcSECQQAoAozQgIAAIgdFDQBBACELAkAgAkGAAkkNAEEfIQsgAkH///8HSw0AIANBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiBSAFQYCAD2pBEHZBAnEiBXRBD3YgAyAEciAFcmsiA0EBdCACIANBFWp2QQFxckEcaiELC0EAIAJrIQQCQAJAAkACQCALQQJ0QbjSgIAAaigCACIFDQBBACEDQQAhCAwBC0EAIQMgAkEAQRkgC0EBdmsgC0EfRht0IQBBACEIA0ACQCAFKAIEQXhxIAJrIgYgBE8NACAGIQQgBSEIIAYNAEEAIQQgBSEIIAUhAwwDCyADIAVBFGooAgAiBiAGIAUgAEEddkEEcWpBEGooAgAiBUYbIAMgBhshAyAAQQF0IQAgBQ0ACwsCQCADIAhyDQBBACEIQQIgC3QiA0EAIANrciAHcSIDRQ0DIANBACADa3FBf2oiAyADQQx2QRBxIgN2IgVBBXZBCHEiACADciAFIAB2IgNBAnZBBHEiBXIgAyAFdiIDQQF2QQJxIgVyIAMgBXYiA0EBdkEBcSIFciADIAV2akECdEG40oCAAGooAgAhAwsgA0UNAQsDQCADKAIEQXhxIAJrIgYgBEkhAAJAIAMoAhAiBQ0AIANBFGooAgAhBQsgBiAEIAAbIQQgAyAIIAAbIQggBSEDIAUNAAsLIAhFDQAgBEEAKAKQ0ICAACACa08NACAIKAIYIQsCQCAIKAIMIgAgCEYNACAIKAIIIgNBACgCmNCAgABJGiAAIAM2AgggAyAANgIMDAkLAkAgCEEUaiIFKAIAIgMNACAIKAIQIgNFDQMgCEEQaiEFCwNAIAUhBiADIgBBFGoiBSgCACIDDQAgAEEQaiEFIAAoAhAiAw0ACyAGQQA2AgAMCAsCQEEAKAKQ0ICAACIDIAJJDQBBACgCnNCAgAAhBAJAAkAgAyACayIFQRBJDQAgBCACaiIAIAVBAXI2AgRBACAFNgKQ0ICAAEEAIAA2ApzQgIAAIAQgA2ogBTYCACAEIAJBA3I2AgQMAQsgBCADQQNyNgIEIAQgA2oiAyADKAIEQQFyNgIEQQBBADYCnNCAgABBAEEANgKQ0ICAAAsgBEEIaiEDDAoLAkBBACgClNCAgAAiACACTQ0AQQAoAqDQgIAAIgMgAmoiBCAAIAJrIgVBAXI2AgRBACAFNgKU0ICAAEEAIAQ2AqDQgIAAIAMgAkEDcjYCBCADQQhqIQMMCgsCQAJAQQAoAuDTgIAARQ0AQQAoAujTgIAAIQQMAQtBAEJ/NwLs04CAAEEAQoCAhICAgMAANwLk04CAAEEAIAFBDGpBcHFB2KrVqgVzNgLg04CAAEEAQQA2AvTTgIAAQQBBADYCxNOAgABBgIAEIQQLQQAhAwJAIAQgAkHHAGoiB2oiBkEAIARrIgtxIgggAksNAEEAQTA2AvjTgIAADAoLAkBBACgCwNOAgAAiA0UNAAJAQQAoArjTgIAAIgQgCGoiBSAETQ0AIAUgA00NAQtBACEDQQBBMDYC+NOAgAAMCgtBAC0AxNOAgABBBHENBAJAAkACQEEAKAKg0ICAACIERQ0AQcjTgIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGogBEsNAwsgAygCCCIDDQALC0EAEMuAgIAAIgBBf0YNBSAIIQYCQEEAKALk04CAACIDQX9qIgQgAHFFDQAgCCAAayAEIABqQQAgA2txaiEGCyAGIAJNDQUgBkH+////B0sNBQJAQQAoAsDTgIAAIgNFDQBBACgCuNOAgAAiBCAGaiIFIARNDQYgBSADSw0GCyAGEMuAgIAAIgMgAEcNAQwHCyAGIABrIAtxIgZB/v///wdLDQQgBhDLgICAACIAIAMoAgAgAygCBGpGDQMgACEDCwJAIANBf0YNACACQcgAaiAGTQ0AAkAgByAGa0EAKALo04CAACIEakEAIARrcSIEQf7///8HTQ0AIAMhAAwHCwJAIAQQy4CAgABBf0YNACAEIAZqIQYgAyEADAcLQQAgBmsQy4CAgAAaDAQLIAMhACADQX9HDQUMAwtBACEIDAcLQQAhAAwFCyAAQX9HDQILQQBBACgCxNOAgABBBHI2AsTTgIAACyAIQf7///8HSw0BIAgQy4CAgAAhAEEAEMuAgIAAIQMgAEF/Rg0BIANBf0YNASAAIANPDQEgAyAAayIGIAJBOGpNDQELQQBBACgCuNOAgAAgBmoiAzYCuNOAgAACQCADQQAoArzTgIAATQ0AQQAgAzYCvNOAgAALAkACQAJAAkBBACgCoNCAgAAiBEUNAEHI04CAACEDA0AgACADKAIAIgUgAygCBCIIakYNAiADKAIIIgMNAAwDCwsCQAJAQQAoApjQgIAAIgNFDQAgACADTw0BC0EAIAA2ApjQgIAAC0EAIQNBACAGNgLM04CAAEEAIAA2AsjTgIAAQQBBfzYCqNCAgABBAEEAKALg04CAADYCrNCAgABBAEEANgLU04CAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgQgBkFIaiIFIANrIgNBAXI2AgRBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAIAAgBWpBODYCBAwCCyADLQAMQQhxDQAgBCAFSQ0AIAQgAE8NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoApTQgIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKALw04CAADYCpNCAgABBACAFNgKU0ICAAEEAIAA2AqDQgIAAIAQgC2pBODYCBAwBCwJAIABBACgCmNCAgAAiCE8NAEEAIAA2ApjQgIAAIAAhCAsgACAGaiEFQcjTgIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgBUYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtByNOAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiCyACQQNyNgIEIAVBeCAFa0EPcUEAIAVBCGpBD3EbaiIGIAsgAmoiAmshAwJAIAYgBEcNAEEAIAI2AqDQgIAAQQBBACgClNCAgAAgA2oiAzYClNCAgAAgAiADQQFyNgIEDAMLAkAgBkEAKAKc0ICAAEcNAEEAIAI2ApzQgIAAQQBBACgCkNCAgAAgA2oiAzYCkNCAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAYoAgQiBEEDcUEBRw0AIARBeHEhBwJAAkAgBEH/AUsNACAGKAIIIgUgBEEDdiIIQQN0QbDQgIAAaiIARhoCQCAGKAIMIgQgBUcNAEEAQQAoAojQgIAAQX4gCHdxNgKI0ICAAAwCCyAEIABGGiAEIAU2AgggBSAENgIMDAELIAYoAhghCQJAAkAgBigCDCIAIAZGDQAgBigCCCIEIAhJGiAAIAQ2AgggBCAANgIMDAELAkAgBkEUaiIEKAIAIgUNACAGQRBqIgQoAgAiBQ0AQQAhAAwBCwNAIAQhCCAFIgBBFGoiBCgCACIFDQAgAEEQaiEEIAAoAhAiBQ0ACyAIQQA2AgALIAlFDQACQAJAIAYgBigCHCIFQQJ0QbjSgIAAaiIEKAIARw0AIAQgADYCACAADQFBAEEAKAKM0ICAAEF+IAV3cTYCjNCAgAAMAgsgCUEQQRQgCSgCECAGRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgBigCECIERQ0AIAAgBDYCECAEIAA2AhgLIAYoAhQiBEUNACAAQRRqIAQ2AgAgBCAANgIYCyAHIANqIQMgBiAHaiIGKAIEIQQLIAYgBEF+cTYCBCACIANqIAM2AgAgAiADQQFyNgIEAkAgA0H/AUsNACADQXhxQbDQgIAAaiEEAkACQEEAKAKI0ICAACIFQQEgA0EDdnQiA3ENAEEAIAUgA3I2AojQgIAAIAQhAwwBCyAEKAIIIQMLIAMgAjYCDCAEIAI2AgggAiAENgIMIAIgAzYCCAwDC0EfIQQCQCADQf///wdLDQAgA0EIdiIEIARBgP4/akEQdkEIcSIEdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiAEIAVyIAByayIEQQF0IAMgBEEVanZBAXFyQRxqIQQLIAIgBDYCHCACQgA3AhAgBEECdEG40oCAAGohBQJAQQAoAozQgIAAIgBBASAEdCIIcQ0AIAUgAjYCAEEAIAAgCHI2AozQgIAAIAIgBTYCGCACIAI2AgggAiACNgIMDAMLIANBAEEZIARBAXZrIARBH0YbdCEEIAUoAgAhAANAIAAiBSgCBEF4cSADRg0CIARBHXYhACAEQQF0IQQgBSAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBTYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBkFIaiIIIANrIgNBAXI2AgQgACAIakE4NgIEIAQgBUE3IAVrQQ9xQQAgBUFJakEPcRtqQUFqIgggCCAEQRBqSRsiCEEjNgIEQQBBACgC8NOAgAA2AqTQgIAAQQAgAzYClNCAgABBACALNgKg0ICAACAIQRBqQQApAtDTgIAANwIAIAhBACkCyNOAgAA3AghBACAIQQhqNgLQ04CAAEEAIAY2AszTgIAAQQAgADYCyNOAgABBAEEANgLU04CAACAIQSRqIQMDQCADQQc2AgAgA0EEaiIDIAVJDQALIAggBEYNAyAIIAgoAgRBfnE2AgQgCCAIIARrIgA2AgAgBCAAQQFyNgIEAkAgAEH/AUsNACAAQXhxQbDQgIAAaiEDAkACQEEAKAKI0ICAACIFQQEgAEEDdnQiAHENAEEAIAUgAHI2AojQgIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAAQf///wdLDQAgAEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIIIAhBgIAPakEQdkECcSIIdEEPdiADIAVyIAhyayIDQQF0IAAgA0EVanZBAXFyQRxqIQMLIAQgAzYCHCAEQgA3AhAgA0ECdEG40oCAAGohBQJAQQAoAozQgIAAIghBASADdCIGcQ0AIAUgBDYCAEEAIAggBnI2AozQgIAAIAQgBTYCGCAEIAQ2AgggBCAENgIMDAQLIABBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhCANAIAgiBSgCBEF4cSAARg0DIANBHXYhCCADQQF0IQMgBSAIQQRxakEQaiIGKAIAIggNAAsgBiAENgIAIAQgBTYCGCAEIAQ2AgwgBCAENgIIDAMLIAUoAggiAyACNgIMIAUgAjYCCCACQQA2AhggAiAFNgIMIAIgAzYCCAsgC0EIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQQA2AhggBCAFNgIMIAQgAzYCCAtBACgClNCAgAAiAyACTQ0AQQAoAqDQgIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgKU0ICAAEEAIAU2AqDQgIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYC+NOAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEG40oCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKM0ICAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgCCADaiIDIAMoAgRBAXI2AgQMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEF4cUGw0ICAAGohAwJAAkBBACgCiNCAgAAiBUEBIARBA3Z0IgRxDQBBACAFIARyNgKI0ICAACADIQQMAQsgAygCCCEECyAEIAA2AgwgAyAANgIIIAAgAzYCDCAAIAQ2AggMAQtBHyEDAkAgBEH///8HSw0AIARBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAFciACcmsiA0EBdCAEIANBFWp2QQFxckEcaiEDCyAAIAM2AhwgAEIANwIQIANBAnRBuNKAgABqIQUCQCAHQQEgA3QiAnENACAFIAA2AgBBACAHIAJyNgKM0ICAACAAIAU2AhggACAANgIIIAAgADYCDAwBCyAEQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQICQANAIAIiBSgCBEF4cSAERg0BIANBHXYhAiADQQF0IQMgBSACQQRxakEQaiIGKAIAIgINAAsgBiAANgIAIAAgBTYCGCAAIAA2AgwgACAANgIIDAELIAUoAggiAyAANgIMIAUgADYCCCAAQQA2AhggACAFNgIMIAAgAzYCCAsgCEEIaiEDDAELAkAgCkUNAAJAAkAgACAAKAIcIgVBAnRBuNKAgABqIgMoAgBHDQAgAyAINgIAIAgNAUEAIAlBfiAFd3E2AozQgIAADAILIApBEEEUIAooAhAgAEYbaiAINgIAIAhFDQELIAggCjYCGAJAIAAoAhAiA0UNACAIIAM2AhAgAyAINgIYCyAAQRRqKAIAIgNFDQAgCEEUaiADNgIAIAMgCDYCGAsCQAJAIARBD0sNACAAIAQgAmoiA0EDcjYCBCAAIANqIgMgAygCBEEBcjYCBAwBCyAAIAJqIgUgBEEBcjYCBCAAIAJBA3I2AgQgBSAEaiAENgIAAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQMCQAJAQQEgB0EDdnQiCCAGcQ0AQQAgCCAGcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCADNgIMIAIgAzYCCCADIAI2AgwgAyAINgIIC0EAIAU2ApzQgIAAQQAgBDYCkNCAgAALIABBCGohAwsgAUEQaiSAgICAACADCwoAIAAQyYCAgAAL4g0BB38CQCAARQ0AIABBeGoiASAAQXxqKAIAIgJBeHEiAGohAwJAIAJBAXENACACQQNxRQ0BIAEgASgCACICayIBQQAoApjQgIAAIgRJDQEgAiAAaiEAAkAgAUEAKAKc0ICAAEYNAAJAIAJB/wFLDQAgASgCCCIEIAJBA3YiBUEDdEGw0ICAAGoiBkYaAkAgASgCDCICIARHDQBBAEEAKAKI0ICAAEF+IAV3cTYCiNCAgAAMAwsgAiAGRhogAiAENgIIIAQgAjYCDAwCCyABKAIYIQcCQAJAIAEoAgwiBiABRg0AIAEoAggiAiAESRogBiACNgIIIAIgBjYCDAwBCwJAIAFBFGoiAigCACIEDQAgAUEQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0BAkACQCABIAEoAhwiBEECdEG40oCAAGoiAigCAEcNACACIAY2AgAgBg0BQQBBACgCjNCAgABBfiAEd3E2AozQgIAADAMLIAdBEEEUIAcoAhAgAUYbaiAGNgIAIAZFDQILIAYgBzYCGAJAIAEoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyABKAIUIgJFDQEgBkEUaiACNgIAIAIgBjYCGAwBCyADKAIEIgJBA3FBA0cNACADIAJBfnE2AgRBACAANgKQ0ICAACABIABqIAA2AgAgASAAQQFyNgIEDwsgASADTw0AIAMoAgQiAkEBcUUNAAJAAkAgAkECcQ0AAkAgA0EAKAKg0ICAAEcNAEEAIAE2AqDQgIAAQQBBACgClNCAgAAgAGoiADYClNCAgAAgASAAQQFyNgIEIAFBACgCnNCAgABHDQNBAEEANgKQ0ICAAEEAQQA2ApzQgIAADwsCQCADQQAoApzQgIAARw0AQQAgATYCnNCAgABBAEEAKAKQ0ICAACAAaiIANgKQ0ICAACABIABBAXI2AgQgASAAaiAANgIADwsgAkF4cSAAaiEAAkACQCACQf8BSw0AIAMoAggiBCACQQN2IgVBA3RBsNCAgABqIgZGGgJAIAMoAgwiAiAERw0AQQBBACgCiNCAgABBfiAFd3E2AojQgIAADAILIAIgBkYaIAIgBDYCCCAEIAI2AgwMAQsgAygCGCEHAkACQCADKAIMIgYgA0YNACADKAIIIgJBACgCmNCAgABJGiAGIAI2AgggAiAGNgIMDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQACQAJAIAMgAygCHCIEQQJ0QbjSgIAAaiICKAIARw0AIAIgBjYCACAGDQFBAEEAKAKM0ICAAEF+IAR3cTYCjNCAgAAMAgsgB0EQQRQgBygCECADRhtqIAY2AgAgBkUNAQsgBiAHNgIYAkAgAygCECICRQ0AIAYgAjYCECACIAY2AhgLIAMoAhQiAkUNACAGQRRqIAI2AgAgAiAGNgIYCyABIABqIAA2AgAgASAAQQFyNgIEIAFBACgCnNCAgABHDQFBACAANgKQ0ICAAA8LIAMgAkF+cTYCBCABIABqIAA2AgAgASAAQQFyNgIECwJAIABB/wFLDQAgAEF4cUGw0ICAAGohAgJAAkBBACgCiNCAgAAiBEEBIABBA3Z0IgBxDQBBACAEIAByNgKI0ICAACACIQAMAQsgAigCCCEACyAAIAE2AgwgAiABNgIIIAEgAjYCDCABIAA2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAEgAjYCHCABQgA3AhAgAkECdEG40oCAAGohBAJAAkBBACgCjNCAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCjNCAgAAgASAENgIYIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABIAQ2AhggASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEANgIYIAEgBDYCDCABIAA2AggLQQBBACgCqNCAgABBf2oiAUF/IAEbNgKo0ICAAAsLBAAAAAtOAAJAIAANAD8AQRB0DwsCQCAAQf//A3ENACAAQX9MDQACQCAAQRB2QAAiAEF/Rw0AQQBBMDYC+NOAgABBfw8LIABBEHQPCxDKgICAAAAL8gICA38BfgJAIAJFDQAgACABOgAAIAIgAGoiA0F/aiABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBfWogAToAACADQX5qIAE6AAAgAkEHSQ0AIAAgAToAAyADQXxqIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIFayICQSBJDQAgAa1CgYCAgBB+IQYgAyAFaiEBA0AgASAGNwMYIAEgBjcDECABIAY3AwggASAGNwMAIAFBIGohASACQWBqIgJBH0sNAAsLIAALC45IAQBBgAgLhkgBAAAAAgAAAAMAAAAAAAAAAAAAAAQAAAAFAAAAAAAAAAAAAAAGAAAABwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/llhttp.wasm b/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/llhttp.wasm
deleted file mode 100755
index fe63282..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/llhttp.wasm
+++ /dev/null
Binary files differ
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
deleted file mode 100644
index 017e247..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJsbGh0dHBfc3RhdHVzX25hbWUAIRpsbGh0dHBfc2V0X2xlbmllbnRfaGVhZGVycwAiIWxsaHR0cF9zZXRfbGVuaWVudF9jaHVua2VkX2xlbmd0aAAjHWxsaHR0cF9zZXRfbGVuaWVudF9rZWVwX2FsaXZlACQkbGxodHRwX3NldF9sZW5pZW50X3RyYW5zZmVyX2VuY29kaW5nACUYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mAD8JFwEAQQELEQECAwQFCwYHNTk3MS8tJyspCrLgAkUCAAsIABCIgICAAAsZACAAEMKAgIAAGiAAIAI2AjggACABOgAoCxwAIAAgAC8BMiAALQAuIAAQwYCAgAAQgICAgAALKgEBf0HAABDGgICAACIBEMKAgIAAGiABQYCIgIAANgI4IAEgADoAKCABCwoAIAAQyICAgAALBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LRQEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABDCgICAABogACAENgI4IAAgAzoAKCAAIAI6AC0gACABNgIYCxEAIAAgASABIAJqEMOAgIAACxAAIABBAEHcABDMgICAABoLZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI4IgFFDQAgASgCLCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQyoCAgAAACyAAQcOWgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQdGbgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBJEkNABDKgICAAAALIABBAnRBoLOAgABqKAIACyIAAkAgAEEuSQ0AEMqAgIAAAAsgAEECdEGwtICAAGooAgAL7gsBAX9B66iAgAAhAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABBnH9qDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0Hhp4CAAA8LQaShgIAADwtBy6yAgAAPC0H+sYCAAA8LQcCkgIAADwtBq6SAgAAPC0GNqICAAA8LQeKmgIAADwtBgLCAgAAPC0G5r4CAAA8LQdekgIAADwtB75+AgAAPC0Hhn4CAAA8LQfqfgIAADwtB8qCAgAAPC0Gor4CAAA8LQa6ygIAADwtBiLCAgAAPC0Hsp4CAAA8LQYKigIAADwtBjp2AgAAPC0HQroCAAA8LQcqjgIAADwtBxbKAgAAPC0HfnICAAA8LQdKcgIAADwtBxKCAgAAPC0HXoICAAA8LQaKfgIAADwtB7a6AgAAPC0GrsICAAA8LQdSlgIAADwtBzK6AgAAPC0H6roCAAA8LQfyrgIAADwtB0rCAgAAPC0HxnYCAAA8LQbuggIAADwtB96uAgAAPC0GQsYCAAA8LQdexgIAADwtBoq2AgAAPC0HUp4CAAA8LQeCrgIAADwtBn6yAgAAPC0HrsYCAAA8LQdWfgIAADwtByrGAgAAPC0HepYCAAA8LQdSegIAADwtB9JyAgAAPC0GnsoCAAA8LQbGdgIAADwtBoJ2AgAAPC0G5sYCAAA8LQbywgIAADwtBkqGAgAAPC0GzpoCAAA8LQemsgIAADwtBrJ6AgAAPC0HUq4CAAA8LQfemgIAADwtBgKaAgAAPC0GwoYCAAA8LQf6egIAADwtBjaOAgAAPC0GJrYCAAA8LQfeigIAADwtBoLGAgAAPC0Gun4CAAA8LQcalgIAADwtB6J6AgAAPC0GTooCAAA8LQcKvgIAADwtBw52AgAAPC0GLrICAAA8LQeGdgIAADwtBja+AgAAPC0HqoYCAAA8LQbStgIAADwtB0q+AgAAPC0HfsoCAAA8LQdKygIAADwtB8LCAgAAPC0GpooCAAA8LQfmjgIAADwtBmZ6AgAAPC0G1rICAAA8LQZuwgIAADwtBkrKAgAAPC0G2q4CAAA8LQcKigIAADwtB+LKAgAAPC0GepYCAAA8LQdCigIAADwtBup6AgAAPC0GBnoCAAA8LEMqAgIAAAAtB1qGAgAAhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcaRgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIwIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2ioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCNCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZqAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAjgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZWQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAI8IgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAhQiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEGqm4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCQCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAigiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2iICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCUCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIcIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBwpmAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCICIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZSUgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAJMIgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAlQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCWCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL/gEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARB//8DcSIDQQhxDQACQCADQYAEcUUNAAJAIAAtAChBAUcNACAALQAtQQpxDQBBBQ8LQQQPCwJAIANBIHENAAJAIAAtAChBAUYNACAALwEyQf//A3EiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQShxRQ0CIANBiARxQYAERg0CC0EADwtBAEEDIAApAyBQGyEFCyAFC2IBAn9BACEBAkAgAC0AKEEBRg0AIAAvATJB//8DcSICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6cBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMkH//wNxIgVBnH9qQeQASQ0AIAVBzAFGDQAgBUGwAkYNACAEQcAAcQ0AQQAhAyAEQYgEcUGABEYNACAEQShxQQBHIQMLIABBADsBMCAAQQA6AC8gAwuZAQECfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEBIAAvATAiAkECcUUNAQwCC0EAIQEgAC8BMCICQQFxRQ0BC0EBIQEgAC0AKEEBRg0AIAAvATJB//8DcSIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC0kBAXsgAEEQav0MAAAAAAAAAAAAAAAAAAAAACIB/QsDACAAIAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AcsBygG4AckBuQHIAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBANwBC0EAIRAMxgELQQ4hEAzFAQtBDSEQDMQBC0EPIRAMwwELQRAhEAzCAQtBEyEQDMEBC0EUIRAMwAELQRUhEAy/AQtBFiEQDL4BC0EXIRAMvQELQRghEAy8AQtBGSEQDLsBC0EaIRAMugELQRshEAy5AQtBHCEQDLgBC0EIIRAMtwELQR0hEAy2AQtBICEQDLUBC0EfIRAMtAELQQchEAyzAQtBISEQDLIBC0EiIRAMsQELQR4hEAywAQtBIyEQDK8BC0ESIRAMrgELQREhEAytAQtBJCEQDKwBC0ElIRAMqwELQSYhEAyqAQtBJyEQDKkBC0HDASEQDKgBC0EpIRAMpwELQSshEAymAQtBLCEQDKUBC0EtIRAMpAELQS4hEAyjAQtBLyEQDKIBC0HEASEQDKEBC0EwIRAMoAELQTQhEAyfAQtBDCEQDJ4BC0ExIRAMnQELQTIhEAycAQtBMyEQDJsBC0E5IRAMmgELQTUhEAyZAQtBxQEhEAyYAQtBCyEQDJcBC0E6IRAMlgELQTYhEAyVAQtBCiEQDJQBC0E3IRAMkwELQTghEAySAQtBPCEQDJEBC0E7IRAMkAELQT0hEAyPAQtBCSEQDI4BC0EoIRAMjQELQT4hEAyMAQtBPyEQDIsBC0HAACEQDIoBC0HBACEQDIkBC0HCACEQDIgBC0HDACEQDIcBC0HEACEQDIYBC0HFACEQDIUBC0HGACEQDIQBC0EqIRAMgwELQccAIRAMggELQcgAIRAMgQELQckAIRAMgAELQcoAIRAMfwtBywAhEAx+C0HNACEQDH0LQcwAIRAMfAtBzgAhEAx7C0HPACEQDHoLQdAAIRAMeQtB0QAhEAx4C0HSACEQDHcLQdMAIRAMdgtB1AAhEAx1C0HWACEQDHQLQdUAIRAMcwtBBiEQDHILQdcAIRAMcQtBBSEQDHALQdgAIRAMbwtBBCEQDG4LQdkAIRAMbQtB2gAhEAxsC0HbACEQDGsLQdwAIRAMagtBAyEQDGkLQd0AIRAMaAtB3gAhEAxnC0HfACEQDGYLQeEAIRAMZQtB4AAhEAxkC0HiACEQDGMLQeMAIRAMYgtBAiEQDGELQeQAIRAMYAtB5QAhEAxfC0HmACEQDF4LQecAIRAMXQtB6AAhEAxcC0HpACEQDFsLQeoAIRAMWgtB6wAhEAxZC0HsACEQDFgLQe0AIRAMVwtB7gAhEAxWC0HvACEQDFULQfAAIRAMVAtB8QAhEAxTC0HyACEQDFILQfMAIRAMUQtB9AAhEAxQC0H1ACEQDE8LQfYAIRAMTgtB9wAhEAxNC0H4ACEQDEwLQfkAIRAMSwtB+gAhEAxKC0H7ACEQDEkLQfwAIRAMSAtB/QAhEAxHC0H+ACEQDEYLQf8AIRAMRQtBgAEhEAxEC0GBASEQDEMLQYIBIRAMQgtBgwEhEAxBC0GEASEQDEALQYUBIRAMPwtBhgEhEAw+C0GHASEQDD0LQYgBIRAMPAtBiQEhEAw7C0GKASEQDDoLQYsBIRAMOQtBjAEhEAw4C0GNASEQDDcLQY4BIRAMNgtBjwEhEAw1C0GQASEQDDQLQZEBIRAMMwtBkgEhEAwyC0GTASEQDDELQZQBIRAMMAtBlQEhEAwvC0GWASEQDC4LQZcBIRAMLQtBmAEhEAwsC0GZASEQDCsLQZoBIRAMKgtBmwEhEAwpC0GcASEQDCgLQZ0BIRAMJwtBngEhEAwmC0GfASEQDCULQaABIRAMJAtBoQEhEAwjC0GiASEQDCILQaMBIRAMIQtBpAEhEAwgC0GlASEQDB8LQaYBIRAMHgtBpwEhEAwdC0GoASEQDBwLQakBIRAMGwtBqgEhEAwaC0GrASEQDBkLQawBIRAMGAtBrQEhEAwXC0GuASEQDBYLQQEhEAwVC0GvASEQDBQLQbABIRAMEwtBsQEhEAwSC0GzASEQDBELQbIBIRAMEAtBtAEhEAwPC0G1ASEQDA4LQbYBIRAMDQtBtwEhEAwMC0G4ASEQDAsLQbkBIRAMCgtBugEhEAwJC0G7ASEQDAgLQcYBIRAMBwtBvAEhEAwGC0G9ASEQDAULQb4BIRAMBAtBvwEhEAwDC0HAASEQDAILQcIBIRAMAQtBwQEhEAsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB4fICEjJSg/QEFERUZHSElKS0xNT1BRUlPeA1dZW1xdYGJlZmdoaWprbG1vcHFyc3R1dnd4eXp7fH1+gAGCAYUBhgGHAYkBiwGMAY0BjgGPAZABkQGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMBmQKkArAC/gL+AgsgASIEIAJHDfMBQd0BIRAM/wMLIAEiECACRw3dAUHDASEQDP4DCyABIgEgAkcNkAFB9wAhEAz9AwsgASIBIAJHDYYBQe8AIRAM/AMLIAEiASACRw1/QeoAIRAM+wMLIAEiASACRw17QegAIRAM+gMLIAEiASACRw14QeYAIRAM+QMLIAEiASACRw0aQRghEAz4AwsgASIBIAJHDRRBEiEQDPcDCyABIgEgAkcNWUHFACEQDPYDCyABIgEgAkcNSkE/IRAM9QMLIAEiASACRw1IQTwhEAz0AwsgASIBIAJHDUFBMSEQDPMDCyAALQAuQQFGDesDDIcCCyAAIAEiASACEMCAgIAAQQFHDeYBIABCADcDIAznAQsgACABIgEgAhC0gICAACIQDecBIAEhAQz1AgsCQCABIgEgAkcNAEEGIRAM8AMLIAAgAUEBaiIBIAIQu4CAgAAiEA3oASABIQEMMQsgAEIANwMgQRIhEAzVAwsgASIQIAJHDStBHSEQDO0DCwJAIAEiASACRg0AIAFBAWohAUEQIRAM1AMLQQchEAzsAwsgAEIAIAApAyAiESACIAEiEGutIhJ9IhMgEyARVhs3AyAgESASViIURQ3lAUEIIRAM6wMLAkAgASIBIAJGDQAgAEGJgICAADYCCCAAIAE2AgQgASEBQRQhEAzSAwtBCSEQDOoDCyABIQEgACkDIFAN5AEgASEBDPICCwJAIAEiASACRw0AQQshEAzpAwsgACABQQFqIgEgAhC2gICAACIQDeUBIAEhAQzyAgsgACABIgEgAhC4gICAACIQDeUBIAEhAQzyAgsgACABIgEgAhC4gICAACIQDeYBIAEhAQwNCyAAIAEiASACELqAgIAAIhAN5wEgASEBDPACCwJAIAEiASACRw0AQQ8hEAzlAwsgAS0AACIQQTtGDQggEEENRw3oASABQQFqIQEM7wILIAAgASIBIAIQuoCAgAAiEA3oASABIQEM8gILA0ACQCABLQAAQfC1gIAAai0AACIQQQFGDQAgEEECRw3rASAAKAIEIRAgAEEANgIEIAAgECABQQFqIgEQuYCAgAAiEA3qASABIQEM9AILIAFBAWoiASACRw0AC0ESIRAM4gMLIAAgASIBIAIQuoCAgAAiEA3pASABIQEMCgsgASIBIAJHDQZBGyEQDOADCwJAIAEiASACRw0AQRYhEAzgAwsgAEGKgICAADYCCCAAIAE2AgQgACABIAIQuICAgAAiEA3qASABIQFBICEQDMYDCwJAIAEiASACRg0AA0ACQCABLQAAQfC3gIAAai0AACIQQQJGDQACQCAQQX9qDgTlAewBAOsB7AELIAFBAWohAUEIIRAMyAMLIAFBAWoiASACRw0AC0EVIRAM3wMLQRUhEAzeAwsDQAJAIAEtAABB8LmAgABqLQAAIhBBAkYNACAQQX9qDgTeAewB4AHrAewBCyABQQFqIgEgAkcNAAtBGCEQDN0DCwJAIAEiASACRg0AIABBi4CAgAA2AgggACABNgIEIAEhAUEHIRAMxAMLQRkhEAzcAwsgAUEBaiEBDAILAkAgASIUIAJHDQBBGiEQDNsDCyAUIQECQCAULQAAQXNqDhTdAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAgDuAgtBACEQIABBADYCHCAAQa+LgIAANgIQIABBAjYCDCAAIBRBAWo2AhQM2gMLAkAgAS0AACIQQTtGDQAgEEENRw3oASABQQFqIQEM5QILIAFBAWohAQtBIiEQDL8DCwJAIAEiECACRw0AQRwhEAzYAwtCACERIBAhASAQLQAAQVBqDjfnAeYBAQIDBAUGBwgAAAAAAAAACQoLDA0OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPEBESExQAC0EeIRAMvQMLQgIhEQzlAQtCAyERDOQBC0IEIREM4wELQgUhEQziAQtCBiERDOEBC0IHIREM4AELQgghEQzfAQtCCSERDN4BC0IKIREM3QELQgshEQzcAQtCDCERDNsBC0INIREM2gELQg4hEQzZAQtCDyERDNgBC0IKIREM1wELQgshEQzWAQtCDCERDNUBC0INIREM1AELQg4hEQzTAQtCDyERDNIBC0IAIRECQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAtAABBUGoON+UB5AEAAQIDBAUGB+YB5gHmAeYB5gHmAeYBCAkKCwwN5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAQ4PEBESE+YBC0ICIREM5AELQgMhEQzjAQtCBCERDOIBC0IFIREM4QELQgYhEQzgAQtCByERDN8BC0IIIREM3gELQgkhEQzdAQtCCiERDNwBC0ILIREM2wELQgwhEQzaAQtCDSERDNkBC0IOIREM2AELQg8hEQzXAQtCCiERDNYBC0ILIREM1QELQgwhEQzUAQtCDSERDNMBC0IOIREM0gELQg8hEQzRAQsgAEIAIAApAyAiESACIAEiEGutIhJ9IhMgEyARVhs3AyAgESASViIURQ3SAUEfIRAMwAMLAkAgASIBIAJGDQAgAEGJgICAADYCCCAAIAE2AgQgASEBQSQhEAynAwtBICEQDL8DCyAAIAEiECACEL6AgIAAQX9qDgW2AQDFAgHRAdIBC0ERIRAMpAMLIABBAToALyAQIQEMuwMLIAEiASACRw3SAUEkIRAMuwMLIAEiDSACRw0eQcYAIRAMugMLIAAgASIBIAIQsoCAgAAiEA3UASABIQEMtQELIAEiECACRw0mQdAAIRAMuAMLAkAgASIBIAJHDQBBKCEQDLgDCyAAQQA2AgQgAEGMgICAADYCCCAAIAEgARCxgICAACIQDdMBIAEhAQzYAQsCQCABIhAgAkcNAEEpIRAMtwMLIBAtAAAiAUEgRg0UIAFBCUcN0wEgEEEBaiEBDBULAkAgASIBIAJGDQAgAUEBaiEBDBcLQSohEAy1AwsCQCABIhAgAkcNAEErIRAMtQMLAkAgEC0AACIBQQlGDQAgAUEgRw3VAQsgAC0ALEEIRg3TASAQIQEMkQMLAkAgASIBIAJHDQBBLCEQDLQDCyABLQAAQQpHDdUBIAFBAWohAQzJAgsgASIOIAJHDdUBQS8hEAyyAwsDQAJAIAEtAAAiEEEgRg0AAkAgEEF2ag4EANwB3AEA2gELIAEhAQzgAQsgAUEBaiIBIAJHDQALQTEhEAyxAwtBMiEQIAEiFCACRg2wAyACIBRrIAAoAgAiAWohFSAUIAFrQQNqIRYCQANAIBQtAAAiF0EgciAXIBdBv39qQf8BcUEaSRtB/wFxIAFB8LuAgABqLQAARw0BAkAgAUEDRw0AQQYhAQyWAwsgAUEBaiEBIBRBAWoiFCACRw0ACyAAIBU2AgAMsQMLIABBADYCACAUIQEM2QELQTMhECABIhQgAkYNrwMgAiAUayAAKAIAIgFqIRUgFCABa0EIaiEWAkADQCAULQAAIhdBIHIgFyAXQb9/akH/AXFBGkkbQf8BcSABQfS7gIAAai0AAEcNAQJAIAFBCEcNAEEFIQEMlQMLIAFBAWohASAUQQFqIhQgAkcNAAsgACAVNgIADLADCyAAQQA2AgAgFCEBDNgBC0E0IRAgASIUIAJGDa4DIAIgFGsgACgCACIBaiEVIBQgAWtBBWohFgJAA0AgFC0AACIXQSByIBcgF0G/f2pB/wFxQRpJG0H/AXEgAUHQwoCAAGotAABHDQECQCABQQVHDQBBByEBDJQDCyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFTYCAAyvAwsgAEEANgIAIBQhAQzXAQsCQCABIgEgAkYNAANAAkAgAS0AAEGAvoCAAGotAAAiEEEBRg0AIBBBAkYNCiABIQEM3QELIAFBAWoiASACRw0AC0EwIRAMrgMLQTAhEAytAwsCQCABIgEgAkYNAANAAkAgAS0AACIQQSBGDQAgEEF2ag4E2QHaAdoB2QHaAQsgAUEBaiIBIAJHDQALQTghEAytAwtBOCEQDKwDCwNAAkAgAS0AACIQQSBGDQAgEEEJRw0DCyABQQFqIgEgAkcNAAtBPCEQDKsDCwNAAkAgAS0AACIQQSBGDQACQAJAIBBBdmoOBNoBAQHaAQALIBBBLEYN2wELIAEhAQwECyABQQFqIgEgAkcNAAtBPyEQDKoDCyABIQEM2wELQcAAIRAgASIUIAJGDagDIAIgFGsgACgCACIBaiEWIBQgAWtBBmohFwJAA0AgFC0AAEEgciABQYDAgIAAai0AAEcNASABQQZGDY4DIAFBAWohASAUQQFqIhQgAkcNAAsgACAWNgIADKkDCyAAQQA2AgAgFCEBC0E2IRAMjgMLAkAgASIPIAJHDQBBwQAhEAynAwsgAEGMgICAADYCCCAAIA82AgQgDyEBIAAtACxBf2oOBM0B1QHXAdkBhwMLIAFBAWohAQzMAQsCQCABIgEgAkYNAANAAkAgAS0AACIQQSByIBAgEEG/f2pB/wFxQRpJG0H/AXEiEEEJRg0AIBBBIEYNAAJAAkACQAJAIBBBnX9qDhMAAwMDAwMDAwEDAwMDAwMDAwMCAwsgAUEBaiEBQTEhEAyRAwsgAUEBaiEBQTIhEAyQAwsgAUEBaiEBQTMhEAyPAwsgASEBDNABCyABQQFqIgEgAkcNAAtBNSEQDKUDC0E1IRAMpAMLAkAgASIBIAJGDQADQAJAIAEtAABBgLyAgABqLQAAQQFGDQAgASEBDNMBCyABQQFqIgEgAkcNAAtBPSEQDKQDC0E9IRAMowMLIAAgASIBIAIQsICAgAAiEA3WASABIQEMAQsgEEEBaiEBC0E8IRAMhwMLAkAgASIBIAJHDQBBwgAhEAygAwsCQANAAkAgAS0AAEF3ag4YAAL+Av4ChAP+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gIA/gILIAFBAWoiASACRw0AC0HCACEQDKADCyABQQFqIQEgAC0ALUEBcUUNvQEgASEBC0EsIRAMhQMLIAEiASACRw3TAUHEACEQDJ0DCwNAAkAgAS0AAEGQwICAAGotAABBAUYNACABIQEMtwILIAFBAWoiASACRw0AC0HFACEQDJwDCyANLQAAIhBBIEYNswEgEEE6Rw2BAyAAKAIEIQEgAEEANgIEIAAgASANEK+AgIAAIgEN0AEgDUEBaiEBDLMCC0HHACEQIAEiDSACRg2aAyACIA1rIAAoAgAiAWohFiANIAFrQQVqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQZDCgIAAai0AAEcNgAMgAUEFRg30AiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyaAwtByAAhECABIg0gAkYNmQMgAiANayAAKAIAIgFqIRYgDSABa0EJaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGWwoCAAGotAABHDf8CAkAgAUEJRw0AQQIhAQz1AgsgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMmQMLAkAgASINIAJHDQBByQAhEAyZAwsCQAJAIA0tAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZJ/ag4HAIADgAOAA4ADgAMBgAMLIA1BAWohAUE+IRAMgAMLIA1BAWohAUE/IRAM/wILQcoAIRAgASINIAJGDZcDIAIgDWsgACgCACIBaiEWIA0gAWtBAWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBoMKAgABqLQAARw39AiABQQFGDfACIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJcDC0HLACEQIAEiDSACRg2WAyACIA1rIAAoAgAiAWohFiANIAFrQQ5qIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQaLCgIAAai0AAEcN/AIgAUEORg3wAiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyWAwtBzAAhECABIg0gAkYNlQMgAiANayAAKAIAIgFqIRYgDSABa0EPaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUHAwoCAAGotAABHDfsCAkAgAUEPRw0AQQMhAQzxAgsgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMlQMLQc0AIRAgASINIAJGDZQDIAIgDWsgACgCACIBaiEWIA0gAWtBBWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFB0MKAgABqLQAARw36AgJAIAFBBUcNAEEEIQEM8AILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJQDCwJAIAEiDSACRw0AQc4AIRAMlAMLAkACQAJAAkAgDS0AACIBQSByIAEgAUG/f2pB/wFxQRpJG0H/AXFBnX9qDhMA/QL9Av0C/QL9Av0C/QL9Av0C/QL9Av0CAf0C/QL9AgID/QILIA1BAWohAUHBACEQDP0CCyANQQFqIQFBwgAhEAz8AgsgDUEBaiEBQcMAIRAM+wILIA1BAWohAUHEACEQDPoCCwJAIAEiASACRg0AIABBjYCAgAA2AgggACABNgIEIAEhAUHFACEQDPoCC0HPACEQDJIDCyAQIQECQAJAIBAtAABBdmoOBAGoAqgCAKgCCyAQQQFqIQELQSchEAz4AgsCQCABIgEgAkcNAEHRACEQDJEDCwJAIAEtAABBIEYNACABIQEMjQELIAFBAWohASAALQAtQQFxRQ3HASABIQEMjAELIAEiFyACRw3IAUHSACEQDI8DC0HTACEQIAEiFCACRg2OAyACIBRrIAAoAgAiAWohFiAUIAFrQQFqIRcDQCAULQAAIAFB1sKAgABqLQAARw3MASABQQFGDccBIAFBAWohASAUQQFqIhQgAkcNAAsgACAWNgIADI4DCwJAIAEiASACRw0AQdUAIRAMjgMLIAEtAABBCkcNzAEgAUEBaiEBDMcBCwJAIAEiASACRw0AQdYAIRAMjQMLAkACQCABLQAAQXZqDgQAzQHNAQHNAQsgAUEBaiEBDMcBCyABQQFqIQFBygAhEAzzAgsgACABIgEgAhCugICAACIQDcsBIAEhAUHNACEQDPICCyAALQApQSJGDYUDDKYCCwJAIAEiASACRw0AQdsAIRAMigMLQQAhFEEBIRdBASEWQQAhEAJAAkACQAJAAkACQAJAAkACQCABLQAAQVBqDgrUAdMBAAECAwQFBgjVAQtBAiEQDAYLQQMhEAwFC0EEIRAMBAtBBSEQDAMLQQYhEAwCC0EHIRAMAQtBCCEQC0EAIRdBACEWQQAhFAzMAQtBCSEQQQEhFEEAIRdBACEWDMsBCwJAIAEiASACRw0AQd0AIRAMiQMLIAEtAABBLkcNzAEgAUEBaiEBDKYCCyABIgEgAkcNzAFB3wAhEAyHAwsCQCABIgEgAkYNACAAQY6AgIAANgIIIAAgATYCBCABIQFB0AAhEAzuAgtB4AAhEAyGAwtB4QAhECABIgEgAkYNhQMgAiABayAAKAIAIhRqIRYgASAUa0EDaiEXA0AgAS0AACAUQeLCgIAAai0AAEcNzQEgFEEDRg3MASAUQQFqIRQgAUEBaiIBIAJHDQALIAAgFjYCAAyFAwtB4gAhECABIgEgAkYNhAMgAiABayAAKAIAIhRqIRYgASAUa0ECaiEXA0AgAS0AACAUQebCgIAAai0AAEcNzAEgFEECRg3OASAUQQFqIRQgAUEBaiIBIAJHDQALIAAgFjYCAAyEAwtB4wAhECABIgEgAkYNgwMgAiABayAAKAIAIhRqIRYgASAUa0EDaiEXA0AgAS0AACAUQenCgIAAai0AAEcNywEgFEEDRg3OASAUQQFqIRQgAUEBaiIBIAJHDQALIAAgFjYCAAyDAwsCQCABIgEgAkcNAEHlACEQDIMDCyAAIAFBAWoiASACEKiAgIAAIhANzQEgASEBQdYAIRAM6QILAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgRg0AAkACQAJAIBBBuH9qDgsAAc8BzwHPAc8BzwHPAc8BzwECzwELIAFBAWohAUHSACEQDO0CCyABQQFqIQFB0wAhEAzsAgsgAUEBaiEBQdQAIRAM6wILIAFBAWoiASACRw0AC0HkACEQDIIDC0HkACEQDIEDCwNAAkAgAS0AAEHwwoCAAGotAAAiEEEBRg0AIBBBfmoOA88B0AHRAdIBCyABQQFqIgEgAkcNAAtB5gAhEAyAAwsCQCABIgEgAkYNACABQQFqIQEMAwtB5wAhEAz/AgsDQAJAIAEtAABB8MSAgABqLQAAIhBBAUYNAAJAIBBBfmoOBNIB0wHUAQDVAQsgASEBQdcAIRAM5wILIAFBAWoiASACRw0AC0HoACEQDP4CCwJAIAEiASACRw0AQekAIRAM/gILAkAgAS0AACIQQXZqDhq6AdUB1QG8AdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAcoB1QHVAQDTAQsgAUEBaiEBC0EGIRAM4wILA0ACQCABLQAAQfDGgIAAai0AAEEBRg0AIAEhAQyeAgsgAUEBaiIBIAJHDQALQeoAIRAM+wILAkAgASIBIAJGDQAgAUEBaiEBDAMLQesAIRAM+gILAkAgASIBIAJHDQBB7AAhEAz6AgsgAUEBaiEBDAELAkAgASIBIAJHDQBB7QAhEAz5AgsgAUEBaiEBC0EEIRAM3gILAkAgASIUIAJHDQBB7gAhEAz3AgsgFCEBAkACQAJAIBQtAABB8MiAgABqLQAAQX9qDgfUAdUB1gEAnAIBAtcBCyAUQQFqIQEMCgsgFEEBaiEBDM0BC0EAIRAgAEEANgIcIABBm5KAgAA2AhAgAEEHNgIMIAAgFEEBajYCFAz2AgsCQANAAkAgAS0AAEHwyICAAGotAAAiEEEERg0AAkACQCAQQX9qDgfSAdMB1AHZAQAEAdkBCyABIQFB2gAhEAzgAgsgAUEBaiEBQdwAIRAM3wILIAFBAWoiASACRw0AC0HvACEQDPYCCyABQQFqIQEMywELAkAgASIUIAJHDQBB8AAhEAz1AgsgFC0AAEEvRw3UASAUQQFqIQEMBgsCQCABIhQgAkcNAEHxACEQDPQCCwJAIBQtAAAiAUEvRw0AIBRBAWohAUHdACEQDNsCCyABQXZqIgRBFksN0wFBASAEdEGJgIACcUUN0wEMygILAkAgASIBIAJGDQAgAUEBaiEBQd4AIRAM2gILQfIAIRAM8gILAkAgASIUIAJHDQBB9AAhEAzyAgsgFCEBAkAgFC0AAEHwzICAAGotAABBf2oOA8kClAIA1AELQeEAIRAM2AILAkAgASIUIAJGDQADQAJAIBQtAABB8MqAgABqLQAAIgFBA0YNAAJAIAFBf2oOAssCANUBCyAUIQFB3wAhEAzaAgsgFEEBaiIUIAJHDQALQfMAIRAM8QILQfMAIRAM8AILAkAgASIBIAJGDQAgAEGPgICAADYCCCAAIAE2AgQgASEBQeAAIRAM1wILQfUAIRAM7wILAkAgASIBIAJHDQBB9gAhEAzvAgsgAEGPgICAADYCCCAAIAE2AgQgASEBC0EDIRAM1AILA0AgAS0AAEEgRw3DAiABQQFqIgEgAkcNAAtB9wAhEAzsAgsCQCABIgEgAkcNAEH4ACEQDOwCCyABLQAAQSBHDc4BIAFBAWohAQzvAQsgACABIgEgAhCsgICAACIQDc4BIAEhAQyOAgsCQCABIgQgAkcNAEH6ACEQDOoCCyAELQAAQcwARw3RASAEQQFqIQFBEyEQDM8BCwJAIAEiBCACRw0AQfsAIRAM6QILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEANAIAQtAAAgAUHwzoCAAGotAABHDdABIAFBBUYNzgEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBB+wAhEAzoAgsCQCABIgQgAkcNAEH8ACEQDOgCCwJAAkAgBC0AAEG9f2oODADRAdEB0QHRAdEB0QHRAdEB0QHRAQHRAQsgBEEBaiEBQeYAIRAMzwILIARBAWohAUHnACEQDM4CCwJAIAEiBCACRw0AQf0AIRAM5wILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQe3PgIAAai0AAEcNzwEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQf0AIRAM5wILIABBADYCACAQQQFqIQFBECEQDMwBCwJAIAEiBCACRw0AQf4AIRAM5gILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEAJAA0AgBC0AACABQfbOgIAAai0AAEcNzgEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQf4AIRAM5gILIABBADYCACAQQQFqIQFBFiEQDMsBCwJAIAEiBCACRw0AQf8AIRAM5QILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQfzOgIAAai0AAEcNzQEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQf8AIRAM5QILIABBADYCACAQQQFqIQFBBSEQDMoBCwJAIAEiBCACRw0AQYABIRAM5AILIAQtAABB2QBHDcsBIARBAWohAUEIIRAMyQELAkAgASIEIAJHDQBBgQEhEAzjAgsCQAJAIAQtAABBsn9qDgMAzAEBzAELIARBAWohAUHrACEQDMoCCyAEQQFqIQFB7AAhEAzJAgsCQCABIgQgAkcNAEGCASEQDOICCwJAAkAgBC0AAEG4f2oOCADLAcsBywHLAcsBywEBywELIARBAWohAUHqACEQDMkCCyAEQQFqIQFB7QAhEAzIAgsCQCABIgQgAkcNAEGDASEQDOECCyACIARrIAAoAgAiAWohECAEIAFrQQJqIRQCQANAIAQtAAAgAUGAz4CAAGotAABHDckBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgEDYCAEGDASEQDOECC0EAIRAgAEEANgIAIBRBAWohAQzGAQsCQCABIgQgAkcNAEGEASEQDOACCyACIARrIAAoAgAiAWohFCAEIAFrQQRqIRACQANAIAQtAAAgAUGDz4CAAGotAABHDcgBIAFBBEYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGEASEQDOACCyAAQQA2AgAgEEEBaiEBQSMhEAzFAQsCQCABIgQgAkcNAEGFASEQDN8CCwJAAkAgBC0AAEG0f2oOCADIAcgByAHIAcgByAEByAELIARBAWohAUHvACEQDMYCCyAEQQFqIQFB8AAhEAzFAgsCQCABIgQgAkcNAEGGASEQDN4CCyAELQAAQcUARw3FASAEQQFqIQEMgwILAkAgASIEIAJHDQBBhwEhEAzdAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFBiM+AgABqLQAARw3FASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBhwEhEAzdAgsgAEEANgIAIBBBAWohAUEtIRAMwgELAkAgASIEIAJHDQBBiAEhEAzcAgsgAiAEayAAKAIAIgFqIRQgBCABa0EIaiEQAkADQCAELQAAIAFB0M+AgABqLQAARw3EASABQQhGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBiAEhEAzcAgsgAEEANgIAIBBBAWohAUEpIRAMwQELAkAgASIBIAJHDQBBiQEhEAzbAgtBASEQIAEtAABB3wBHDcABIAFBAWohAQyBAgsCQCABIgQgAkcNAEGKASEQDNoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRADQCAELQAAIAFBjM+AgABqLQAARw3BASABQQFGDa8CIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYoBIRAM2QILAkAgASIEIAJHDQBBiwEhEAzZAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBjs+AgABqLQAARw3BASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBiwEhEAzZAgsgAEEANgIAIBBBAWohAUECIRAMvgELAkAgASIEIAJHDQBBjAEhEAzYAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFB8M+AgABqLQAARw3AASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBjAEhEAzYAgsgAEEANgIAIBBBAWohAUEfIRAMvQELAkAgASIEIAJHDQBBjQEhEAzXAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFB8s+AgABqLQAARw2/ASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBjQEhEAzXAgsgAEEANgIAIBBBAWohAUEJIRAMvAELAkAgASIEIAJHDQBBjgEhEAzWAgsCQAJAIAQtAABBt39qDgcAvwG/Ab8BvwG/AQG/AQsgBEEBaiEBQfgAIRAMvQILIARBAWohAUH5ACEQDLwCCwJAIAEiBCACRw0AQY8BIRAM1QILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEAJAA0AgBC0AACABQZHPgIAAai0AAEcNvQEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQY8BIRAM1QILIABBADYCACAQQQFqIQFBGCEQDLoBCwJAIAEiBCACRw0AQZABIRAM1AILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQZfPgIAAai0AAEcNvAEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZABIRAM1AILIABBADYCACAQQQFqIQFBFyEQDLkBCwJAIAEiBCACRw0AQZEBIRAM0wILIAIgBGsgACgCACIBaiEUIAQgAWtBBmohEAJAA0AgBC0AACABQZrPgIAAai0AAEcNuwEgAUEGRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZEBIRAM0wILIABBADYCACAQQQFqIQFBFSEQDLgBCwJAIAEiBCACRw0AQZIBIRAM0gILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEAJAA0AgBC0AACABQaHPgIAAai0AAEcNugEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZIBIRAM0gILIABBADYCACAQQQFqIQFBHiEQDLcBCwJAIAEiBCACRw0AQZMBIRAM0QILIAQtAABBzABHDbgBIARBAWohAUEKIRAMtgELAkAgBCACRw0AQZQBIRAM0AILAkACQCAELQAAQb9/ag4PALkBuQG5AbkBuQG5AbkBuQG5AbkBuQG5AbkBAbkBCyAEQQFqIQFB/gAhEAy3AgsgBEEBaiEBQf8AIRAMtgILAkAgBCACRw0AQZUBIRAMzwILAkACQCAELQAAQb9/ag4DALgBAbgBCyAEQQFqIQFB/QAhEAy2AgsgBEEBaiEEQYABIRAMtQILAkAgBCACRw0AQZYBIRAMzgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQafPgIAAai0AAEcNtgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZYBIRAMzgILIABBADYCACAQQQFqIQFBCyEQDLMBCwJAIAQgAkcNAEGXASEQDM0CCwJAAkACQAJAIAQtAABBU2oOIwC4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBAbgBuAG4AbgBuAECuAG4AbgBA7gBCyAEQQFqIQFB+wAhEAy2AgsgBEEBaiEBQfwAIRAMtQILIARBAWohBEGBASEQDLQCCyAEQQFqIQRBggEhEAyzAgsCQCAEIAJHDQBBmAEhEAzMAgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBqc+AgABqLQAARw20ASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmAEhEAzMAgsgAEEANgIAIBBBAWohAUEZIRAMsQELAkAgBCACRw0AQZkBIRAMywILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEAJAA0AgBC0AACABQa7PgIAAai0AAEcNswEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZkBIRAMywILIABBADYCACAQQQFqIQFBBiEQDLABCwJAIAQgAkcNAEGaASEQDMoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUG0z4CAAGotAABHDbIBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGaASEQDMoCCyAAQQA2AgAgEEEBaiEBQRwhEAyvAQsCQCAEIAJHDQBBmwEhEAzJAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBts+AgABqLQAARw2xASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmwEhEAzJAgsgAEEANgIAIBBBAWohAUEnIRAMrgELAkAgBCACRw0AQZwBIRAMyAILAkACQCAELQAAQax/ag4CAAGxAQsgBEEBaiEEQYYBIRAMrwILIARBAWohBEGHASEQDK4CCwJAIAQgAkcNAEGdASEQDMcCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUG4z4CAAGotAABHDa8BIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGdASEQDMcCCyAAQQA2AgAgEEEBaiEBQSYhEAysAQsCQCAEIAJHDQBBngEhEAzGAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBus+AgABqLQAARw2uASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBngEhEAzGAgsgAEEANgIAIBBBAWohAUEDIRAMqwELAkAgBCACRw0AQZ8BIRAMxQILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQe3PgIAAai0AAEcNrQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZ8BIRAMxQILIABBADYCACAQQQFqIQFBDCEQDKoBCwJAIAQgAkcNAEGgASEQDMQCCyACIARrIAAoAgAiAWohFCAEIAFrQQNqIRACQANAIAQtAAAgAUG8z4CAAGotAABHDawBIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGgASEQDMQCCyAAQQA2AgAgEEEBaiEBQQ0hEAypAQsCQCAEIAJHDQBBoQEhEAzDAgsCQAJAIAQtAABBun9qDgsArAGsAawBrAGsAawBrAGsAawBAawBCyAEQQFqIQRBiwEhEAyqAgsgBEEBaiEEQYwBIRAMqQILAkAgBCACRw0AQaIBIRAMwgILIAQtAABB0ABHDakBIARBAWohBAzpAQsCQCAEIAJHDQBBowEhEAzBAgsCQAJAIAQtAABBt39qDgcBqgGqAaoBqgGqAQCqAQsgBEEBaiEEQY4BIRAMqAILIARBAWohAUEiIRAMpgELAkAgBCACRw0AQaQBIRAMwAILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQcDPgIAAai0AAEcNqAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQaQBIRAMwAILIABBADYCACAQQQFqIQFBHSEQDKUBCwJAIAQgAkcNAEGlASEQDL8CCwJAAkAgBC0AAEGuf2oOAwCoAQGoAQsgBEEBaiEEQZABIRAMpgILIARBAWohAUEEIRAMpAELAkAgBCACRw0AQaYBIRAMvgILAkACQAJAAkACQCAELQAAQb9/ag4VAKoBqgGqAaoBqgGqAaoBqgGqAaoBAaoBqgECqgGqAQOqAaoBBKoBCyAEQQFqIQRBiAEhEAyoAgsgBEEBaiEEQYkBIRAMpwILIARBAWohBEGKASEQDKYCCyAEQQFqIQRBjwEhEAylAgsgBEEBaiEEQZEBIRAMpAILAkAgBCACRw0AQacBIRAMvQILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQe3PgIAAai0AAEcNpQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQacBIRAMvQILIABBADYCACAQQQFqIQFBESEQDKIBCwJAIAQgAkcNAEGoASEQDLwCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHCz4CAAGotAABHDaQBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGoASEQDLwCCyAAQQA2AgAgEEEBaiEBQSwhEAyhAQsCQCAEIAJHDQBBqQEhEAy7AgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBxc+AgABqLQAARw2jASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBqQEhEAy7AgsgAEEANgIAIBBBAWohAUErIRAMoAELAkAgBCACRw0AQaoBIRAMugILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQcrPgIAAai0AAEcNogEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQaoBIRAMugILIABBADYCACAQQQFqIQFBFCEQDJ8BCwJAIAQgAkcNAEGrASEQDLkCCwJAAkACQAJAIAQtAABBvn9qDg8AAQKkAaQBpAGkAaQBpAGkAaQBpAGkAaQBA6QBCyAEQQFqIQRBkwEhEAyiAgsgBEEBaiEEQZQBIRAMoQILIARBAWohBEGVASEQDKACCyAEQQFqIQRBlgEhEAyfAgsCQCAEIAJHDQBBrAEhEAy4AgsgBC0AAEHFAEcNnwEgBEEBaiEEDOABCwJAIAQgAkcNAEGtASEQDLcCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHNz4CAAGotAABHDZ8BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGtASEQDLcCCyAAQQA2AgAgEEEBaiEBQQ4hEAycAQsCQCAEIAJHDQBBrgEhEAy2AgsgBC0AAEHQAEcNnQEgBEEBaiEBQSUhEAybAQsCQCAEIAJHDQBBrwEhEAy1AgsgAiAEayAAKAIAIgFqIRQgBCABa0EIaiEQAkADQCAELQAAIAFB0M+AgABqLQAARw2dASABQQhGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBrwEhEAy1AgsgAEEANgIAIBBBAWohAUEqIRAMmgELAkAgBCACRw0AQbABIRAMtAILAkACQCAELQAAQat/ag4LAJ0BnQGdAZ0BnQGdAZ0BnQGdAQGdAQsgBEEBaiEEQZoBIRAMmwILIARBAWohBEGbASEQDJoCCwJAIAQgAkcNAEGxASEQDLMCCwJAAkAgBC0AAEG/f2oOFACcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAEBnAELIARBAWohBEGZASEQDJoCCyAEQQFqIQRBnAEhEAyZAgsCQCAEIAJHDQBBsgEhEAyyAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFB2c+AgABqLQAARw2aASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBsgEhEAyyAgsgAEEANgIAIBBBAWohAUEhIRAMlwELAkAgBCACRw0AQbMBIRAMsQILIAIgBGsgACgCACIBaiEUIAQgAWtBBmohEAJAA0AgBC0AACABQd3PgIAAai0AAEcNmQEgAUEGRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbMBIRAMsQILIABBADYCACAQQQFqIQFBGiEQDJYBCwJAIAQgAkcNAEG0ASEQDLACCwJAAkACQCAELQAAQbt/ag4RAJoBmgGaAZoBmgGaAZoBmgGaAQGaAZoBmgGaAZoBApoBCyAEQQFqIQRBnQEhEAyYAgsgBEEBaiEEQZ4BIRAMlwILIARBAWohBEGfASEQDJYCCwJAIAQgAkcNAEG1ASEQDK8CCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUHkz4CAAGotAABHDZcBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG1ASEQDK8CCyAAQQA2AgAgEEEBaiEBQSghEAyUAQsCQCAEIAJHDQBBtgEhEAyuAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFB6s+AgABqLQAARw2WASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBtgEhEAyuAgsgAEEANgIAIBBBAWohAUEHIRAMkwELAkAgBCACRw0AQbcBIRAMrQILAkACQCAELQAAQbt/ag4OAJYBlgGWAZYBlgGWAZYBlgGWAZYBlgGWAQGWAQsgBEEBaiEEQaEBIRAMlAILIARBAWohBEGiASEQDJMCCwJAIAQgAkcNAEG4ASEQDKwCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDZQBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG4ASEQDKwCCyAAQQA2AgAgEEEBaiEBQRIhEAyRAQsCQCAEIAJHDQBBuQEhEAyrAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFB8M+AgABqLQAARw2TASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBuQEhEAyrAgsgAEEANgIAIBBBAWohAUEgIRAMkAELAkAgBCACRw0AQboBIRAMqgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfLPgIAAai0AAEcNkgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQboBIRAMqgILIABBADYCACAQQQFqIQFBDyEQDI8BCwJAIAQgAkcNAEG7ASEQDKkCCwJAAkAgBC0AAEG3f2oOBwCSAZIBkgGSAZIBAZIBCyAEQQFqIQRBpQEhEAyQAgsgBEEBaiEEQaYBIRAMjwILAkAgBCACRw0AQbwBIRAMqAILIAIgBGsgACgCACIBaiEUIAQgAWtBB2ohEAJAA0AgBC0AACABQfTPgIAAai0AAEcNkAEgAUEHRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbwBIRAMqAILIABBADYCACAQQQFqIQFBGyEQDI0BCwJAIAQgAkcNAEG9ASEQDKcCCwJAAkACQCAELQAAQb5/ag4SAJEBkQGRAZEBkQGRAZEBkQGRAQGRAZEBkQGRAZEBkQECkQELIARBAWohBEGkASEQDI8CCyAEQQFqIQRBpwEhEAyOAgsgBEEBaiEEQagBIRAMjQILAkAgBCACRw0AQb4BIRAMpgILIAQtAABBzgBHDY0BIARBAWohBAzPAQsCQCAEIAJHDQBBvwEhEAylAgsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAELQAAQb9/ag4VAAECA5wBBAUGnAGcAZwBBwgJCgucAQwNDg+cAQsgBEEBaiEBQegAIRAMmgILIARBAWohAUHpACEQDJkCCyAEQQFqIQFB7gAhEAyYAgsgBEEBaiEBQfIAIRAMlwILIARBAWohAUHzACEQDJYCCyAEQQFqIQFB9gAhEAyVAgsgBEEBaiEBQfcAIRAMlAILIARBAWohAUH6ACEQDJMCCyAEQQFqIQRBgwEhEAySAgsgBEEBaiEEQYQBIRAMkQILIARBAWohBEGFASEQDJACCyAEQQFqIQRBkgEhEAyPAgsgBEEBaiEEQZgBIRAMjgILIARBAWohBEGgASEQDI0CCyAEQQFqIQRBowEhEAyMAgsgBEEBaiEEQaoBIRAMiwILAkAgBCACRg0AIABBkICAgAA2AgggACAENgIEQasBIRAMiwILQcABIRAMowILIAAgBSACEKqAgIAAIgENiwEgBSEBDFwLAkAgBiACRg0AIAZBAWohBQyNAQtBwgEhEAyhAgsDQAJAIBAtAABBdmoOBIwBAACPAQALIBBBAWoiECACRw0AC0HDASEQDKACCwJAIAcgAkYNACAAQZGAgIAANgIIIAAgBzYCBCAHIQFBASEQDIcCC0HEASEQDJ8CCwJAIAcgAkcNAEHFASEQDJ8CCwJAAkAgBy0AAEF2ag4EAc4BzgEAzgELIAdBAWohBgyNAQsgB0EBaiEFDIkBCwJAIAcgAkcNAEHGASEQDJ4CCwJAAkAgBy0AAEF2ag4XAY8BjwEBjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BAI8BCyAHQQFqIQcLQbABIRAMhAILAkAgCCACRw0AQcgBIRAMnQILIAgtAABBIEcNjQEgAEEAOwEyIAhBAWohAUGzASEQDIMCCyABIRcCQANAIBciByACRg0BIActAABBUGpB/wFxIhBBCk8NzAECQCAALwEyIhRBmTNLDQAgACAUQQpsIhQ7ATIgEEH//wNzIBRB/v8DcUkNACAHQQFqIRcgACAUIBBqIhA7ATIgEEH//wNxQegHSQ0BCwtBACEQIABBADYCHCAAQcGJgIAANgIQIABBDTYCDCAAIAdBAWo2AhQMnAILQccBIRAMmwILIAAgCCACEK6AgIAAIhBFDcoBIBBBFUcNjAEgAEHIATYCHCAAIAg2AhQgAEHJl4CAADYCECAAQRU2AgxBACEQDJoCCwJAIAkgAkcNAEHMASEQDJoCC0EAIRRBASEXQQEhFkEAIRACQAJAAkACQAJAAkACQAJAAkAgCS0AAEFQag4KlgGVAQABAgMEBQYIlwELQQIhEAwGC0EDIRAMBQtBBCEQDAQLQQUhEAwDC0EGIRAMAgtBByEQDAELQQghEAtBACEXQQAhFkEAIRQMjgELQQkhEEEBIRRBACEXQQAhFgyNAQsCQCAKIAJHDQBBzgEhEAyZAgsgCi0AAEEuRw2OASAKQQFqIQkMygELIAsgAkcNjgFB0AEhEAyXAgsCQCALIAJGDQAgAEGOgICAADYCCCAAIAs2AgRBtwEhEAz+AQtB0QEhEAyWAgsCQCAEIAJHDQBB0gEhEAyWAgsgAiAEayAAKAIAIhBqIRQgBCAQa0EEaiELA0AgBC0AACAQQfzPgIAAai0AAEcNjgEgEEEERg3pASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHSASEQDJUCCyAAIAwgAhCsgICAACIBDY0BIAwhAQy4AQsCQCAEIAJHDQBB1AEhEAyUAgsgAiAEayAAKAIAIhBqIRQgBCAQa0EBaiEMA0AgBC0AACAQQYHQgIAAai0AAEcNjwEgEEEBRg2OASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHUASEQDJMCCwJAIAQgAkcNAEHWASEQDJMCCyACIARrIAAoAgAiEGohFCAEIBBrQQJqIQsDQCAELQAAIBBBg9CAgABqLQAARw2OASAQQQJGDZABIBBBAWohECAEQQFqIgQgAkcNAAsgACAUNgIAQdYBIRAMkgILAkAgBCACRw0AQdcBIRAMkgILAkACQCAELQAAQbt/ag4QAI8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwEBjwELIARBAWohBEG7ASEQDPkBCyAEQQFqIQRBvAEhEAz4AQsCQCAEIAJHDQBB2AEhEAyRAgsgBC0AAEHIAEcNjAEgBEEBaiEEDMQBCwJAIAQgAkYNACAAQZCAgIAANgIIIAAgBDYCBEG+ASEQDPcBC0HZASEQDI8CCwJAIAQgAkcNAEHaASEQDI8CCyAELQAAQcgARg3DASAAQQE6ACgMuQELIABBAjoALyAAIAQgAhCmgICAACIQDY0BQcIBIRAM9AELIAAtAChBf2oOArcBuQG4AQsDQAJAIAQtAABBdmoOBACOAY4BAI4BCyAEQQFqIgQgAkcNAAtB3QEhEAyLAgsgAEEAOgAvIAAtAC1BBHFFDYQCCyAAQQA6AC8gAEEBOgA0IAEhAQyMAQsgEEEVRg3aASAAQQA2AhwgACABNgIUIABBp46AgAA2AhAgAEESNgIMQQAhEAyIAgsCQCAAIBAgAhC0gICAACIEDQAgECEBDIECCwJAIARBFUcNACAAQQM2AhwgACAQNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAyIAgsgAEEANgIcIAAgEDYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAMhwILIBBBFUYN1gEgAEEANgIcIAAgATYCFCAAQdqNgIAANgIQIABBFDYCDEEAIRAMhgILIAAoAgQhFyAAQQA2AgQgECARp2oiFiEBIAAgFyAQIBYgFBsiEBC1gICAACIURQ2NASAAQQc2AhwgACAQNgIUIAAgFDYCDEEAIRAMhQILIAAgAC8BMEGAAXI7ATAgASEBC0EqIRAM6gELIBBBFUYN0QEgAEEANgIcIAAgATYCFCAAQYOMgIAANgIQIABBEzYCDEEAIRAMggILIBBBFUYNzwEgAEEANgIcIAAgATYCFCAAQZqPgIAANgIQIABBIjYCDEEAIRAMgQILIAAoAgQhECAAQQA2AgQCQCAAIBAgARC3gICAACIQDQAgAUEBaiEBDI0BCyAAQQw2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAMgAILIBBBFUYNzAEgAEEANgIcIAAgATYCFCAAQZqPgIAANgIQIABBIjYCDEEAIRAM/wELIAAoAgQhECAAQQA2AgQCQCAAIBAgARC3gICAACIQDQAgAUEBaiEBDIwBCyAAQQ02AhwgACAQNgIMIAAgAUEBajYCFEEAIRAM/gELIBBBFUYNyQEgAEEANgIcIAAgATYCFCAAQcaMgIAANgIQIABBIzYCDEEAIRAM/QELIAAoAgQhECAAQQA2AgQCQCAAIBAgARC5gICAACIQDQAgAUEBaiEBDIsBCyAAQQ42AhwgACAQNgIMIAAgAUEBajYCFEEAIRAM/AELIABBADYCHCAAIAE2AhQgAEHAlYCAADYCECAAQQI2AgxBACEQDPsBCyAQQRVGDcUBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDPoBCyAAQRA2AhwgACABNgIUIAAgEDYCDEEAIRAM+QELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARC5gICAACIEDQAgAUEBaiEBDPEBCyAAQRE2AhwgACAENgIMIAAgAUEBajYCFEEAIRAM+AELIBBBFUYNwQEgAEEANgIcIAAgATYCFCAAQcaMgIAANgIQIABBIzYCDEEAIRAM9wELIAAoAgQhECAAQQA2AgQCQCAAIBAgARC5gICAACIQDQAgAUEBaiEBDIgBCyAAQRM2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAM9gELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARC5gICAACIEDQAgAUEBaiEBDO0BCyAAQRQ2AhwgACAENgIMIAAgAUEBajYCFEEAIRAM9QELIBBBFUYNvQEgAEEANgIcIAAgATYCFCAAQZqPgIAANgIQIABBIjYCDEEAIRAM9AELIAAoAgQhECAAQQA2AgQCQCAAIBAgARC3gICAACIQDQAgAUEBaiEBDIYBCyAAQRY2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAM8wELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARC3gICAACIEDQAgAUEBaiEBDOkBCyAAQRc2AhwgACAENgIMIAAgAUEBajYCFEEAIRAM8gELIABBADYCHCAAIAE2AhQgAEHNk4CAADYCECAAQQw2AgxBACEQDPEBC0IBIRELIBBBAWohAQJAIAApAyAiEkL//////////w9WDQAgACASQgSGIBGENwMgIAEhAQyEAQsgAEEANgIcIAAgATYCFCAAQa2JgIAANgIQIABBDDYCDEEAIRAM7wELIABBADYCHCAAIBA2AhQgAEHNk4CAADYCECAAQQw2AgxBACEQDO4BCyAAKAIEIRcgAEEANgIEIBAgEadqIhYhASAAIBcgECAWIBQbIhAQtYCAgAAiFEUNcyAAQQU2AhwgACAQNgIUIAAgFDYCDEEAIRAM7QELIABBADYCHCAAIBA2AhQgAEGqnICAADYCECAAQQ82AgxBACEQDOwBCyAAIBAgAhC0gICAACIBDQEgECEBC0EOIRAM0QELAkAgAUEVRw0AIABBAjYCHCAAIBA2AhQgAEGwmICAADYCECAAQRU2AgxBACEQDOoBCyAAQQA2AhwgACAQNgIUIABBp46AgAA2AhAgAEESNgIMQQAhEAzpAQsgAUEBaiEQAkAgAC8BMCIBQYABcUUNAAJAIAAgECACELuAgIAAIgENACAQIQEMcAsgAUEVRw26ASAAQQU2AhwgACAQNgIUIABB+ZeAgAA2AhAgAEEVNgIMQQAhEAzpAQsCQCABQaAEcUGgBEcNACAALQAtQQJxDQAgAEEANgIcIAAgEDYCFCAAQZaTgIAANgIQIABBBDYCDEEAIRAM6QELIAAgECACEL2AgIAAGiAQIQECQAJAAkACQAJAIAAgECACELOAgIAADhYCAQAEBAQEBAQEBAQEBAQEBAQEBAQDBAsgAEEBOgAuCyAAIAAvATBBwAByOwEwIBAhAQtBJiEQDNEBCyAAQSM2AhwgACAQNgIUIABBpZaAgAA2AhAgAEEVNgIMQQAhEAzpAQsgAEEANgIcIAAgEDYCFCAAQdWLgIAANgIQIABBETYCDEEAIRAM6AELIAAtAC1BAXFFDQFBwwEhEAzOAQsCQCANIAJGDQADQAJAIA0tAABBIEYNACANIQEMxAELIA1BAWoiDSACRw0AC0ElIRAM5wELQSUhEAzmAQsgACgCBCEEIABBADYCBCAAIAQgDRCvgICAACIERQ2tASAAQSY2AhwgACAENgIMIAAgDUEBajYCFEEAIRAM5QELIBBBFUYNqwEgAEEANgIcIAAgATYCFCAAQf2NgIAANgIQIABBHTYCDEEAIRAM5AELIABBJzYCHCAAIAE2AhQgACAQNgIMQQAhEAzjAQsgECEBQQEhFAJAAkACQAJAAkACQAJAIAAtACxBfmoOBwYFBQMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEUDAELQQQhFAsgAEEBOgAsIAAgAC8BMCAUcjsBMAsgECEBC0ErIRAMygELIABBADYCHCAAIBA2AhQgAEGrkoCAADYCECAAQQs2AgxBACEQDOIBCyAAQQA2AhwgACABNgIUIABB4Y+AgAA2AhAgAEEKNgIMQQAhEAzhAQsgAEEAOgAsIBAhAQy9AQsgECEBQQEhFAJAAkACQAJAAkAgAC0ALEF7ag4EAwECAAULIAAgAC8BMEEIcjsBMAwDC0ECIRQMAQtBBCEUCyAAQQE6ACwgACAALwEwIBRyOwEwCyAQIQELQSkhEAzFAQsgAEEANgIcIAAgATYCFCAAQfCUgIAANgIQIABBAzYCDEEAIRAM3QELAkAgDi0AAEENRw0AIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDkEBaiEBDHULIABBLDYCHCAAIAE2AgwgACAOQQFqNgIUQQAhEAzdAQsgAC0ALUEBcUUNAUHEASEQDMMBCwJAIA4gAkcNAEEtIRAM3AELAkACQANAAkAgDi0AAEF2ag4EAgAAAwALIA5BAWoiDiACRw0AC0EtIRAM3QELIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDiEBDHQLIABBLDYCHCAAIA42AhQgACABNgIMQQAhEAzcAQsgACgCBCEBIABBADYCBAJAIAAgASAOELGAgIAAIgENACAOQQFqIQEMcwsgAEEsNgIcIAAgATYCDCAAIA5BAWo2AhRBACEQDNsBCyAAKAIEIQQgAEEANgIEIAAgBCAOELGAgIAAIgQNoAEgDiEBDM4BCyAQQSxHDQEgAUEBaiEQQQEhAQJAAkACQAJAAkAgAC0ALEF7ag4EAwECBAALIBAhAQwEC0ECIQEMAQtBBCEBCyAAQQE6ACwgACAALwEwIAFyOwEwIBAhAQwBCyAAIAAvATBBCHI7ATAgECEBC0E5IRAMvwELIABBADoALCABIQELQTQhEAy9AQsgACAALwEwQSByOwEwIAEhAQwCCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQsYCAgAAiBA0AIAEhAQzHAQsgAEE3NgIcIAAgATYCFCAAIAQ2AgxBACEQDNQBCyAAQQg6ACwgASEBC0EwIRAMuQELAkAgAC0AKEEBRg0AIAEhAQwECyAALQAtQQhxRQ2TASABIQEMAwsgAC0AMEEgcQ2UAUHFASEQDLcBCwJAIA8gAkYNAAJAA0ACQCAPLQAAQVBqIgFB/wFxQQpJDQAgDyEBQTUhEAy6AQsgACkDICIRQpmz5syZs+bMGVYNASAAIBFCCn4iETcDICARIAGtQv8BgyISQn+FVg0BIAAgESASfDcDICAPQQFqIg8gAkcNAAtBOSEQDNEBCyAAKAIEIQIgAEEANgIEIAAgAiAPQQFqIgQQsYCAgAAiAg2VASAEIQEMwwELQTkhEAzPAQsCQCAALwEwIgFBCHFFDQAgAC0AKEEBRw0AIAAtAC1BCHFFDZABCyAAIAFB9/sDcUGABHI7ATAgDyEBC0E3IRAMtAELIAAgAC8BMEEQcjsBMAyrAQsgEEEVRg2LASAAQQA2AhwgACABNgIUIABB8I6AgAA2AhAgAEEcNgIMQQAhEAzLAQsgAEHDADYCHCAAIAE2AgwgACANQQFqNgIUQQAhEAzKAQsCQCABLQAAQTpHDQAgACgCBCEQIABBADYCBAJAIAAgECABEK+AgIAAIhANACABQQFqIQEMYwsgAEHDADYCHCAAIBA2AgwgACABQQFqNgIUQQAhEAzKAQsgAEEANgIcIAAgATYCFCAAQbGRgIAANgIQIABBCjYCDEEAIRAMyQELIABBADYCHCAAIAE2AhQgAEGgmYCAADYCECAAQR42AgxBACEQDMgBCyAAQQA2AgALIABBgBI7ASogACAXQQFqIgEgAhCogICAACIQDQEgASEBC0HHACEQDKwBCyAQQRVHDYMBIABB0QA2AhwgACABNgIUIABB45eAgAA2AhAgAEEVNgIMQQAhEAzEAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMXgsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAzDAQsgAEEANgIcIAAgFDYCFCAAQcGogIAANgIQIABBBzYCDCAAQQA2AgBBACEQDMIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxdCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDMEBC0EAIRAgAEEANgIcIAAgATYCFCAAQYCRgIAANgIQIABBCTYCDAzAAQsgEEEVRg19IABBADYCHCAAIAE2AhQgAEGUjYCAADYCECAAQSE2AgxBACEQDL8BC0EBIRZBACEXQQAhFEEBIRALIAAgEDoAKyABQQFqIQECQAJAIAAtAC1BEHENAAJAAkACQCAALQAqDgMBAAIECyAWRQ0DDAILIBQNAQwCCyAXRQ0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQrYCAgAAiEA0AIAEhAQxcCyAAQdgANgIcIAAgATYCFCAAIBA2AgxBACEQDL4BCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQytAQsgAEHZADYCHCAAIAE2AhQgACAENgIMQQAhEAy9AQsgACgCBCEEIABBADYCBAJAIAAgBCABEK2AgIAAIgQNACABIQEMqwELIABB2gA2AhwgACABNgIUIAAgBDYCDEEAIRAMvAELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKkBCyAAQdwANgIcIAAgATYCFCAAIAQ2AgxBACEQDLsBCwJAIAEtAABBUGoiEEH/AXFBCk8NACAAIBA6ACogAUEBaiEBQc8AIRAMogELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKcBCyAAQd4ANgIcIAAgATYCFCAAIAQ2AgxBACEQDLoBCyAAQQA2AgAgF0EBaiEBAkAgAC0AKUEjTw0AIAEhAQxZCyAAQQA2AhwgACABNgIUIABB04mAgAA2AhAgAEEINgIMQQAhEAy5AQsgAEEANgIAC0EAIRAgAEEANgIcIAAgATYCFCAAQZCzgIAANgIQIABBCDYCDAy3AQsgAEEANgIAIBdBAWohAQJAIAAtAClBIUcNACABIQEMVgsgAEEANgIcIAAgATYCFCAAQZuKgIAANgIQIABBCDYCDEEAIRAMtgELIABBADYCACAXQQFqIQECQCAALQApIhBBXWpBC08NACABIQEMVQsCQCAQQQZLDQBBASAQdEHKAHFFDQAgASEBDFULQQAhECAAQQA2AhwgACABNgIUIABB94mAgAA2AhAgAEEINgIMDLUBCyAQQRVGDXEgAEEANgIcIAAgATYCFCAAQbmNgIAANgIQIABBGjYCDEEAIRAMtAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDFQLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMswELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDE0LIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMsgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDE0LIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMsQELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDFELIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMsAELIABBADYCHCAAIAE2AhQgAEHGioCAADYCECAAQQc2AgxBACEQDK8BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxJCyAAQdIANgIcIAAgATYCFCAAIBA2AgxBACEQDK4BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxJCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDK0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDKwBCyAAQQA2AhwgACABNgIUIABB3IiAgAA2AhAgAEEHNgIMQQAhEAyrAQsgEEE/Rw0BIAFBAWohAQtBBSEQDJABC0EAIRAgAEEANgIcIAAgATYCFCAAQf2SgIAANgIQIABBBzYCDAyoAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMQgsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAynAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMQgsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAymAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMRgsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAylAQsgACgCBCEBIABBADYCBAJAIAAgASAUEKeAgIAAIgENACAUIQEMPwsgAEHSADYCHCAAIBQ2AhQgACABNgIMQQAhEAykAQsgACgCBCEBIABBADYCBAJAIAAgASAUEKeAgIAAIgENACAUIQEMPwsgAEHTADYCHCAAIBQ2AhQgACABNgIMQQAhEAyjAQsgACgCBCEBIABBADYCBAJAIAAgASAUEKeAgIAAIgENACAUIQEMQwsgAEHlADYCHCAAIBQ2AhQgACABNgIMQQAhEAyiAQsgAEEANgIcIAAgFDYCFCAAQcOPgIAANgIQIABBBzYCDEEAIRAMoQELIABBADYCHCAAIAE2AhQgAEHDj4CAADYCECAAQQc2AgxBACEQDKABC0EAIRAgAEEANgIcIAAgFDYCFCAAQYycgIAANgIQIABBBzYCDAyfAQsgAEEANgIcIAAgFDYCFCAAQYycgIAANgIQIABBBzYCDEEAIRAMngELIABBADYCHCAAIBQ2AhQgAEH+kYCAADYCECAAQQc2AgxBACEQDJ0BCyAAQQA2AhwgACABNgIUIABBjpuAgAA2AhAgAEEGNgIMQQAhEAycAQsgEEEVRg1XIABBADYCHCAAIAE2AhQgAEHMjoCAADYCECAAQSA2AgxBACEQDJsBCyAAQQA2AgAgEEEBaiEBQSQhEAsgACAQOgApIAAoAgQhECAAQQA2AgQgACAQIAEQq4CAgAAiEA1UIAEhAQw+CyAAQQA2AgALQQAhECAAQQA2AhwgACAENgIUIABB8ZuAgAA2AhAgAEEGNgIMDJcBCyABQRVGDVAgAEEANgIcIAAgBTYCFCAAQfCMgIAANgIQIABBGzYCDEEAIRAMlgELIAAoAgQhBSAAQQA2AgQgACAFIBAQqYCAgAAiBQ0BIBBBAWohBQtBrQEhEAx7CyAAQcEBNgIcIAAgBTYCDCAAIBBBAWo2AhRBACEQDJMBCyAAKAIEIQYgAEEANgIEIAAgBiAQEKmAgIAAIgYNASAQQQFqIQYLQa4BIRAMeAsgAEHCATYCHCAAIAY2AgwgACAQQQFqNgIUQQAhEAyQAQsgAEEANgIcIAAgBzYCFCAAQZeLgIAANgIQIABBDTYCDEEAIRAMjwELIABBADYCHCAAIAg2AhQgAEHjkICAADYCECAAQQk2AgxBACEQDI4BCyAAQQA2AhwgACAINgIUIABBlI2AgAA2AhAgAEEhNgIMQQAhEAyNAQtBASEWQQAhF0EAIRRBASEQCyAAIBA6ACsgCUEBaiEIAkACQCAALQAtQRBxDQACQAJAAkAgAC0AKg4DAQACBAsgFkUNAwwCCyAUDQEMAgsgF0UNAQsgACgCBCEQIABBADYCBCAAIBAgCBCtgICAACIQRQ09IABByQE2AhwgACAINgIUIAAgEDYCDEEAIRAMjAELIAAoAgQhBCAAQQA2AgQgACAEIAgQrYCAgAAiBEUNdiAAQcoBNgIcIAAgCDYCFCAAIAQ2AgxBACEQDIsBCyAAKAIEIQQgAEEANgIEIAAgBCAJEK2AgIAAIgRFDXQgAEHLATYCHCAAIAk2AhQgACAENgIMQQAhEAyKAQsgACgCBCEEIABBADYCBCAAIAQgChCtgICAACIERQ1yIABBzQE2AhwgACAKNgIUIAAgBDYCDEEAIRAMiQELAkAgCy0AAEFQaiIQQf8BcUEKTw0AIAAgEDoAKiALQQFqIQpBtgEhEAxwCyAAKAIEIQQgAEEANgIEIAAgBCALEK2AgIAAIgRFDXAgAEHPATYCHCAAIAs2AhQgACAENgIMQQAhEAyIAQsgAEEANgIcIAAgBDYCFCAAQZCzgIAANgIQIABBCDYCDCAAQQA2AgBBACEQDIcBCyABQRVGDT8gAEEANgIcIAAgDDYCFCAAQcyOgIAANgIQIABBIDYCDEEAIRAMhgELIABBgQQ7ASggACgCBCEQIABCADcDACAAIBAgDEEBaiIMEKuAgIAAIhBFDTggAEHTATYCHCAAIAw2AhQgACAQNgIMQQAhEAyFAQsgAEEANgIAC0EAIRAgAEEANgIcIAAgBDYCFCAAQdibgIAANgIQIABBCDYCDAyDAQsgACgCBCEQIABCADcDACAAIBAgC0EBaiILEKuAgIAAIhANAUHGASEQDGkLIABBAjoAKAxVCyAAQdUBNgIcIAAgCzYCFCAAIBA2AgxBACEQDIABCyAQQRVGDTcgAEEANgIcIAAgBDYCFCAAQaSMgIAANgIQIABBEDYCDEEAIRAMfwsgAC0ANEEBRw00IAAgBCACELyAgIAAIhBFDTQgEEEVRw01IABB3AE2AhwgACAENgIUIABB1ZaAgAA2AhAgAEEVNgIMQQAhEAx+C0EAIRAgAEEANgIcIABBr4uAgAA2AhAgAEECNgIMIAAgFEEBajYCFAx9C0EAIRAMYwtBAiEQDGILQQ0hEAxhC0EPIRAMYAtBJSEQDF8LQRMhEAxeC0EVIRAMXQtBFiEQDFwLQRchEAxbC0EYIRAMWgtBGSEQDFkLQRohEAxYC0EbIRAMVwtBHCEQDFYLQR0hEAxVC0EfIRAMVAtBISEQDFMLQSMhEAxSC0HGACEQDFELQS4hEAxQC0EvIRAMTwtBOyEQDE4LQT0hEAxNC0HIACEQDEwLQckAIRAMSwtBywAhEAxKC0HMACEQDEkLQc4AIRAMSAtB0QAhEAxHC0HVACEQDEYLQdgAIRAMRQtB2QAhEAxEC0HbACEQDEMLQeQAIRAMQgtB5QAhEAxBC0HxACEQDEALQfQAIRAMPwtBjQEhEAw+C0GXASEQDD0LQakBIRAMPAtBrAEhEAw7C0HAASEQDDoLQbkBIRAMOQtBrwEhEAw4C0GxASEQDDcLQbIBIRAMNgtBtAEhEAw1C0G1ASEQDDQLQboBIRAMMwtBvQEhEAwyC0G/ASEQDDELQcEBIRAMMAsgAEEANgIcIAAgBDYCFCAAQemLgIAANgIQIABBHzYCDEEAIRAMSAsgAEHbATYCHCAAIAQ2AhQgAEH6loCAADYCECAAQRU2AgxBACEQDEcLIABB+AA2AhwgACAMNgIUIABBypiAgAA2AhAgAEEVNgIMQQAhEAxGCyAAQdEANgIcIAAgBTYCFCAAQbCXgIAANgIQIABBFTYCDEEAIRAMRQsgAEH5ADYCHCAAIAE2AhQgACAQNgIMQQAhEAxECyAAQfgANgIcIAAgATYCFCAAQcqYgIAANgIQIABBFTYCDEEAIRAMQwsgAEHkADYCHCAAIAE2AhQgAEHjl4CAADYCECAAQRU2AgxBACEQDEILIABB1wA2AhwgACABNgIUIABByZeAgAA2AhAgAEEVNgIMQQAhEAxBCyAAQQA2AhwgACABNgIUIABBuY2AgAA2AhAgAEEaNgIMQQAhEAxACyAAQcIANgIcIAAgATYCFCAAQeOYgIAANgIQIABBFTYCDEEAIRAMPwsgAEEANgIEIAAgDyAPELGAgIAAIgRFDQEgAEE6NgIcIAAgBDYCDCAAIA9BAWo2AhRBACEQDD4LIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCxgICAACIERQ0AIABBOzYCHCAAIAQ2AgwgACABQQFqNgIUQQAhEAw+CyABQQFqIQEMLQsgD0EBaiEBDC0LIABBADYCHCAAIA82AhQgAEHkkoCAADYCECAAQQQ2AgxBACEQDDsLIABBNjYCHCAAIAQ2AhQgACACNgIMQQAhEAw6CyAAQS42AhwgACAONgIUIAAgBDYCDEEAIRAMOQsgAEHQADYCHCAAIAE2AhQgAEGRmICAADYCECAAQRU2AgxBACEQDDgLIA1BAWohAQwsCyAAQRU2AhwgACABNgIUIABBgpmAgAA2AhAgAEEVNgIMQQAhEAw2CyAAQRs2AhwgACABNgIUIABBkZeAgAA2AhAgAEEVNgIMQQAhEAw1CyAAQQ82AhwgACABNgIUIABBkZeAgAA2AhAgAEEVNgIMQQAhEAw0CyAAQQs2AhwgACABNgIUIABBkZeAgAA2AhAgAEEVNgIMQQAhEAwzCyAAQRo2AhwgACABNgIUIABBgpmAgAA2AhAgAEEVNgIMQQAhEAwyCyAAQQs2AhwgACABNgIUIABBgpmAgAA2AhAgAEEVNgIMQQAhEAwxCyAAQQo2AhwgACABNgIUIABB5JaAgAA2AhAgAEEVNgIMQQAhEAwwCyAAQR42AhwgACABNgIUIABB+ZeAgAA2AhAgAEEVNgIMQQAhEAwvCyAAQQA2AhwgACAQNgIUIABB2o2AgAA2AhAgAEEUNgIMQQAhEAwuCyAAQQQ2AhwgACABNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAwtCyAAQQA2AgAgC0EBaiELC0G4ASEQDBILIABBADYCACAQQQFqIQFB9QAhEAwRCyABIQECQCAALQApQQVHDQBB4wAhEAwRC0HiACEQDBALQQAhECAAQQA2AhwgAEHkkYCAADYCECAAQQc2AgwgACAUQQFqNgIUDCgLIABBADYCACAXQQFqIQFBwAAhEAwOC0EBIQELIAAgAToALCAAQQA2AgAgF0EBaiEBC0EoIRAMCwsgASEBC0E4IRAMCQsCQCABIg8gAkYNAANAAkAgDy0AAEGAvoCAAGotAAAiAUEBRg0AIAFBAkcNAyAPQQFqIQEMBAsgD0EBaiIPIAJHDQALQT4hEAwiC0E+IRAMIQsgAEEAOgAsIA8hAQwBC0ELIRAMBgtBOiEQDAULIAFBAWohAUEtIRAMBAsgACABOgAsIABBADYCACAWQQFqIQFBDCEQDAMLIABBADYCACAXQQFqIQFBCiEQDAILIABBADYCAAsgAEEAOgAsIA0hAUEJIRAMAAsLQQAhECAAQQA2AhwgACALNgIUIABBzZCAgAA2AhAgAEEJNgIMDBcLQQAhECAAQQA2AhwgACAKNgIUIABB6YqAgAA2AhAgAEEJNgIMDBYLQQAhECAAQQA2AhwgACAJNgIUIABBt5CAgAA2AhAgAEEJNgIMDBULQQAhECAAQQA2AhwgACAINgIUIABBnJGAgAA2AhAgAEEJNgIMDBQLQQAhECAAQQA2AhwgACABNgIUIABBzZCAgAA2AhAgAEEJNgIMDBMLQQAhECAAQQA2AhwgACABNgIUIABB6YqAgAA2AhAgAEEJNgIMDBILQQAhECAAQQA2AhwgACABNgIUIABBt5CAgAA2AhAgAEEJNgIMDBELQQAhECAAQQA2AhwgACABNgIUIABBnJGAgAA2AhAgAEEJNgIMDBALQQAhECAAQQA2AhwgACABNgIUIABBl5WAgAA2AhAgAEEPNgIMDA8LQQAhECAAQQA2AhwgACABNgIUIABBl5WAgAA2AhAgAEEPNgIMDA4LQQAhECAAQQA2AhwgACABNgIUIABBwJKAgAA2AhAgAEELNgIMDA0LQQAhECAAQQA2AhwgACABNgIUIABBlYmAgAA2AhAgAEELNgIMDAwLQQAhECAAQQA2AhwgACABNgIUIABB4Y+AgAA2AhAgAEEKNgIMDAsLQQAhECAAQQA2AhwgACABNgIUIABB+4+AgAA2AhAgAEEKNgIMDAoLQQAhECAAQQA2AhwgACABNgIUIABB8ZmAgAA2AhAgAEECNgIMDAkLQQAhECAAQQA2AhwgACABNgIUIABBxJSAgAA2AhAgAEECNgIMDAgLQQAhECAAQQA2AhwgACABNgIUIABB8pWAgAA2AhAgAEECNgIMDAcLIABBAjYCHCAAIAE2AhQgAEGcmoCAADYCECAAQRY2AgxBACEQDAYLQQEhEAwFC0HUACEQIAEiBCACRg0EIANBCGogACAEIAJB2MKAgABBChDFgICAACADKAIMIQQgAygCCA4DAQQCAAsQyoCAgAAACyAAQQA2AhwgAEG1moCAADYCECAAQRc2AgwgACAEQQFqNgIUQQAhEAwCCyAAQQA2AhwgACAENgIUIABBypqAgAA2AhAgAEEJNgIMQQAhEAwBCwJAIAEiBCACRw0AQSIhEAwBCyAAQYmAgIAANgIIIAAgBDYCBEEhIRALIANBEGokgICAgAAgEAuvAQECfyABKAIAIQYCQAJAIAIgA0YNACAEIAZqIQQgBiADaiACayEHIAIgBkF/cyAFaiIGaiEFA0ACQCACLQAAIAQtAABGDQBBAiEEDAMLAkAgBg0AQQAhBCAFIQIMAwsgBkF/aiEGIARBAWohBCACQQFqIgIgA0cNAAsgByEGIAMhAgsgAEEBNgIAIAEgBjYCACAAIAI2AgQPCyABQQA2AgAgACAENgIAIAAgAjYCBAsKACAAEMeAgIAAC/I2AQt/I4CAgIAAQRBrIgEkgICAgAACQEEAKAKg0ICAAA0AQQAQy4CAgABBgNSEgABrIgJB2QBJDQBBACEDAkBBACgC4NOAgAAiBA0AQQBCfzcC7NOAgABBAEKAgISAgIDAADcC5NOAgABBACABQQhqQXBxQdiq1aoFcyIENgLg04CAAEEAQQA2AvTTgIAAQQBBADYCxNOAgAALQQAgAjYCzNOAgABBAEGA1ISAADYCyNOAgABBAEGA1ISAADYCmNCAgABBACAENgKs0ICAAEEAQX82AqjQgIAAA0AgA0HE0ICAAGogA0G40ICAAGoiBDYCACAEIANBsNCAgABqIgU2AgAgA0G80ICAAGogBTYCACADQczQgIAAaiADQcDQgIAAaiIFNgIAIAUgBDYCACADQdTQgIAAaiADQcjQgIAAaiIENgIAIAQgBTYCACADQdDQgIAAaiAENgIAIANBIGoiA0GAAkcNAAtBgNSEgABBeEGA1ISAAGtBD3FBAEGA1ISAAEEIakEPcRsiA2oiBEEEaiACQUhqIgUgA2siA0EBcjYCAEEAQQAoAvDTgIAANgKk0ICAAEEAIAM2ApTQgIAAQQAgBDYCoNCAgABBgNSEgAAgBWpBODYCBAsCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEHsAUsNAAJAQQAoAojQgIAAIgZBECAAQRNqQXBxIABBC0kbIgJBA3YiBHYiA0EDcUUNAAJAAkAgA0EBcSAEckEBcyIFQQN0IgRBsNCAgABqIgMgBEG40ICAAGooAgAiBCgCCCICRw0AQQAgBkF+IAV3cTYCiNCAgAAMAQsgAyACNgIIIAIgAzYCDAsgBEEIaiEDIAQgBUEDdCIFQQNyNgIEIAQgBWoiBCAEKAIEQQFyNgIEDAwLIAJBACgCkNCAgAAiB00NAQJAIANFDQACQAJAIAMgBHRBAiAEdCIDQQAgA2tycSIDQQAgA2txQX9qIgMgA0EMdkEQcSIDdiIEQQV2QQhxIgUgA3IgBCAFdiIDQQJ2QQRxIgRyIAMgBHYiA0EBdkECcSIEciADIAR2IgNBAXZBAXEiBHIgAyAEdmoiBEEDdCIDQbDQgIAAaiIFIANBuNCAgABqKAIAIgMoAggiAEcNAEEAIAZBfiAEd3EiBjYCiNCAgAAMAQsgBSAANgIIIAAgBTYCDAsgAyACQQNyNgIEIAMgBEEDdCIEaiAEIAJrIgU2AgAgAyACaiIAIAVBAXI2AgQCQCAHRQ0AIAdBeHFBsNCAgABqIQJBACgCnNCAgAAhBAJAAkAgBkEBIAdBA3Z0IghxDQBBACAGIAhyNgKI0ICAACACIQgMAQsgAigCCCEICyAIIAQ2AgwgAiAENgIIIAQgAjYCDCAEIAg2AggLIANBCGohA0EAIAA2ApzQgIAAQQAgBTYCkNCAgAAMDAtBACgCjNCAgAAiCUUNASAJQQAgCWtxQX9qIgMgA0EMdkEQcSIDdiIEQQV2QQhxIgUgA3IgBCAFdiIDQQJ2QQRxIgRyIAMgBHYiA0EBdkECcSIEciADIAR2IgNBAXZBAXEiBHIgAyAEdmpBAnRBuNKAgABqKAIAIgAoAgRBeHEgAmshBCAAIQUCQANAAkAgBSgCECIDDQAgBUEUaigCACIDRQ0CCyADKAIEQXhxIAJrIgUgBCAFIARJIgUbIQQgAyAAIAUbIQAgAyEFDAALCyAAKAIYIQoCQCAAKAIMIgggAEYNACAAKAIIIgNBACgCmNCAgABJGiAIIAM2AgggAyAINgIMDAsLAkAgAEEUaiIFKAIAIgMNACAAKAIQIgNFDQMgAEEQaiEFCwNAIAUhCyADIghBFGoiBSgCACIDDQAgCEEQaiEFIAgoAhAiAw0ACyALQQA2AgAMCgtBfyECIABBv39LDQAgAEETaiIDQXBxIQJBACgCjNCAgAAiB0UNAEEAIQsCQCACQYACSQ0AQR8hCyACQf///wdLDQAgA0EIdiIDIANBgP4/akEQdkEIcSIDdCIEIARBgOAfakEQdkEEcSIEdCIFIAVBgIAPakEQdkECcSIFdEEPdiADIARyIAVyayIDQQF0IAIgA0EVanZBAXFyQRxqIQsLQQAgAmshBAJAAkACQAJAIAtBAnRBuNKAgABqKAIAIgUNAEEAIQNBACEIDAELQQAhAyACQQBBGSALQQF2ayALQR9GG3QhAEEAIQgDQAJAIAUoAgRBeHEgAmsiBiAETw0AIAYhBCAFIQggBg0AQQAhBCAFIQggBSEDDAMLIAMgBUEUaigCACIGIAYgBSAAQR12QQRxakEQaigCACIFRhsgAyAGGyEDIABBAXQhACAFDQALCwJAIAMgCHINAEEAIQhBAiALdCIDQQAgA2tyIAdxIgNFDQMgA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBUEFdkEIcSIAIANyIAUgAHYiA0ECdkEEcSIFciADIAV2IgNBAXZBAnEiBXIgAyAFdiIDQQF2QQFxIgVyIAMgBXZqQQJ0QbjSgIAAaigCACEDCyADRQ0BCwNAIAMoAgRBeHEgAmsiBiAESSEAAkAgAygCECIFDQAgA0EUaigCACEFCyAGIAQgABshBCADIAggABshCCAFIQMgBQ0ACwsgCEUNACAEQQAoApDQgIAAIAJrTw0AIAgoAhghCwJAIAgoAgwiACAIRg0AIAgoAggiA0EAKAKY0ICAAEkaIAAgAzYCCCADIAA2AgwMCQsCQCAIQRRqIgUoAgAiAw0AIAgoAhAiA0UNAyAIQRBqIQULA0AgBSEGIAMiAEEUaiIFKAIAIgMNACAAQRBqIQUgACgCECIDDQALIAZBADYCAAwICwJAQQAoApDQgIAAIgMgAkkNAEEAKAKc0ICAACEEAkACQCADIAJrIgVBEEkNACAEIAJqIgAgBUEBcjYCBEEAIAU2ApDQgIAAQQAgADYCnNCAgAAgBCADaiAFNgIAIAQgAkEDcjYCBAwBCyAEIANBA3I2AgQgBCADaiIDIAMoAgRBAXI2AgRBAEEANgKc0ICAAEEAQQA2ApDQgIAACyAEQQhqIQMMCgsCQEEAKAKU0ICAACIAIAJNDQBBACgCoNCAgAAiAyACaiIEIAAgAmsiBUEBcjYCBEEAIAU2ApTQgIAAQQAgBDYCoNCAgAAgAyACQQNyNgIEIANBCGohAwwKCwJAAkBBACgC4NOAgABFDQBBACgC6NOAgAAhBAwBC0EAQn83AuzTgIAAQQBCgICEgICAwAA3AuTTgIAAQQAgAUEMakFwcUHYqtWqBXM2AuDTgIAAQQBBADYC9NOAgABBAEEANgLE04CAAEGAgAQhBAtBACEDAkAgBCACQccAaiIHaiIGQQAgBGsiC3EiCCACSw0AQQBBMDYC+NOAgAAMCgsCQEEAKALA04CAACIDRQ0AAkBBACgCuNOAgAAiBCAIaiIFIARNDQAgBSADTQ0BC0EAIQNBAEEwNgL404CAAAwKC0EALQDE04CAAEEEcQ0EAkACQAJAQQAoAqDQgIAAIgRFDQBByNOAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiAESw0DCyADKAIIIgMNAAsLQQAQy4CAgAAiAEF/Rg0FIAghBgJAQQAoAuTTgIAAIgNBf2oiBCAAcUUNACAIIABrIAQgAGpBACADa3FqIQYLIAYgAk0NBSAGQf7///8HSw0FAkBBACgCwNOAgAAiA0UNAEEAKAK404CAACIEIAZqIgUgBE0NBiAFIANLDQYLIAYQy4CAgAAiAyAARw0BDAcLIAYgAGsgC3EiBkH+////B0sNBCAGEMuAgIAAIgAgAygCACADKAIEakYNAyAAIQMLAkAgA0F/Rg0AIAJByABqIAZNDQACQCAHIAZrQQAoAujTgIAAIgRqQQAgBGtxIgRB/v///wdNDQAgAyEADAcLAkAgBBDLgICAAEF/Rg0AIAQgBmohBiADIQAMBwtBACAGaxDLgICAABoMBAsgAyEAIANBf0cNBQwDC0EAIQgMBwtBACEADAULIABBf0cNAgtBAEEAKALE04CAAEEEcjYCxNOAgAALIAhB/v///wdLDQEgCBDLgICAACEAQQAQy4CAgAAhAyAAQX9GDQEgA0F/Rg0BIAAgA08NASADIABrIgYgAkE4ak0NAQtBAEEAKAK404CAACAGaiIDNgK404CAAAJAIANBACgCvNOAgABNDQBBACADNgK804CAAAsCQAJAAkACQEEAKAKg0ICAACIERQ0AQcjTgIAAIQMDQCAAIAMoAgAiBSADKAIEIghqRg0CIAMoAggiAw0ADAMLCwJAAkBBACgCmNCAgAAiA0UNACAAIANPDQELQQAgADYCmNCAgAALQQAhA0EAIAY2AszTgIAAQQAgADYCyNOAgABBAEF/NgKo0ICAAEEAQQAoAuDTgIAANgKs0ICAAEEAQQA2AtTTgIAAA0AgA0HE0ICAAGogA0G40ICAAGoiBDYCACAEIANBsNCAgABqIgU2AgAgA0G80ICAAGogBTYCACADQczQgIAAaiADQcDQgIAAaiIFNgIAIAUgBDYCACADQdTQgIAAaiADQcjQgIAAaiIENgIAIAQgBTYCACADQdDQgIAAaiAENgIAIANBIGoiA0GAAkcNAAsgAEF4IABrQQ9xQQAgAEEIakEPcRsiA2oiBCAGQUhqIgUgA2siA0EBcjYCBEEAQQAoAvDTgIAANgKk0ICAAEEAIAM2ApTQgIAAQQAgBDYCoNCAgAAgACAFakE4NgIEDAILIAMtAAxBCHENACAEIAVJDQAgBCAATw0AIARBeCAEa0EPcUEAIARBCGpBD3EbIgVqIgBBACgClNCAgAAgBmoiCyAFayIFQQFyNgIEIAMgCCAGajYCBEEAQQAoAvDTgIAANgKk0ICAAEEAIAU2ApTQgIAAQQAgADYCoNCAgAAgBCALakE4NgIEDAELAkAgAEEAKAKY0ICAACIITw0AQQAgADYCmNCAgAAgACEICyAAIAZqIQVByNOAgAAhAwJAAkACQAJAAkACQAJAA0AgAygCACAFRg0BIAMoAggiAw0ADAILCyADLQAMQQhxRQ0BC0HI04CAACEDA0ACQCADKAIAIgUgBEsNACAFIAMoAgRqIgUgBEsNAwsgAygCCCEDDAALCyADIAA2AgAgAyADKAIEIAZqNgIEIABBeCAAa0EPcUEAIABBCGpBD3EbaiILIAJBA3I2AgQgBUF4IAVrQQ9xQQAgBUEIakEPcRtqIgYgCyACaiICayEDAkAgBiAERw0AQQAgAjYCoNCAgABBAEEAKAKU0ICAACADaiIDNgKU0ICAACACIANBAXI2AgQMAwsCQCAGQQAoApzQgIAARw0AQQAgAjYCnNCAgABBAEEAKAKQ0ICAACADaiIDNgKQ0ICAACACIANBAXI2AgQgAiADaiADNgIADAMLAkAgBigCBCIEQQNxQQFHDQAgBEF4cSEHAkACQCAEQf8BSw0AIAYoAggiBSAEQQN2IghBA3RBsNCAgABqIgBGGgJAIAYoAgwiBCAFRw0AQQBBACgCiNCAgABBfiAId3E2AojQgIAADAILIAQgAEYaIAQgBTYCCCAFIAQ2AgwMAQsgBigCGCEJAkACQCAGKAIMIgAgBkYNACAGKAIIIgQgCEkaIAAgBDYCCCAEIAA2AgwMAQsCQCAGQRRqIgQoAgAiBQ0AIAZBEGoiBCgCACIFDQBBACEADAELA0AgBCEIIAUiAEEUaiIEKAIAIgUNACAAQRBqIQQgACgCECIFDQALIAhBADYCAAsgCUUNAAJAAkAgBiAGKAIcIgVBAnRBuNKAgABqIgQoAgBHDQAgBCAANgIAIAANAUEAQQAoAozQgIAAQX4gBXdxNgKM0ICAAAwCCyAJQRBBFCAJKAIQIAZGG2ogADYCACAARQ0BCyAAIAk2AhgCQCAGKAIQIgRFDQAgACAENgIQIAQgADYCGAsgBigCFCIERQ0AIABBFGogBDYCACAEIAA2AhgLIAcgA2ohAyAGIAdqIgYoAgQhBAsgBiAEQX5xNgIEIAIgA2ogAzYCACACIANBAXI2AgQCQCADQf8BSw0AIANBeHFBsNCAgABqIQQCQAJAQQAoAojQgIAAIgVBASADQQN2dCIDcQ0AQQAgBSADcjYCiNCAgAAgBCEDDAELIAQoAgghAwsgAyACNgIMIAQgAjYCCCACIAQ2AgwgAiADNgIIDAMLQR8hBAJAIANB////B0sNACADQQh2IgQgBEGA/j9qQRB2QQhxIgR0IgUgBUGA4B9qQRB2QQRxIgV0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAQgBXIgAHJrIgRBAXQgAyAEQRVqdkEBcXJBHGohBAsgAiAENgIcIAJCADcCECAEQQJ0QbjSgIAAaiEFAkBBACgCjNCAgAAiAEEBIAR0IghxDQAgBSACNgIAQQAgACAIcjYCjNCAgAAgAiAFNgIYIAIgAjYCCCACIAI2AgwMAwsgA0EAQRkgBEEBdmsgBEEfRht0IQQgBSgCACEAA0AgACIFKAIEQXhxIANGDQIgBEEddiEAIARBAXQhBCAFIABBBHFqQRBqIggoAgAiAA0ACyAIIAI2AgAgAiAFNgIYIAIgAjYCDCACIAI2AggMAgsgAEF4IABrQQ9xQQAgAEEIakEPcRsiA2oiCyAGQUhqIgggA2siA0EBcjYCBCAAIAhqQTg2AgQgBCAFQTcgBWtBD3FBACAFQUlqQQ9xG2pBQWoiCCAIIARBEGpJGyIIQSM2AgRBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAs2AqDQgIAAIAhBEGpBACkC0NOAgAA3AgAgCEEAKQLI04CAADcCCEEAIAhBCGo2AtDTgIAAQQAgBjYCzNOAgABBACAANgLI04CAAEEAQQA2AtTTgIAAIAhBJGohAwNAIANBBzYCACADQQRqIgMgBUkNAAsgCCAERg0DIAggCCgCBEF+cTYCBCAIIAggBGsiADYCACAEIABBAXI2AgQCQCAAQf8BSw0AIABBeHFBsNCAgABqIQMCQAJAQQAoAojQgIAAIgVBASAAQQN2dCIAcQ0AQQAgBSAAcjYCiNCAgAAgAyEFDAELIAMoAgghBQsgBSAENgIMIAMgBDYCCCAEIAM2AgwgBCAFNgIIDAQLQR8hAwJAIABB////B0sNACAAQQh2IgMgA0GA/j9qQRB2QQhxIgN0IgUgBUGA4B9qQRB2QQRxIgV0IgggCEGAgA9qQRB2QQJxIgh0QQ92IAMgBXIgCHJrIgNBAXQgACADQRVqdkEBcXJBHGohAwsgBCADNgIcIARCADcCECADQQJ0QbjSgIAAaiEFAkBBACgCjNCAgAAiCEEBIAN0IgZxDQAgBSAENgIAQQAgCCAGcjYCjNCAgAAgBCAFNgIYIAQgBDYCCCAEIAQ2AgwMBAsgAEEAQRkgA0EBdmsgA0EfRht0IQMgBSgCACEIA0AgCCIFKAIEQXhxIABGDQMgA0EddiEIIANBAXQhAyAFIAhBBHFqQRBqIgYoAgAiCA0ACyAGIAQ2AgAgBCAFNgIYIAQgBDYCDCAEIAQ2AggMAwsgBSgCCCIDIAI2AgwgBSACNgIIIAJBADYCGCACIAU2AgwgAiADNgIICyALQQhqIQMMBQsgBSgCCCIDIAQ2AgwgBSAENgIIIARBADYCGCAEIAU2AgwgBCADNgIIC0EAKAKU0ICAACIDIAJNDQBBACgCoNCAgAAiBCACaiIFIAMgAmsiA0EBcjYCBEEAIAM2ApTQgIAAQQAgBTYCoNCAgAAgBCACQQNyNgIEIARBCGohAwwDC0EAIQNBAEEwNgL404CAAAwCCwJAIAtFDQACQAJAIAggCCgCHCIFQQJ0QbjSgIAAaiIDKAIARw0AIAMgADYCACAADQFBACAHQX4gBXdxIgc2AozQgIAADAILIAtBEEEUIAsoAhAgCEYbaiAANgIAIABFDQELIAAgCzYCGAJAIAgoAhAiA0UNACAAIAM2AhAgAyAANgIYCyAIQRRqKAIAIgNFDQAgAEEUaiADNgIAIAMgADYCGAsCQAJAIARBD0sNACAIIAQgAmoiA0EDcjYCBCAIIANqIgMgAygCBEEBcjYCBAwBCyAIIAJqIgAgBEEBcjYCBCAIIAJBA3I2AgQgACAEaiAENgIAAkAgBEH/AUsNACAEQXhxQbDQgIAAaiEDAkACQEEAKAKI0ICAACIFQQEgBEEDdnQiBHENAEEAIAUgBHI2AojQgIAAIAMhBAwBCyADKAIIIQQLIAQgADYCDCADIAA2AgggACADNgIMIAAgBDYCCAwBC0EfIQMCQCAEQf///wdLDQAgBEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCICIAJBgIAPakEQdkECcSICdEEPdiADIAVyIAJyayIDQQF0IAQgA0EVanZBAXFyQRxqIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEG40oCAAGohBQJAIAdBASADdCICcQ0AIAUgADYCAEEAIAcgAnI2AozQgIAAIAAgBTYCGCAAIAA2AgggACAANgIMDAELIARBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhAgJAA0AgAiIFKAIEQXhxIARGDQEgA0EddiECIANBAXQhAyAFIAJBBHFqQRBqIgYoAgAiAg0ACyAGIAA2AgAgACAFNgIYIAAgADYCDCAAIAA2AggMAQsgBSgCCCIDIAA2AgwgBSAANgIIIABBADYCGCAAIAU2AgwgACADNgIICyAIQQhqIQMMAQsCQCAKRQ0AAkACQCAAIAAoAhwiBUECdEG40oCAAGoiAygCAEcNACADIAg2AgAgCA0BQQAgCUF+IAV3cTYCjNCAgAAMAgsgCkEQQRQgCigCECAARhtqIAg2AgAgCEUNAQsgCCAKNgIYAkAgACgCECIDRQ0AIAggAzYCECADIAg2AhgLIABBFGooAgAiA0UNACAIQRRqIAM2AgAgAyAINgIYCwJAAkAgBEEPSw0AIAAgBCACaiIDQQNyNgIEIAAgA2oiAyADKAIEQQFyNgIEDAELIAAgAmoiBSAEQQFyNgIEIAAgAkEDcjYCBCAFIARqIAQ2AgACQCAHRQ0AIAdBeHFBsNCAgABqIQJBACgCnNCAgAAhAwJAAkBBASAHQQN2dCIIIAZxDQBBACAIIAZyNgKI0ICAACACIQgMAQsgAigCCCEICyAIIAM2AgwgAiADNgIIIAMgAjYCDCADIAg2AggLQQAgBTYCnNCAgABBACAENgKQ0ICAAAsgAEEIaiEDCyABQRBqJICAgIAAIAMLCgAgABDJgICAAAviDQEHfwJAIABFDQAgAEF4aiIBIABBfGooAgAiAkF4cSIAaiEDAkAgAkEBcQ0AIAJBA3FFDQEgASABKAIAIgJrIgFBACgCmNCAgAAiBEkNASACIABqIQACQCABQQAoApzQgIAARg0AAkAgAkH/AUsNACABKAIIIgQgAkEDdiIFQQN0QbDQgIAAaiIGRhoCQCABKAIMIgIgBEcNAEEAQQAoAojQgIAAQX4gBXdxNgKI0ICAAAwDCyACIAZGGiACIAQ2AgggBCACNgIMDAILIAEoAhghBwJAAkAgASgCDCIGIAFGDQAgASgCCCICIARJGiAGIAI2AgggAiAGNgIMDAELAkAgAUEUaiICKAIAIgQNACABQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQECQAJAIAEgASgCHCIEQQJ0QbjSgIAAaiICKAIARw0AIAIgBjYCACAGDQFBAEEAKAKM0ICAAEF+IAR3cTYCjNCAgAAMAwsgB0EQQRQgBygCECABRhtqIAY2AgAgBkUNAgsgBiAHNgIYAkAgASgCECICRQ0AIAYgAjYCECACIAY2AhgLIAEoAhQiAkUNASAGQRRqIAI2AgAgAiAGNgIYDAELIAMoAgQiAkEDcUEDRw0AIAMgAkF+cTYCBEEAIAA2ApDQgIAAIAEgAGogADYCACABIABBAXI2AgQPCyABIANPDQAgAygCBCICQQFxRQ0AAkACQCACQQJxDQACQCADQQAoAqDQgIAARw0AQQAgATYCoNCAgABBAEEAKAKU0ICAACAAaiIANgKU0ICAACABIABBAXI2AgQgAUEAKAKc0ICAAEcNA0EAQQA2ApDQgIAAQQBBADYCnNCAgAAPCwJAIANBACgCnNCAgABHDQBBACABNgKc0ICAAEEAQQAoApDQgIAAIABqIgA2ApDQgIAAIAEgAEEBcjYCBCABIABqIAA2AgAPCyACQXhxIABqIQACQAJAIAJB/wFLDQAgAygCCCIEIAJBA3YiBUEDdEGw0ICAAGoiBkYaAkAgAygCDCICIARHDQBBAEEAKAKI0ICAAEF+IAV3cTYCiNCAgAAMAgsgAiAGRhogAiAENgIIIAQgAjYCDAwBCyADKAIYIQcCQAJAIAMoAgwiBiADRg0AIAMoAggiAkEAKAKY0ICAAEkaIAYgAjYCCCACIAY2AgwMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEGDAELA0AgAiEFIAQiBkEUaiICKAIAIgQNACAGQRBqIQIgBigCECIEDQALIAVBADYCAAsgB0UNAAJAAkAgAyADKAIcIgRBAnRBuNKAgABqIgIoAgBHDQAgAiAGNgIAIAYNAUEAQQAoAozQgIAAQX4gBHdxNgKM0ICAAAwCCyAHQRBBFCAHKAIQIANGG2ogBjYCACAGRQ0BCyAGIAc2AhgCQCADKAIQIgJFDQAgBiACNgIQIAIgBjYCGAsgAygCFCICRQ0AIAZBFGogAjYCACACIAY2AhgLIAEgAGogADYCACABIABBAXI2AgQgAUEAKAKc0ICAAEcNAUEAIAA2ApDQgIAADwsgAyACQX5xNgIEIAEgAGogADYCACABIABBAXI2AgQLAkAgAEH/AUsNACAAQXhxQbDQgIAAaiECAkACQEEAKAKI0ICAACIEQQEgAEEDdnQiAHENAEEAIAQgAHI2AojQgIAAIAIhAAwBCyACKAIIIQALIAAgATYCDCACIAE2AgggASACNgIMIAEgADYCCA8LQR8hAgJAIABB////B0sNACAAQQh2IgIgAkGA/j9qQRB2QQhxIgJ0IgQgBEGA4B9qQRB2QQRxIgR0IgYgBkGAgA9qQRB2QQJxIgZ0QQ92IAIgBHIgBnJrIgJBAXQgACACQRVqdkEBcXJBHGohAgsgASACNgIcIAFCADcCECACQQJ0QbjSgIAAaiEEAkACQEEAKAKM0ICAACIGQQEgAnQiA3ENACAEIAE2AgBBACAGIANyNgKM0ICAACABIAQ2AhggASABNgIIIAEgATYCDAwBCyAAQQBBGSACQQF2ayACQR9GG3QhAiAEKAIAIQYCQANAIAYiBCgCBEF4cSAARg0BIAJBHXYhBiACQQF0IQIgBCAGQQRxakEQaiIDKAIAIgYNAAsgAyABNgIAIAEgBDYCGCABIAE2AgwgASABNgIIDAELIAQoAggiACABNgIMIAQgATYCCCABQQA2AhggASAENgIMIAEgADYCCAtBAEEAKAKo0ICAAEF/aiIBQX8gARs2AqjQgIAACwsEAAAAC04AAkAgAA0APwBBEHQPCwJAIABB//8DcQ0AIABBf0wNAAJAIABBEHZAACIAQX9HDQBBAEEwNgL404CAAEF/DwsgAEEQdA8LEMqAgIAAAAvyAgIDfwF+AkAgAkUNACAAIAE6AAAgAiAAaiIDQX9qIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0F9aiABOgAAIANBfmogAToAACACQQdJDQAgACABOgADIANBfGogAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkF8aiABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBeGogATYCACACQXRqIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQXBqIAE2AgAgAkFsaiABNgIAIAJBaGogATYCACACQWRqIAE2AgAgBCADQQRxQRhyIgVrIgJBIEkNACABrUKBgICAEH4hBiADIAVqIQEDQCABIAY3AxggASAGNwMQIAEgBjcDCCABIAY3AwAgAUEgaiEBIAJBYGoiAkEfSw0ACwsgAAsLjkgBAEGACAuGSAEAAAACAAAAAwAAAAAAAAAAAAAABAAAAAUAAAAAAAAAAAAAAAYAAAAHAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=='
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/llhttp_simd.wasm b/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/llhttp_simd.wasm
deleted file mode 100755
index 7aa0b55..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/llhttp_simd.wasm
+++ /dev/null
Binary files differ
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/utils.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/utils.d.ts
deleted file mode 100644
index 15497f3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/utils.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export interface IEnumMap {
-    [key: string]: number;
-}
-export declare function enumToMap(obj: any): IEnumMap;
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/utils.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/utils.js
deleted file mode 100644
index 8a32e56..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/utils.js
+++ /dev/null
@@ -1,15 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.enumToMap = void 0;
-function enumToMap(obj) {
-    const res = {};
-    Object.keys(obj).forEach((key) => {
-        const value = obj[key];
-        if (typeof value === 'number') {
-            res[key] = value;
-        }
-    });
-    return res;
-}
-exports.enumToMap = enumToMap;
-//# sourceMappingURL=utils.js.map
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/utils.js.map b/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/utils.js.map
deleted file mode 100644
index 2d7c356..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/utils.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/llhttp/utils.ts"],"names":[],"mappings":";;;AAIA,SAAgB,SAAS,CAAC,GAAQ;IAChC,MAAM,GAAG,GAAa,EAAE,CAAC;IAEzB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAClB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAXD,8BAWC"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/wasm_build_env.txt b/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/wasm_build_env.txt
deleted file mode 100644
index 5f478b5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/llhttp/wasm_build_env.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-alpine-baselayout-data-3.4.0-r0
-musl-1.2.3-r4
-busybox-1.35.0-r29
-busybox-binsh-1.35.0-r29
-alpine-baselayout-3.4.0-r0
-alpine-keys-2.4-r1
-ca-certificates-bundle-20220614-r4
-libcrypto3-3.0.8-r3
-libssl3-3.0.8-r3
-ssl_client-1.35.0-r29
-zlib-1.2.13-r0
-apk-tools-2.12.10-r1
-scanelf-1.3.5-r1
-musl-utils-1.2.3-r4
-libc-utils-0.7.2-r3
-libgcc-12.2.1_git20220924-r4
-libstdc++-12.2.1_git20220924-r4
-libffi-3.4.4-r0
-xz-libs-5.2.9-r0
-libxml2-2.10.4-r0
-zstd-libs-1.5.5-r0
-llvm15-libs-15.0.7-r0
-clang15-libs-15.0.7-r0
-libstdc++-dev-12.2.1_git20220924-r4
-clang15-15.0.7-r0
-lld-libs-15.0.7-r0
-lld-15.0.7-r0
-wasi-libc-0.20220525-r1
-wasi-libcxx-15.0.7-r0
-wasi-libcxxabi-15.0.7-r0
-wasi-compiler-rt-15.0.7-r0
-wasi-sdk-16-r0
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-agent.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-agent.js
deleted file mode 100644
index 828e8af..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-agent.js
+++ /dev/null
@@ -1,171 +0,0 @@
-'use strict'
-
-const { kClients } = require('../core/symbols')
-const Agent = require('../agent')
-const {
-  kAgent,
-  kMockAgentSet,
-  kMockAgentGet,
-  kDispatches,
-  kIsMockActive,
-  kNetConnect,
-  kGetNetConnect,
-  kOptions,
-  kFactory
-} = require('./mock-symbols')
-const MockClient = require('./mock-client')
-const MockPool = require('./mock-pool')
-const { matchValue, buildMockOptions } = require('./mock-utils')
-const { InvalidArgumentError, UndiciError } = require('../core/errors')
-const Dispatcher = require('../dispatcher')
-const Pluralizer = require('./pluralizer')
-const PendingInterceptorsFormatter = require('./pending-interceptors-formatter')
-
-class FakeWeakRef {
-  constructor (value) {
-    this.value = value
-  }
-
-  deref () {
-    return this.value
-  }
-}
-
-class MockAgent extends Dispatcher {
-  constructor (opts) {
-    super(opts)
-
-    this[kNetConnect] = true
-    this[kIsMockActive] = true
-
-    // Instantiate Agent and encapsulate
-    if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) {
-      throw new InvalidArgumentError('Argument opts.agent must implement Agent')
-    }
-    const agent = opts && opts.agent ? opts.agent : new Agent(opts)
-    this[kAgent] = agent
-
-    this[kClients] = agent[kClients]
-    this[kOptions] = buildMockOptions(opts)
-  }
-
-  get (origin) {
-    let dispatcher = this[kMockAgentGet](origin)
-
-    if (!dispatcher) {
-      dispatcher = this[kFactory](origin)
-      this[kMockAgentSet](origin, dispatcher)
-    }
-    return dispatcher
-  }
-
-  dispatch (opts, handler) {
-    // Call MockAgent.get to perform additional setup before dispatching as normal
-    this.get(opts.origin)
-    return this[kAgent].dispatch(opts, handler)
-  }
-
-  async close () {
-    await this[kAgent].close()
-    this[kClients].clear()
-  }
-
-  deactivate () {
-    this[kIsMockActive] = false
-  }
-
-  activate () {
-    this[kIsMockActive] = true
-  }
-
-  enableNetConnect (matcher) {
-    if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) {
-      if (Array.isArray(this[kNetConnect])) {
-        this[kNetConnect].push(matcher)
-      } else {
-        this[kNetConnect] = [matcher]
-      }
-    } else if (typeof matcher === 'undefined') {
-      this[kNetConnect] = true
-    } else {
-      throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.')
-    }
-  }
-
-  disableNetConnect () {
-    this[kNetConnect] = false
-  }
-
-  // This is required to bypass issues caused by using global symbols - see:
-  // https://github.com/nodejs/undici/issues/1447
-  get isMockActive () {
-    return this[kIsMockActive]
-  }
-
-  [kMockAgentSet] (origin, dispatcher) {
-    this[kClients].set(origin, new FakeWeakRef(dispatcher))
-  }
-
-  [kFactory] (origin) {
-    const mockOptions = Object.assign({ agent: this }, this[kOptions])
-    return this[kOptions] && this[kOptions].connections === 1
-      ? new MockClient(origin, mockOptions)
-      : new MockPool(origin, mockOptions)
-  }
-
-  [kMockAgentGet] (origin) {
-    // First check if we can immediately find it
-    const ref = this[kClients].get(origin)
-    if (ref) {
-      return ref.deref()
-    }
-
-    // If the origin is not a string create a dummy parent pool and return to user
-    if (typeof origin !== 'string') {
-      const dispatcher = this[kFactory]('http://localhost:9999')
-      this[kMockAgentSet](origin, dispatcher)
-      return dispatcher
-    }
-
-    // If we match, create a pool and assign the same dispatches
-    for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) {
-      const nonExplicitDispatcher = nonExplicitRef.deref()
-      if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {
-        const dispatcher = this[kFactory](origin)
-        this[kMockAgentSet](origin, dispatcher)
-        dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]
-        return dispatcher
-      }
-    }
-  }
-
-  [kGetNetConnect] () {
-    return this[kNetConnect]
-  }
-
-  pendingInterceptors () {
-    const mockAgentClients = this[kClients]
-
-    return Array.from(mockAgentClients.entries())
-      .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin })))
-      .filter(({ pending }) => pending)
-  }
-
-  assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {
-    const pending = this.pendingInterceptors()
-
-    if (pending.length === 0) {
-      return
-    }
-
-    const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length)
-
-    throw new UndiciError(`
-${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending:
-
-${pendingInterceptorsFormatter.format(pending)}
-`.trim())
-  }
-}
-
-module.exports = MockAgent
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-client.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-client.js
deleted file mode 100644
index 5f31215..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-client.js
+++ /dev/null
@@ -1,59 +0,0 @@
-'use strict'
-
-const { promisify } = require('util')
-const Client = require('../client')
-const { buildMockDispatch } = require('./mock-utils')
-const {
-  kDispatches,
-  kMockAgent,
-  kClose,
-  kOriginalClose,
-  kOrigin,
-  kOriginalDispatch,
-  kConnected
-} = require('./mock-symbols')
-const { MockInterceptor } = require('./mock-interceptor')
-const Symbols = require('../core/symbols')
-const { InvalidArgumentError } = require('../core/errors')
-
-/**
- * MockClient provides an API that extends the Client to influence the mockDispatches.
- */
-class MockClient extends Client {
-  constructor (origin, opts) {
-    super(origin, opts)
-
-    if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {
-      throw new InvalidArgumentError('Argument opts.agent must implement Agent')
-    }
-
-    this[kMockAgent] = opts.agent
-    this[kOrigin] = origin
-    this[kDispatches] = []
-    this[kConnected] = 1
-    this[kOriginalDispatch] = this.dispatch
-    this[kOriginalClose] = this.close.bind(this)
-
-    this.dispatch = buildMockDispatch.call(this)
-    this.close = this[kClose]
-  }
-
-  get [Symbols.kConnected] () {
-    return this[kConnected]
-  }
-
-  /**
-   * Sets up the base interceptor for mocking replies from undici.
-   */
-  intercept (opts) {
-    return new MockInterceptor(opts, this[kDispatches])
-  }
-
-  async [kClose] () {
-    await promisify(this[kOriginalClose])()
-    this[kConnected] = 0
-    this[kMockAgent][Symbols.kClients].delete(this[kOrigin])
-  }
-}
-
-module.exports = MockClient
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-errors.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-errors.js
deleted file mode 100644
index 5442c0e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-errors.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-
-const { UndiciError } = require('../core/errors')
-
-class MockNotMatchedError extends UndiciError {
-  constructor (message) {
-    super(message)
-    Error.captureStackTrace(this, MockNotMatchedError)
-    this.name = 'MockNotMatchedError'
-    this.message = message || 'The request does not match any registered mock dispatches'
-    this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'
-  }
-}
-
-module.exports = {
-  MockNotMatchedError
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-interceptor.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-interceptor.js
deleted file mode 100644
index 781e477..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-interceptor.js
+++ /dev/null
@@ -1,206 +0,0 @@
-'use strict'
-
-const { getResponseData, buildKey, addMockDispatch } = require('./mock-utils')
-const {
-  kDispatches,
-  kDispatchKey,
-  kDefaultHeaders,
-  kDefaultTrailers,
-  kContentLength,
-  kMockDispatch
-} = require('./mock-symbols')
-const { InvalidArgumentError } = require('../core/errors')
-const { buildURL } = require('../core/util')
-
-/**
- * Defines the scope API for an interceptor reply
- */
-class MockScope {
-  constructor (mockDispatch) {
-    this[kMockDispatch] = mockDispatch
-  }
-
-  /**
-   * Delay a reply by a set amount in ms.
-   */
-  delay (waitInMs) {
-    if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) {
-      throw new InvalidArgumentError('waitInMs must be a valid integer > 0')
-    }
-
-    this[kMockDispatch].delay = waitInMs
-    return this
-  }
-
-  /**
-   * For a defined reply, never mark as consumed.
-   */
-  persist () {
-    this[kMockDispatch].persist = true
-    return this
-  }
-
-  /**
-   * Allow one to define a reply for a set amount of matching requests.
-   */
-  times (repeatTimes) {
-    if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) {
-      throw new InvalidArgumentError('repeatTimes must be a valid integer > 0')
-    }
-
-    this[kMockDispatch].times = repeatTimes
-    return this
-  }
-}
-
-/**
- * Defines an interceptor for a Mock
- */
-class MockInterceptor {
-  constructor (opts, mockDispatches) {
-    if (typeof opts !== 'object') {
-      throw new InvalidArgumentError('opts must be an object')
-    }
-    if (typeof opts.path === 'undefined') {
-      throw new InvalidArgumentError('opts.path must be defined')
-    }
-    if (typeof opts.method === 'undefined') {
-      opts.method = 'GET'
-    }
-    // See https://github.com/nodejs/undici/issues/1245
-    // As per RFC 3986, clients are not supposed to send URI
-    // fragments to servers when they retrieve a document,
-    if (typeof opts.path === 'string') {
-      if (opts.query) {
-        opts.path = buildURL(opts.path, opts.query)
-      } else {
-        // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811
-        const parsedURL = new URL(opts.path, 'data://')
-        opts.path = parsedURL.pathname + parsedURL.search
-      }
-    }
-    if (typeof opts.method === 'string') {
-      opts.method = opts.method.toUpperCase()
-    }
-
-    this[kDispatchKey] = buildKey(opts)
-    this[kDispatches] = mockDispatches
-    this[kDefaultHeaders] = {}
-    this[kDefaultTrailers] = {}
-    this[kContentLength] = false
-  }
-
-  createMockScopeDispatchData (statusCode, data, responseOptions = {}) {
-    const responseData = getResponseData(data)
-    const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}
-    const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }
-    const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }
-
-    return { statusCode, data, headers, trailers }
-  }
-
-  validateReplyParameters (statusCode, data, responseOptions) {
-    if (typeof statusCode === 'undefined') {
-      throw new InvalidArgumentError('statusCode must be defined')
-    }
-    if (typeof data === 'undefined') {
-      throw new InvalidArgumentError('data must be defined')
-    }
-    if (typeof responseOptions !== 'object') {
-      throw new InvalidArgumentError('responseOptions must be an object')
-    }
-  }
-
-  /**
-   * Mock an undici request with a defined reply.
-   */
-  reply (replyData) {
-    // Values of reply aren't available right now as they
-    // can only be available when the reply callback is invoked.
-    if (typeof replyData === 'function') {
-      // We'll first wrap the provided callback in another function,
-      // this function will properly resolve the data from the callback
-      // when invoked.
-      const wrappedDefaultsCallback = (opts) => {
-        // Our reply options callback contains the parameter for statusCode, data and options.
-        const resolvedData = replyData(opts)
-
-        // Check if it is in the right format
-        if (typeof resolvedData !== 'object') {
-          throw new InvalidArgumentError('reply options callback must return an object')
-        }
-
-        const { statusCode, data = '', responseOptions = {} } = resolvedData
-        this.validateReplyParameters(statusCode, data, responseOptions)
-        // Since the values can be obtained immediately we return them
-        // from this higher order function that will be resolved later.
-        return {
-          ...this.createMockScopeDispatchData(statusCode, data, responseOptions)
-        }
-      }
-
-      // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.
-      const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback)
-      return new MockScope(newMockDispatch)
-    }
-
-    // We can have either one or three parameters, if we get here,
-    // we should have 1-3 parameters. So we spread the arguments of
-    // this function to obtain the parameters, since replyData will always
-    // just be the statusCode.
-    const [statusCode, data = '', responseOptions = {}] = [...arguments]
-    this.validateReplyParameters(statusCode, data, responseOptions)
-
-    // Send in-already provided data like usual
-    const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions)
-    const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData)
-    return new MockScope(newMockDispatch)
-  }
-
-  /**
-   * Mock an undici request with a defined error.
-   */
-  replyWithError (error) {
-    if (typeof error === 'undefined') {
-      throw new InvalidArgumentError('error must be defined')
-    }
-
-    const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error })
-    return new MockScope(newMockDispatch)
-  }
-
-  /**
-   * Set default reply headers on the interceptor for subsequent replies
-   */
-  defaultReplyHeaders (headers) {
-    if (typeof headers === 'undefined') {
-      throw new InvalidArgumentError('headers must be defined')
-    }
-
-    this[kDefaultHeaders] = headers
-    return this
-  }
-
-  /**
-   * Set default reply trailers on the interceptor for subsequent replies
-   */
-  defaultReplyTrailers (trailers) {
-    if (typeof trailers === 'undefined') {
-      throw new InvalidArgumentError('trailers must be defined')
-    }
-
-    this[kDefaultTrailers] = trailers
-    return this
-  }
-
-  /**
-   * Set reply content length header for replies on the interceptor
-   */
-  replyContentLength () {
-    this[kContentLength] = true
-    return this
-  }
-}
-
-module.exports.MockInterceptor = MockInterceptor
-module.exports.MockScope = MockScope
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-pool.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-pool.js
deleted file mode 100644
index 0a3a7cd..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-pool.js
+++ /dev/null
@@ -1,59 +0,0 @@
-'use strict'
-
-const { promisify } = require('util')
-const Pool = require('../pool')
-const { buildMockDispatch } = require('./mock-utils')
-const {
-  kDispatches,
-  kMockAgent,
-  kClose,
-  kOriginalClose,
-  kOrigin,
-  kOriginalDispatch,
-  kConnected
-} = require('./mock-symbols')
-const { MockInterceptor } = require('./mock-interceptor')
-const Symbols = require('../core/symbols')
-const { InvalidArgumentError } = require('../core/errors')
-
-/**
- * MockPool provides an API that extends the Pool to influence the mockDispatches.
- */
-class MockPool extends Pool {
-  constructor (origin, opts) {
-    super(origin, opts)
-
-    if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {
-      throw new InvalidArgumentError('Argument opts.agent must implement Agent')
-    }
-
-    this[kMockAgent] = opts.agent
-    this[kOrigin] = origin
-    this[kDispatches] = []
-    this[kConnected] = 1
-    this[kOriginalDispatch] = this.dispatch
-    this[kOriginalClose] = this.close.bind(this)
-
-    this.dispatch = buildMockDispatch.call(this)
-    this.close = this[kClose]
-  }
-
-  get [Symbols.kConnected] () {
-    return this[kConnected]
-  }
-
-  /**
-   * Sets up the base interceptor for mocking replies from undici.
-   */
-  intercept (opts) {
-    return new MockInterceptor(opts, this[kDispatches])
-  }
-
-  async [kClose] () {
-    await promisify(this[kOriginalClose])()
-    this[kConnected] = 0
-    this[kMockAgent][Symbols.kClients].delete(this[kOrigin])
-  }
-}
-
-module.exports = MockPool
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-symbols.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-symbols.js
deleted file mode 100644
index 8c4cbb6..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-symbols.js
+++ /dev/null
@@ -1,23 +0,0 @@
-'use strict'
-
-module.exports = {
-  kAgent: Symbol('agent'),
-  kOptions: Symbol('options'),
-  kFactory: Symbol('factory'),
-  kDispatches: Symbol('dispatches'),
-  kDispatchKey: Symbol('dispatch key'),
-  kDefaultHeaders: Symbol('default headers'),
-  kDefaultTrailers: Symbol('default trailers'),
-  kContentLength: Symbol('content length'),
-  kMockAgent: Symbol('mock agent'),
-  kMockAgentSet: Symbol('mock agent set'),
-  kMockAgentGet: Symbol('mock agent get'),
-  kMockDispatch: Symbol('mock dispatch'),
-  kClose: Symbol('close'),
-  kOriginalClose: Symbol('original agent close'),
-  kOrigin: Symbol('origin'),
-  kIsMockActive: Symbol('is mock active'),
-  kNetConnect: Symbol('net connect'),
-  kGetNetConnect: Symbol('get net connect'),
-  kConnected: Symbol('connected')
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-utils.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-utils.js
deleted file mode 100644
index 42ea185..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/mock-utils.js
+++ /dev/null
@@ -1,351 +0,0 @@
-'use strict'
-
-const { MockNotMatchedError } = require('./mock-errors')
-const {
-  kDispatches,
-  kMockAgent,
-  kOriginalDispatch,
-  kOrigin,
-  kGetNetConnect
-} = require('./mock-symbols')
-const { buildURL, nop } = require('../core/util')
-const { STATUS_CODES } = require('http')
-const {
-  types: {
-    isPromise
-  }
-} = require('util')
-
-function matchValue (match, value) {
-  if (typeof match === 'string') {
-    return match === value
-  }
-  if (match instanceof RegExp) {
-    return match.test(value)
-  }
-  if (typeof match === 'function') {
-    return match(value) === true
-  }
-  return false
-}
-
-function lowerCaseEntries (headers) {
-  return Object.fromEntries(
-    Object.entries(headers).map(([headerName, headerValue]) => {
-      return [headerName.toLocaleLowerCase(), headerValue]
-    })
-  )
-}
-
-/**
- * @param {import('../../index').Headers|string[]|Record<string, string>} headers
- * @param {string} key
- */
-function getHeaderByName (headers, key) {
-  if (Array.isArray(headers)) {
-    for (let i = 0; i < headers.length; i += 2) {
-      if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {
-        return headers[i + 1]
-      }
-    }
-
-    return undefined
-  } else if (typeof headers.get === 'function') {
-    return headers.get(key)
-  } else {
-    return lowerCaseEntries(headers)[key.toLocaleLowerCase()]
-  }
-}
-
-/** @param {string[]} headers */
-function buildHeadersFromArray (headers) { // fetch HeadersList
-  const clone = headers.slice()
-  const entries = []
-  for (let index = 0; index < clone.length; index += 2) {
-    entries.push([clone[index], clone[index + 1]])
-  }
-  return Object.fromEntries(entries)
-}
-
-function matchHeaders (mockDispatch, headers) {
-  if (typeof mockDispatch.headers === 'function') {
-    if (Array.isArray(headers)) { // fetch HeadersList
-      headers = buildHeadersFromArray(headers)
-    }
-    return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {})
-  }
-  if (typeof mockDispatch.headers === 'undefined') {
-    return true
-  }
-  if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') {
-    return false
-  }
-
-  for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) {
-    const headerValue = getHeaderByName(headers, matchHeaderName)
-
-    if (!matchValue(matchHeaderValue, headerValue)) {
-      return false
-    }
-  }
-  return true
-}
-
-function safeUrl (path) {
-  if (typeof path !== 'string') {
-    return path
-  }
-
-  const pathSegments = path.split('?')
-
-  if (pathSegments.length !== 2) {
-    return path
-  }
-
-  const qp = new URLSearchParams(pathSegments.pop())
-  qp.sort()
-  return [...pathSegments, qp.toString()].join('?')
-}
-
-function matchKey (mockDispatch, { path, method, body, headers }) {
-  const pathMatch = matchValue(mockDispatch.path, path)
-  const methodMatch = matchValue(mockDispatch.method, method)
-  const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true
-  const headersMatch = matchHeaders(mockDispatch, headers)
-  return pathMatch && methodMatch && bodyMatch && headersMatch
-}
-
-function getResponseData (data) {
-  if (Buffer.isBuffer(data)) {
-    return data
-  } else if (typeof data === 'object') {
-    return JSON.stringify(data)
-  } else {
-    return data.toString()
-  }
-}
-
-function getMockDispatch (mockDispatches, key) {
-  const basePath = key.query ? buildURL(key.path, key.query) : key.path
-  const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath
-
-  // Match path
-  let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath))
-  if (matchedMockDispatches.length === 0) {
-    throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`)
-  }
-
-  // Match method
-  matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method))
-  if (matchedMockDispatches.length === 0) {
-    throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`)
-  }
-
-  // Match body
-  matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true)
-  if (matchedMockDispatches.length === 0) {
-    throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`)
-  }
-
-  // Match headers
-  matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers))
-  if (matchedMockDispatches.length === 0) {
-    throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`)
-  }
-
-  return matchedMockDispatches[0]
-}
-
-function addMockDispatch (mockDispatches, key, data) {
-  const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }
-  const replyData = typeof data === 'function' ? { callback: data } : { ...data }
-  const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }
-  mockDispatches.push(newMockDispatch)
-  return newMockDispatch
-}
-
-function deleteMockDispatch (mockDispatches, key) {
-  const index = mockDispatches.findIndex(dispatch => {
-    if (!dispatch.consumed) {
-      return false
-    }
-    return matchKey(dispatch, key)
-  })
-  if (index !== -1) {
-    mockDispatches.splice(index, 1)
-  }
-}
-
-function buildKey (opts) {
-  const { path, method, body, headers, query } = opts
-  return {
-    path,
-    method,
-    body,
-    headers,
-    query
-  }
-}
-
-function generateKeyValues (data) {
-  return Object.entries(data).reduce((keyValuePairs, [key, value]) => [
-    ...keyValuePairs,
-    Buffer.from(`${key}`),
-    Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`)
-  ], [])
-}
-
-/**
- * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
- * @param {number} statusCode
- */
-function getStatusText (statusCode) {
-  return STATUS_CODES[statusCode] || 'unknown'
-}
-
-async function getResponse (body) {
-  const buffers = []
-  for await (const data of body) {
-    buffers.push(data)
-  }
-  return Buffer.concat(buffers).toString('utf8')
-}
-
-/**
- * Mock dispatch function used to simulate undici dispatches
- */
-function mockDispatch (opts, handler) {
-  // Get mock dispatch from built key
-  const key = buildKey(opts)
-  const mockDispatch = getMockDispatch(this[kDispatches], key)
-
-  mockDispatch.timesInvoked++
-
-  // Here's where we resolve a callback if a callback is present for the dispatch data.
-  if (mockDispatch.data.callback) {
-    mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }
-  }
-
-  // Parse mockDispatch data
-  const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch
-  const { timesInvoked, times } = mockDispatch
-
-  // If it's used up and not persistent, mark as consumed
-  mockDispatch.consumed = !persist && timesInvoked >= times
-  mockDispatch.pending = timesInvoked < times
-
-  // If specified, trigger dispatch error
-  if (error !== null) {
-    deleteMockDispatch(this[kDispatches], key)
-    handler.onError(error)
-    return true
-  }
-
-  // Handle the request with a delay if necessary
-  if (typeof delay === 'number' && delay > 0) {
-    setTimeout(() => {
-      handleReply(this[kDispatches])
-    }, delay)
-  } else {
-    handleReply(this[kDispatches])
-  }
-
-  function handleReply (mockDispatches, _data = data) {
-    // fetch's HeadersList is a 1D string array
-    const optsHeaders = Array.isArray(opts.headers)
-      ? buildHeadersFromArray(opts.headers)
-      : opts.headers
-    const body = typeof _data === 'function'
-      ? _data({ ...opts, headers: optsHeaders })
-      : _data
-
-    // util.types.isPromise is likely needed for jest.
-    if (isPromise(body)) {
-      // If handleReply is asynchronous, throwing an error
-      // in the callback will reject the promise, rather than
-      // synchronously throw the error, which breaks some tests.
-      // Rather, we wait for the callback to resolve if it is a
-      // promise, and then re-run handleReply with the new body.
-      body.then((newData) => handleReply(mockDispatches, newData))
-      return
-    }
-
-    const responseData = getResponseData(body)
-    const responseHeaders = generateKeyValues(headers)
-    const responseTrailers = generateKeyValues(trailers)
-
-    handler.abort = nop
-    handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode))
-    handler.onData(Buffer.from(responseData))
-    handler.onComplete(responseTrailers)
-    deleteMockDispatch(mockDispatches, key)
-  }
-
-  function resume () {}
-
-  return true
-}
-
-function buildMockDispatch () {
-  const agent = this[kMockAgent]
-  const origin = this[kOrigin]
-  const originalDispatch = this[kOriginalDispatch]
-
-  return function dispatch (opts, handler) {
-    if (agent.isMockActive) {
-      try {
-        mockDispatch.call(this, opts, handler)
-      } catch (error) {
-        if (error instanceof MockNotMatchedError) {
-          const netConnect = agent[kGetNetConnect]()
-          if (netConnect === false) {
-            throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`)
-          }
-          if (checkNetConnect(netConnect, origin)) {
-            originalDispatch.call(this, opts, handler)
-          } else {
-            throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`)
-          }
-        } else {
-          throw error
-        }
-      }
-    } else {
-      originalDispatch.call(this, opts, handler)
-    }
-  }
-}
-
-function checkNetConnect (netConnect, origin) {
-  const url = new URL(origin)
-  if (netConnect === true) {
-    return true
-  } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) {
-    return true
-  }
-  return false
-}
-
-function buildMockOptions (opts) {
-  if (opts) {
-    const { agent, ...mockOptions } = opts
-    return mockOptions
-  }
-}
-
-module.exports = {
-  getResponseData,
-  getMockDispatch,
-  addMockDispatch,
-  deleteMockDispatch,
-  buildKey,
-  generateKeyValues,
-  matchValue,
-  getResponse,
-  getStatusText,
-  mockDispatch,
-  buildMockDispatch,
-  checkNetConnect,
-  buildMockOptions,
-  getHeaderByName
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/pending-interceptors-formatter.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/pending-interceptors-formatter.js
deleted file mode 100644
index 1bc7539..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/pending-interceptors-formatter.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict'
-
-const { Transform } = require('stream')
-const { Console } = require('console')
-
-/**
- * Gets the output of `console.table(…)` as a string.
- */
-module.exports = class PendingInterceptorsFormatter {
-  constructor ({ disableColors } = {}) {
-    this.transform = new Transform({
-      transform (chunk, _enc, cb) {
-        cb(null, chunk)
-      }
-    })
-
-    this.logger = new Console({
-      stdout: this.transform,
-      inspectOptions: {
-        colors: !disableColors && !process.env.CI
-      }
-    })
-  }
-
-  format (pendingInterceptors) {
-    const withPrettyHeaders = pendingInterceptors.map(
-      ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({
-        Method: method,
-        Origin: origin,
-        Path: path,
-        'Status code': statusCode,
-        Persistent: persist ? '✅' : '❌',
-        Invocations: timesInvoked,
-        Remaining: persist ? Infinity : times - timesInvoked
-      }))
-
-    this.logger.table(withPrettyHeaders)
-    return this.transform.read().toString()
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/pluralizer.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/pluralizer.js
deleted file mode 100644
index 47f150b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/mock/pluralizer.js
+++ /dev/null
@@ -1,29 +0,0 @@
-'use strict'
-
-const singulars = {
-  pronoun: 'it',
-  is: 'is',
-  was: 'was',
-  this: 'this'
-}
-
-const plurals = {
-  pronoun: 'they',
-  is: 'are',
-  was: 'were',
-  this: 'these'
-}
-
-module.exports = class Pluralizer {
-  constructor (singular, plural) {
-    this.singular = singular
-    this.plural = plural
-  }
-
-  pluralize (count) {
-    const one = count === 1
-    const keys = one ? singulars : plurals
-    const noun = one ? this.singular : this.plural
-    return { ...keys, count, noun }
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/node/fixed-queue.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/node/fixed-queue.js
deleted file mode 100644
index 3572681..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/node/fixed-queue.js
+++ /dev/null
@@ -1,117 +0,0 @@
-/* eslint-disable */
-
-'use strict'
-
-// Extracted from node/lib/internal/fixed_queue.js
-
-// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two.
-const kSize = 2048;
-const kMask = kSize - 1;
-
-// The FixedQueue is implemented as a singly-linked list of fixed-size
-// circular buffers. It looks something like this:
-//
-//  head                                                       tail
-//    |                                                          |
-//    v                                                          v
-// +-----------+ <-----\       +-----------+ <------\         +-----------+
-// |  [null]   |        \----- |   next    |         \------- |   next    |
-// +-----------+               +-----------+                  +-----------+
-// |   item    | <-- bottom    |   item    | <-- bottom       |  [empty]  |
-// |   item    |               |   item    |                  |  [empty]  |
-// |   item    |               |   item    |                  |  [empty]  |
-// |   item    |               |   item    |                  |  [empty]  |
-// |   item    |               |   item    |       bottom --> |   item    |
-// |   item    |               |   item    |                  |   item    |
-// |    ...    |               |    ...    |                  |    ...    |
-// |   item    |               |   item    |                  |   item    |
-// |   item    |               |   item    |                  |   item    |
-// |  [empty]  | <-- top       |   item    |                  |   item    |
-// |  [empty]  |               |   item    |                  |   item    |
-// |  [empty]  |               |  [empty]  | <-- top  top --> |  [empty]  |
-// +-----------+               +-----------+                  +-----------+
-//
-// Or, if there is only one circular buffer, it looks something
-// like either of these:
-//
-//  head   tail                                 head   tail
-//    |     |                                     |     |
-//    v     v                                     v     v
-// +-----------+                               +-----------+
-// |  [null]   |                               |  [null]   |
-// +-----------+                               +-----------+
-// |  [empty]  |                               |   item    |
-// |  [empty]  |                               |   item    |
-// |   item    | <-- bottom            top --> |  [empty]  |
-// |   item    |                               |  [empty]  |
-// |  [empty]  | <-- top            bottom --> |   item    |
-// |  [empty]  |                               |   item    |
-// +-----------+                               +-----------+
-//
-// Adding a value means moving `top` forward by one, removing means
-// moving `bottom` forward by one. After reaching the end, the queue
-// wraps around.
-//
-// When `top === bottom` the current queue is empty and when
-// `top + 1 === bottom` it's full. This wastes a single space of storage
-// but allows much quicker checks.
-
-class FixedCircularBuffer {
-  constructor() {
-    this.bottom = 0;
-    this.top = 0;
-    this.list = new Array(kSize);
-    this.next = null;
-  }
-
-  isEmpty() {
-    return this.top === this.bottom;
-  }
-
-  isFull() {
-    return ((this.top + 1) & kMask) === this.bottom;
-  }
-
-  push(data) {
-    this.list[this.top] = data;
-    this.top = (this.top + 1) & kMask;
-  }
-
-  shift() {
-    const nextItem = this.list[this.bottom];
-    if (nextItem === undefined)
-      return null;
-    this.list[this.bottom] = undefined;
-    this.bottom = (this.bottom + 1) & kMask;
-    return nextItem;
-  }
-}
-
-module.exports = class FixedQueue {
-  constructor() {
-    this.head = this.tail = new FixedCircularBuffer();
-  }
-
-  isEmpty() {
-    return this.head.isEmpty();
-  }
-
-  push(data) {
-    if (this.head.isFull()) {
-      // Head is full: Creates a new queue, sets the old queue's `.next` to it,
-      // and sets it as the new main queue.
-      this.head = this.head.next = new FixedCircularBuffer();
-    }
-    this.head.push(data);
-  }
-
-  shift() {
-    const tail = this.tail;
-    const next = tail.shift();
-    if (tail.isEmpty() && tail.next !== null) {
-      // If there is another queue, it forms the new tail.
-      this.tail = tail.next;
-    }
-    return next;
-  }
-};
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/pool-base.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/pool-base.js
deleted file mode 100644
index 2a909ee..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/pool-base.js
+++ /dev/null
@@ -1,194 +0,0 @@
-'use strict'
-
-const DispatcherBase = require('./dispatcher-base')
-const FixedQueue = require('./node/fixed-queue')
-const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('./core/symbols')
-const PoolStats = require('./pool-stats')
-
-const kClients = Symbol('clients')
-const kNeedDrain = Symbol('needDrain')
-const kQueue = Symbol('queue')
-const kClosedResolve = Symbol('closed resolve')
-const kOnDrain = Symbol('onDrain')
-const kOnConnect = Symbol('onConnect')
-const kOnDisconnect = Symbol('onDisconnect')
-const kOnConnectionError = Symbol('onConnectionError')
-const kGetDispatcher = Symbol('get dispatcher')
-const kAddClient = Symbol('add client')
-const kRemoveClient = Symbol('remove client')
-const kStats = Symbol('stats')
-
-class PoolBase extends DispatcherBase {
-  constructor () {
-    super()
-
-    this[kQueue] = new FixedQueue()
-    this[kClients] = []
-    this[kQueued] = 0
-
-    const pool = this
-
-    this[kOnDrain] = function onDrain (origin, targets) {
-      const queue = pool[kQueue]
-
-      let needDrain = false
-
-      while (!needDrain) {
-        const item = queue.shift()
-        if (!item) {
-          break
-        }
-        pool[kQueued]--
-        needDrain = !this.dispatch(item.opts, item.handler)
-      }
-
-      this[kNeedDrain] = needDrain
-
-      if (!this[kNeedDrain] && pool[kNeedDrain]) {
-        pool[kNeedDrain] = false
-        pool.emit('drain', origin, [pool, ...targets])
-      }
-
-      if (pool[kClosedResolve] && queue.isEmpty()) {
-        Promise
-          .all(pool[kClients].map(c => c.close()))
-          .then(pool[kClosedResolve])
-      }
-    }
-
-    this[kOnConnect] = (origin, targets) => {
-      pool.emit('connect', origin, [pool, ...targets])
-    }
-
-    this[kOnDisconnect] = (origin, targets, err) => {
-      pool.emit('disconnect', origin, [pool, ...targets], err)
-    }
-
-    this[kOnConnectionError] = (origin, targets, err) => {
-      pool.emit('connectionError', origin, [pool, ...targets], err)
-    }
-
-    this[kStats] = new PoolStats(this)
-  }
-
-  get [kBusy] () {
-    return this[kNeedDrain]
-  }
-
-  get [kConnected] () {
-    return this[kClients].filter(client => client[kConnected]).length
-  }
-
-  get [kFree] () {
-    return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length
-  }
-
-  get [kPending] () {
-    let ret = this[kQueued]
-    for (const { [kPending]: pending } of this[kClients]) {
-      ret += pending
-    }
-    return ret
-  }
-
-  get [kRunning] () {
-    let ret = 0
-    for (const { [kRunning]: running } of this[kClients]) {
-      ret += running
-    }
-    return ret
-  }
-
-  get [kSize] () {
-    let ret = this[kQueued]
-    for (const { [kSize]: size } of this[kClients]) {
-      ret += size
-    }
-    return ret
-  }
-
-  get stats () {
-    return this[kStats]
-  }
-
-  async [kClose] () {
-    if (this[kQueue].isEmpty()) {
-      return Promise.all(this[kClients].map(c => c.close()))
-    } else {
-      return new Promise((resolve) => {
-        this[kClosedResolve] = resolve
-      })
-    }
-  }
-
-  async [kDestroy] (err) {
-    while (true) {
-      const item = this[kQueue].shift()
-      if (!item) {
-        break
-      }
-      item.handler.onError(err)
-    }
-
-    return Promise.all(this[kClients].map(c => c.destroy(err)))
-  }
-
-  [kDispatch] (opts, handler) {
-    const dispatcher = this[kGetDispatcher]()
-
-    if (!dispatcher) {
-      this[kNeedDrain] = true
-      this[kQueue].push({ opts, handler })
-      this[kQueued]++
-    } else if (!dispatcher.dispatch(opts, handler)) {
-      dispatcher[kNeedDrain] = true
-      this[kNeedDrain] = !this[kGetDispatcher]()
-    }
-
-    return !this[kNeedDrain]
-  }
-
-  [kAddClient] (client) {
-    client
-      .on('drain', this[kOnDrain])
-      .on('connect', this[kOnConnect])
-      .on('disconnect', this[kOnDisconnect])
-      .on('connectionError', this[kOnConnectionError])
-
-    this[kClients].push(client)
-
-    if (this[kNeedDrain]) {
-      process.nextTick(() => {
-        if (this[kNeedDrain]) {
-          this[kOnDrain](client[kUrl], [this, client])
-        }
-      })
-    }
-
-    return this
-  }
-
-  [kRemoveClient] (client) {
-    client.close(() => {
-      const idx = this[kClients].indexOf(client)
-      if (idx !== -1) {
-        this[kClients].splice(idx, 1)
-      }
-    })
-
-    this[kNeedDrain] = this[kClients].some(dispatcher => (
-      !dispatcher[kNeedDrain] &&
-      dispatcher.closed !== true &&
-      dispatcher.destroyed !== true
-    ))
-  }
-}
-
-module.exports = {
-  PoolBase,
-  kClients,
-  kNeedDrain,
-  kAddClient,
-  kRemoveClient,
-  kGetDispatcher
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/pool-stats.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/pool-stats.js
deleted file mode 100644
index b4af8ae..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/pool-stats.js
+++ /dev/null
@@ -1,34 +0,0 @@
-const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require('./core/symbols')
-const kPool = Symbol('pool')
-
-class PoolStats {
-  constructor (pool) {
-    this[kPool] = pool
-  }
-
-  get connected () {
-    return this[kPool][kConnected]
-  }
-
-  get free () {
-    return this[kPool][kFree]
-  }
-
-  get pending () {
-    return this[kPool][kPending]
-  }
-
-  get queued () {
-    return this[kPool][kQueued]
-  }
-
-  get running () {
-    return this[kPool][kRunning]
-  }
-
-  get size () {
-    return this[kPool][kSize]
-  }
-}
-
-module.exports = PoolStats
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/pool.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/pool.js
deleted file mode 100644
index e3cd339..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/pool.js
+++ /dev/null
@@ -1,94 +0,0 @@
-'use strict'
-
-const {
-  PoolBase,
-  kClients,
-  kNeedDrain,
-  kAddClient,
-  kGetDispatcher
-} = require('./pool-base')
-const Client = require('./client')
-const {
-  InvalidArgumentError
-} = require('./core/errors')
-const util = require('./core/util')
-const { kUrl, kInterceptors } = require('./core/symbols')
-const buildConnector = require('./core/connect')
-
-const kOptions = Symbol('options')
-const kConnections = Symbol('connections')
-const kFactory = Symbol('factory')
-
-function defaultFactory (origin, opts) {
-  return new Client(origin, opts)
-}
-
-class Pool extends PoolBase {
-  constructor (origin, {
-    connections,
-    factory = defaultFactory,
-    connect,
-    connectTimeout,
-    tls,
-    maxCachedSessions,
-    socketPath,
-    autoSelectFamily,
-    autoSelectFamilyAttemptTimeout,
-    allowH2,
-    ...options
-  } = {}) {
-    super()
-
-    if (connections != null && (!Number.isFinite(connections) || connections < 0)) {
-      throw new InvalidArgumentError('invalid connections')
-    }
-
-    if (typeof factory !== 'function') {
-      throw new InvalidArgumentError('factory must be a function.')
-    }
-
-    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {
-      throw new InvalidArgumentError('connect must be a function or an object')
-    }
-
-    if (typeof connect !== 'function') {
-      connect = buildConnector({
-        ...tls,
-        maxCachedSessions,
-        allowH2,
-        socketPath,
-        timeout: connectTimeout,
-        ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),
-        ...connect
-      })
-    }
-
-    this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool)
-      ? options.interceptors.Pool
-      : []
-    this[kConnections] = connections || null
-    this[kUrl] = util.parseOrigin(origin)
-    this[kOptions] = { ...util.deepClone(options), connect, allowH2 }
-    this[kOptions].interceptors = options.interceptors
-      ? { ...options.interceptors }
-      : undefined
-    this[kFactory] = factory
-  }
-
-  [kGetDispatcher] () {
-    let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain])
-
-    if (dispatcher) {
-      return dispatcher
-    }
-
-    if (!this[kConnections] || this[kClients].length < this[kConnections]) {
-      dispatcher = this[kFactory](this[kUrl], this[kOptions])
-      this[kAddClient](dispatcher)
-    }
-
-    return dispatcher
-  }
-}
-
-module.exports = Pool
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/proxy-agent.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/proxy-agent.js
deleted file mode 100644
index e3c0f6f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/proxy-agent.js
+++ /dev/null
@@ -1,189 +0,0 @@
-'use strict'
-
-const { kProxy, kClose, kDestroy, kInterceptors } = require('./core/symbols')
-const { URL } = require('url')
-const Agent = require('./agent')
-const Pool = require('./pool')
-const DispatcherBase = require('./dispatcher-base')
-const { InvalidArgumentError, RequestAbortedError } = require('./core/errors')
-const buildConnector = require('./core/connect')
-
-const kAgent = Symbol('proxy agent')
-const kClient = Symbol('proxy client')
-const kProxyHeaders = Symbol('proxy headers')
-const kRequestTls = Symbol('request tls settings')
-const kProxyTls = Symbol('proxy tls settings')
-const kConnectEndpoint = Symbol('connect endpoint function')
-
-function defaultProtocolPort (protocol) {
-  return protocol === 'https:' ? 443 : 80
-}
-
-function buildProxyOptions (opts) {
-  if (typeof opts === 'string') {
-    opts = { uri: opts }
-  }
-
-  if (!opts || !opts.uri) {
-    throw new InvalidArgumentError('Proxy opts.uri is mandatory')
-  }
-
-  return {
-    uri: opts.uri,
-    protocol: opts.protocol || 'https'
-  }
-}
-
-function defaultFactory (origin, opts) {
-  return new Pool(origin, opts)
-}
-
-class ProxyAgent extends DispatcherBase {
-  constructor (opts) {
-    super(opts)
-    this[kProxy] = buildProxyOptions(opts)
-    this[kAgent] = new Agent(opts)
-    this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent)
-      ? opts.interceptors.ProxyAgent
-      : []
-
-    if (typeof opts === 'string') {
-      opts = { uri: opts }
-    }
-
-    if (!opts || !opts.uri) {
-      throw new InvalidArgumentError('Proxy opts.uri is mandatory')
-    }
-
-    const { clientFactory = defaultFactory } = opts
-
-    if (typeof clientFactory !== 'function') {
-      throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')
-    }
-
-    this[kRequestTls] = opts.requestTls
-    this[kProxyTls] = opts.proxyTls
-    this[kProxyHeaders] = opts.headers || {}
-
-    const resolvedUrl = new URL(opts.uri)
-    const { origin, port, host, username, password } = resolvedUrl
-
-    if (opts.auth && opts.token) {
-      throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')
-    } else if (opts.auth) {
-      /* @deprecated in favour of opts.token */
-      this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`
-    } else if (opts.token) {
-      this[kProxyHeaders]['proxy-authorization'] = opts.token
-    } else if (username && password) {
-      this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`
-    }
-
-    const connect = buildConnector({ ...opts.proxyTls })
-    this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })
-    this[kClient] = clientFactory(resolvedUrl, { connect })
-    this[kAgent] = new Agent({
-      ...opts,
-      connect: async (opts, callback) => {
-        let requestedHost = opts.host
-        if (!opts.port) {
-          requestedHost += `:${defaultProtocolPort(opts.protocol)}`
-        }
-        try {
-          const { socket, statusCode } = await this[kClient].connect({
-            origin,
-            port,
-            path: requestedHost,
-            signal: opts.signal,
-            headers: {
-              ...this[kProxyHeaders],
-              host
-            }
-          })
-          if (statusCode !== 200) {
-            socket.on('error', () => {}).destroy()
-            callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))
-          }
-          if (opts.protocol !== 'https:') {
-            callback(null, socket)
-            return
-          }
-          let servername
-          if (this[kRequestTls]) {
-            servername = this[kRequestTls].servername
-          } else {
-            servername = opts.servername
-          }
-          this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback)
-        } catch (err) {
-          callback(err)
-        }
-      }
-    })
-  }
-
-  dispatch (opts, handler) {
-    const { host } = new URL(opts.origin)
-    const headers = buildHeaders(opts.headers)
-    throwIfProxyAuthIsSent(headers)
-    return this[kAgent].dispatch(
-      {
-        ...opts,
-        headers: {
-          ...headers,
-          host
-        }
-      },
-      handler
-    )
-  }
-
-  async [kClose] () {
-    await this[kAgent].close()
-    await this[kClient].close()
-  }
-
-  async [kDestroy] () {
-    await this[kAgent].destroy()
-    await this[kClient].destroy()
-  }
-}
-
-/**
- * @param {string[] | Record<string, string>} headers
- * @returns {Record<string, string>}
- */
-function buildHeaders (headers) {
-  // When using undici.fetch, the headers list is stored
-  // as an array.
-  if (Array.isArray(headers)) {
-    /** @type {Record<string, string>} */
-    const headersPair = {}
-
-    for (let i = 0; i < headers.length; i += 2) {
-      headersPair[headers[i]] = headers[i + 1]
-    }
-
-    return headersPair
-  }
-
-  return headers
-}
-
-/**
- * @param {Record<string, string>} headers
- *
- * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers
- * Nevertheless, it was changed and to avoid a security vulnerability by end users
- * this check was created.
- * It should be removed in the next major version for performance reasons
- */
-function throwIfProxyAuthIsSent (headers) {
-  const existProxyAuth = headers && Object.keys(headers)
-    .find((key) => key.toLowerCase() === 'proxy-authorization')
-  if (existProxyAuth) {
-    throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor')
-  }
-}
-
-module.exports = ProxyAgent
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/timers.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/timers.js
deleted file mode 100644
index 5782217..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/timers.js
+++ /dev/null
@@ -1,97 +0,0 @@
-'use strict'
-
-let fastNow = Date.now()
-let fastNowTimeout
-
-const fastTimers = []
-
-function onTimeout () {
-  fastNow = Date.now()
-
-  let len = fastTimers.length
-  let idx = 0
-  while (idx < len) {
-    const timer = fastTimers[idx]
-
-    if (timer.state === 0) {
-      timer.state = fastNow + timer.delay
-    } else if (timer.state > 0 && fastNow >= timer.state) {
-      timer.state = -1
-      timer.callback(timer.opaque)
-    }
-
-    if (timer.state === -1) {
-      timer.state = -2
-      if (idx !== len - 1) {
-        fastTimers[idx] = fastTimers.pop()
-      } else {
-        fastTimers.pop()
-      }
-      len -= 1
-    } else {
-      idx += 1
-    }
-  }
-
-  if (fastTimers.length > 0) {
-    refreshTimeout()
-  }
-}
-
-function refreshTimeout () {
-  if (fastNowTimeout && fastNowTimeout.refresh) {
-    fastNowTimeout.refresh()
-  } else {
-    clearTimeout(fastNowTimeout)
-    fastNowTimeout = setTimeout(onTimeout, 1e3)
-    if (fastNowTimeout.unref) {
-      fastNowTimeout.unref()
-    }
-  }
-}
-
-class Timeout {
-  constructor (callback, delay, opaque) {
-    this.callback = callback
-    this.delay = delay
-    this.opaque = opaque
-
-    //  -2 not in timer list
-    //  -1 in timer list but inactive
-    //   0 in timer list waiting for time
-    // > 0 in timer list waiting for time to expire
-    this.state = -2
-
-    this.refresh()
-  }
-
-  refresh () {
-    if (this.state === -2) {
-      fastTimers.push(this)
-      if (!fastNowTimeout || fastTimers.length === 1) {
-        refreshTimeout()
-      }
-    }
-
-    this.state = 0
-  }
-
-  clear () {
-    this.state = -1
-  }
-}
-
-module.exports = {
-  setTimeout (callback, delay, opaque) {
-    return delay < 1e3
-      ? setTimeout(callback, delay, opaque)
-      : new Timeout(callback, delay, opaque)
-  },
-  clearTimeout (timeout) {
-    if (timeout instanceof Timeout) {
-      timeout.clear()
-    } else {
-      clearTimeout(timeout)
-    }
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/connection.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/connection.js
deleted file mode 100644
index e0fa697..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/connection.js
+++ /dev/null
@@ -1,291 +0,0 @@
-'use strict'
-
-const diagnosticsChannel = require('diagnostics_channel')
-const { uid, states } = require('./constants')
-const {
-  kReadyState,
-  kSentClose,
-  kByteParser,
-  kReceivedClose
-} = require('./symbols')
-const { fireEvent, failWebsocketConnection } = require('./util')
-const { CloseEvent } = require('./events')
-const { makeRequest } = require('../fetch/request')
-const { fetching } = require('../fetch/index')
-const { Headers } = require('../fetch/headers')
-const { getGlobalDispatcher } = require('../global')
-const { kHeadersList } = require('../core/symbols')
-
-const channels = {}
-channels.open = diagnosticsChannel.channel('undici:websocket:open')
-channels.close = diagnosticsChannel.channel('undici:websocket:close')
-channels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error')
-
-/** @type {import('crypto')} */
-let crypto
-try {
-  crypto = require('crypto')
-} catch {
-
-}
-
-/**
- * @see https://websockets.spec.whatwg.org/#concept-websocket-establish
- * @param {URL} url
- * @param {string|string[]} protocols
- * @param {import('./websocket').WebSocket} ws
- * @param {(response: any) => void} onEstablish
- * @param {Partial<import('../../types/websocket').WebSocketInit>} options
- */
-function establishWebSocketConnection (url, protocols, ws, onEstablish, options) {
-  // 1. Let requestURL be a copy of url, with its scheme set to "http", if url’s
-  //    scheme is "ws", and to "https" otherwise.
-  const requestURL = url
-
-  requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'
-
-  // 2. Let request be a new request, whose URL is requestURL, client is client,
-  //    service-workers mode is "none", referrer is "no-referrer", mode is
-  //    "websocket", credentials mode is "include", cache mode is "no-store" ,
-  //    and redirect mode is "error".
-  const request = makeRequest({
-    urlList: [requestURL],
-    serviceWorkers: 'none',
-    referrer: 'no-referrer',
-    mode: 'websocket',
-    credentials: 'include',
-    cache: 'no-store',
-    redirect: 'error'
-  })
-
-  // Note: undici extension, allow setting custom headers.
-  if (options.headers) {
-    const headersList = new Headers(options.headers)[kHeadersList]
-
-    request.headersList = headersList
-  }
-
-  // 3. Append (`Upgrade`, `websocket`) to request’s header list.
-  // 4. Append (`Connection`, `Upgrade`) to request’s header list.
-  // Note: both of these are handled by undici currently.
-  // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397
-
-  // 5. Let keyValue be a nonce consisting of a randomly selected
-  //    16-byte value that has been forgiving-base64-encoded and
-  //    isomorphic encoded.
-  const keyValue = crypto.randomBytes(16).toString('base64')
-
-  // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s
-  //    header list.
-  request.headersList.append('sec-websocket-key', keyValue)
-
-  // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s
-  //    header list.
-  request.headersList.append('sec-websocket-version', '13')
-
-  // 8. For each protocol in protocols, combine
-  //    (`Sec-WebSocket-Protocol`, protocol) in request’s header
-  //    list.
-  for (const protocol of protocols) {
-    request.headersList.append('sec-websocket-protocol', protocol)
-  }
-
-  // 9. Let permessageDeflate be a user-agent defined
-  //    "permessage-deflate" extension header value.
-  // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673
-  // TODO: enable once permessage-deflate is supported
-  const permessageDeflate = '' // 'permessage-deflate; 15'
-
-  // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to
-  //     request’s header list.
-  // request.headersList.append('sec-websocket-extensions', permessageDeflate)
-
-  // 11. Fetch request with useParallelQueue set to true, and
-  //     processResponse given response being these steps:
-  const controller = fetching({
-    request,
-    useParallelQueue: true,
-    dispatcher: options.dispatcher ?? getGlobalDispatcher(),
-    processResponse (response) {
-      // 1. If response is a network error or its status is not 101,
-      //    fail the WebSocket connection.
-      if (response.type === 'error' || response.status !== 101) {
-        failWebsocketConnection(ws, 'Received network error or non-101 status code.')
-        return
-      }
-
-      // 2. If protocols is not the empty list and extracting header
-      //    list values given `Sec-WebSocket-Protocol` and response’s
-      //    header list results in null, failure, or the empty byte
-      //    sequence, then fail the WebSocket connection.
-      if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {
-        failWebsocketConnection(ws, 'Server did not respond with sent protocols.')
-        return
-      }
-
-      // 3. Follow the requirements stated step 2 to step 6, inclusive,
-      //    of the last set of steps in section 4.1 of The WebSocket
-      //    Protocol to validate response. This either results in fail
-      //    the WebSocket connection or the WebSocket connection is
-      //    established.
-
-      // 2. If the response lacks an |Upgrade| header field or the |Upgrade|
-      //    header field contains a value that is not an ASCII case-
-      //    insensitive match for the value "websocket", the client MUST
-      //    _Fail the WebSocket Connection_.
-      if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {
-        failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".')
-        return
-      }
-
-      // 3. If the response lacks a |Connection| header field or the
-      //    |Connection| header field doesn't contain a token that is an
-      //    ASCII case-insensitive match for the value "Upgrade", the client
-      //    MUST _Fail the WebSocket Connection_.
-      if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {
-        failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".')
-        return
-      }
-
-      // 4. If the response lacks a |Sec-WebSocket-Accept| header field or
-      //    the |Sec-WebSocket-Accept| contains a value other than the
-      //    base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-
-      //    Key| (as a string, not base64-decoded) with the string "258EAFA5-
-      //    E914-47DA-95CA-C5AB0DC85B11" but ignoring any leading and
-      //    trailing whitespace, the client MUST _Fail the WebSocket
-      //    Connection_.
-      const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')
-      const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64')
-      if (secWSAccept !== digest) {
-        failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.')
-        return
-      }
-
-      // 5. If the response includes a |Sec-WebSocket-Extensions| header
-      //    field and this header field indicates the use of an extension
-      //    that was not present in the client's handshake (the server has
-      //    indicated an extension not requested by the client), the client
-      //    MUST _Fail the WebSocket Connection_.  (The parsing of this
-      //    header field to determine which extensions are requested is
-      //    discussed in Section 9.1.)
-      const secExtension = response.headersList.get('Sec-WebSocket-Extensions')
-
-      if (secExtension !== null && secExtension !== permessageDeflate) {
-        failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.')
-        return
-      }
-
-      // 6. If the response includes a |Sec-WebSocket-Protocol| header field
-      //    and this header field indicates the use of a subprotocol that was
-      //    not present in the client's handshake (the server has indicated a
-      //    subprotocol not requested by the client), the client MUST _Fail
-      //    the WebSocket Connection_.
-      const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')
-
-      if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) {
-        failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')
-        return
-      }
-
-      response.socket.on('data', onSocketData)
-      response.socket.on('close', onSocketClose)
-      response.socket.on('error', onSocketError)
-
-      if (channels.open.hasSubscribers) {
-        channels.open.publish({
-          address: response.socket.address(),
-          protocol: secProtocol,
-          extensions: secExtension
-        })
-      }
-
-      onEstablish(response)
-    }
-  })
-
-  return controller
-}
-
-/**
- * @param {Buffer} chunk
- */
-function onSocketData (chunk) {
-  if (!this.ws[kByteParser].write(chunk)) {
-    this.pause()
-  }
-}
-
-/**
- * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol
- * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4
- */
-function onSocketClose () {
-  const { ws } = this
-
-  // If the TCP connection was closed after the
-  // WebSocket closing handshake was completed, the WebSocket connection
-  // is said to have been closed _cleanly_.
-  const wasClean = ws[kSentClose] && ws[kReceivedClose]
-
-  let code = 1005
-  let reason = ''
-
-  const result = ws[kByteParser].closingInfo
-
-  if (result) {
-    code = result.code ?? 1005
-    reason = result.reason
-  } else if (!ws[kSentClose]) {
-    // If _The WebSocket
-    // Connection is Closed_ and no Close control frame was received by the
-    // endpoint (such as could occur if the underlying transport connection
-    // is lost), _The WebSocket Connection Close Code_ is considered to be
-    // 1006.
-    code = 1006
-  }
-
-  // 1. Change the ready state to CLOSED (3).
-  ws[kReadyState] = states.CLOSED
-
-  // 2. If the user agent was required to fail the WebSocket
-  //    connection, or if the WebSocket connection was closed
-  //    after being flagged as full, fire an event named error
-  //    at the WebSocket object.
-  // TODO
-
-  // 3. Fire an event named close at the WebSocket object,
-  //    using CloseEvent, with the wasClean attribute
-  //    initialized to true if the connection closed cleanly
-  //    and false otherwise, the code attribute initialized to
-  //    the WebSocket connection close code, and the reason
-  //    attribute initialized to the result of applying UTF-8
-  //    decode without BOM to the WebSocket connection close
-  //    reason.
-  fireEvent('close', ws, CloseEvent, {
-    wasClean, code, reason
-  })
-
-  if (channels.close.hasSubscribers) {
-    channels.close.publish({
-      websocket: ws,
-      code,
-      reason
-    })
-  }
-}
-
-function onSocketError (error) {
-  const { ws } = this
-
-  ws[kReadyState] = states.CLOSING
-
-  if (channels.socketError.hasSubscribers) {
-    channels.socketError.publish(error)
-  }
-
-  this.destroy()
-}
-
-module.exports = {
-  establishWebSocketConnection
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/constants.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/constants.js
deleted file mode 100644
index 406b8e3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/constants.js
+++ /dev/null
@@ -1,51 +0,0 @@
-'use strict'
-
-// This is a Globally Unique Identifier unique used
-// to validate that the endpoint accepts websocket
-// connections.
-// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3
-const uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'
-
-/** @type {PropertyDescriptor} */
-const staticPropertyDescriptors = {
-  enumerable: true,
-  writable: false,
-  configurable: false
-}
-
-const states = {
-  CONNECTING: 0,
-  OPEN: 1,
-  CLOSING: 2,
-  CLOSED: 3
-}
-
-const opcodes = {
-  CONTINUATION: 0x0,
-  TEXT: 0x1,
-  BINARY: 0x2,
-  CLOSE: 0x8,
-  PING: 0x9,
-  PONG: 0xA
-}
-
-const maxUnsigned16Bit = 2 ** 16 - 1 // 65535
-
-const parserStates = {
-  INFO: 0,
-  PAYLOADLENGTH_16: 2,
-  PAYLOADLENGTH_64: 3,
-  READ_DATA: 4
-}
-
-const emptyBuffer = Buffer.allocUnsafe(0)
-
-module.exports = {
-  uid,
-  staticPropertyDescriptors,
-  states,
-  opcodes,
-  maxUnsigned16Bit,
-  parserStates,
-  emptyBuffer
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/events.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/events.js
deleted file mode 100644
index 621a226..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/events.js
+++ /dev/null
@@ -1,303 +0,0 @@
-'use strict'
-
-const { webidl } = require('../fetch/webidl')
-const { kEnumerableProperty } = require('../core/util')
-const { MessagePort } = require('worker_threads')
-
-/**
- * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent
- */
-class MessageEvent extends Event {
-  #eventInit
-
-  constructor (type, eventInitDict = {}) {
-    webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' })
-
-    type = webidl.converters.DOMString(type)
-    eventInitDict = webidl.converters.MessageEventInit(eventInitDict)
-
-    super(type, eventInitDict)
-
-    this.#eventInit = eventInitDict
-  }
-
-  get data () {
-    webidl.brandCheck(this, MessageEvent)
-
-    return this.#eventInit.data
-  }
-
-  get origin () {
-    webidl.brandCheck(this, MessageEvent)
-
-    return this.#eventInit.origin
-  }
-
-  get lastEventId () {
-    webidl.brandCheck(this, MessageEvent)
-
-    return this.#eventInit.lastEventId
-  }
-
-  get source () {
-    webidl.brandCheck(this, MessageEvent)
-
-    return this.#eventInit.source
-  }
-
-  get ports () {
-    webidl.brandCheck(this, MessageEvent)
-
-    if (!Object.isFrozen(this.#eventInit.ports)) {
-      Object.freeze(this.#eventInit.ports)
-    }
-
-    return this.#eventInit.ports
-  }
-
-  initMessageEvent (
-    type,
-    bubbles = false,
-    cancelable = false,
-    data = null,
-    origin = '',
-    lastEventId = '',
-    source = null,
-    ports = []
-  ) {
-    webidl.brandCheck(this, MessageEvent)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' })
-
-    return new MessageEvent(type, {
-      bubbles, cancelable, data, origin, lastEventId, source, ports
-    })
-  }
-}
-
-/**
- * @see https://websockets.spec.whatwg.org/#the-closeevent-interface
- */
-class CloseEvent extends Event {
-  #eventInit
-
-  constructor (type, eventInitDict = {}) {
-    webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' })
-
-    type = webidl.converters.DOMString(type)
-    eventInitDict = webidl.converters.CloseEventInit(eventInitDict)
-
-    super(type, eventInitDict)
-
-    this.#eventInit = eventInitDict
-  }
-
-  get wasClean () {
-    webidl.brandCheck(this, CloseEvent)
-
-    return this.#eventInit.wasClean
-  }
-
-  get code () {
-    webidl.brandCheck(this, CloseEvent)
-
-    return this.#eventInit.code
-  }
-
-  get reason () {
-    webidl.brandCheck(this, CloseEvent)
-
-    return this.#eventInit.reason
-  }
-}
-
-// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface
-class ErrorEvent extends Event {
-  #eventInit
-
-  constructor (type, eventInitDict) {
-    webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' })
-
-    super(type, eventInitDict)
-
-    type = webidl.converters.DOMString(type)
-    eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {})
-
-    this.#eventInit = eventInitDict
-  }
-
-  get message () {
-    webidl.brandCheck(this, ErrorEvent)
-
-    return this.#eventInit.message
-  }
-
-  get filename () {
-    webidl.brandCheck(this, ErrorEvent)
-
-    return this.#eventInit.filename
-  }
-
-  get lineno () {
-    webidl.brandCheck(this, ErrorEvent)
-
-    return this.#eventInit.lineno
-  }
-
-  get colno () {
-    webidl.brandCheck(this, ErrorEvent)
-
-    return this.#eventInit.colno
-  }
-
-  get error () {
-    webidl.brandCheck(this, ErrorEvent)
-
-    return this.#eventInit.error
-  }
-}
-
-Object.defineProperties(MessageEvent.prototype, {
-  [Symbol.toStringTag]: {
-    value: 'MessageEvent',
-    configurable: true
-  },
-  data: kEnumerableProperty,
-  origin: kEnumerableProperty,
-  lastEventId: kEnumerableProperty,
-  source: kEnumerableProperty,
-  ports: kEnumerableProperty,
-  initMessageEvent: kEnumerableProperty
-})
-
-Object.defineProperties(CloseEvent.prototype, {
-  [Symbol.toStringTag]: {
-    value: 'CloseEvent',
-    configurable: true
-  },
-  reason: kEnumerableProperty,
-  code: kEnumerableProperty,
-  wasClean: kEnumerableProperty
-})
-
-Object.defineProperties(ErrorEvent.prototype, {
-  [Symbol.toStringTag]: {
-    value: 'ErrorEvent',
-    configurable: true
-  },
-  message: kEnumerableProperty,
-  filename: kEnumerableProperty,
-  lineno: kEnumerableProperty,
-  colno: kEnumerableProperty,
-  error: kEnumerableProperty
-})
-
-webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort)
-
-webidl.converters['sequence<MessagePort>'] = webidl.sequenceConverter(
-  webidl.converters.MessagePort
-)
-
-const eventInit = [
-  {
-    key: 'bubbles',
-    converter: webidl.converters.boolean,
-    defaultValue: false
-  },
-  {
-    key: 'cancelable',
-    converter: webidl.converters.boolean,
-    defaultValue: false
-  },
-  {
-    key: 'composed',
-    converter: webidl.converters.boolean,
-    defaultValue: false
-  }
-]
-
-webidl.converters.MessageEventInit = webidl.dictionaryConverter([
-  ...eventInit,
-  {
-    key: 'data',
-    converter: webidl.converters.any,
-    defaultValue: null
-  },
-  {
-    key: 'origin',
-    converter: webidl.converters.USVString,
-    defaultValue: ''
-  },
-  {
-    key: 'lastEventId',
-    converter: webidl.converters.DOMString,
-    defaultValue: ''
-  },
-  {
-    key: 'source',
-    // Node doesn't implement WindowProxy or ServiceWorker, so the only
-    // valid value for source is a MessagePort.
-    converter: webidl.nullableConverter(webidl.converters.MessagePort),
-    defaultValue: null
-  },
-  {
-    key: 'ports',
-    converter: webidl.converters['sequence<MessagePort>'],
-    get defaultValue () {
-      return []
-    }
-  }
-])
-
-webidl.converters.CloseEventInit = webidl.dictionaryConverter([
-  ...eventInit,
-  {
-    key: 'wasClean',
-    converter: webidl.converters.boolean,
-    defaultValue: false
-  },
-  {
-    key: 'code',
-    converter: webidl.converters['unsigned short'],
-    defaultValue: 0
-  },
-  {
-    key: 'reason',
-    converter: webidl.converters.USVString,
-    defaultValue: ''
-  }
-])
-
-webidl.converters.ErrorEventInit = webidl.dictionaryConverter([
-  ...eventInit,
-  {
-    key: 'message',
-    converter: webidl.converters.DOMString,
-    defaultValue: ''
-  },
-  {
-    key: 'filename',
-    converter: webidl.converters.USVString,
-    defaultValue: ''
-  },
-  {
-    key: 'lineno',
-    converter: webidl.converters['unsigned long'],
-    defaultValue: 0
-  },
-  {
-    key: 'colno',
-    converter: webidl.converters['unsigned long'],
-    defaultValue: 0
-  },
-  {
-    key: 'error',
-    converter: webidl.converters.any
-  }
-])
-
-module.exports = {
-  MessageEvent,
-  CloseEvent,
-  ErrorEvent
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/frame.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/frame.js
deleted file mode 100644
index d867ad1..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/frame.js
+++ /dev/null
@@ -1,73 +0,0 @@
-'use strict'
-
-const { maxUnsigned16Bit } = require('./constants')
-
-/** @type {import('crypto')} */
-let crypto
-try {
-  crypto = require('crypto')
-} catch {
-
-}
-
-class WebsocketFrameSend {
-  /**
-   * @param {Buffer|undefined} data
-   */
-  constructor (data) {
-    this.frameData = data
-    this.maskKey = crypto.randomBytes(4)
-  }
-
-  createFrame (opcode) {
-    const bodyLength = this.frameData?.byteLength ?? 0
-
-    /** @type {number} */
-    let payloadLength = bodyLength // 0-125
-    let offset = 6
-
-    if (bodyLength > maxUnsigned16Bit) {
-      offset += 8 // payload length is next 8 bytes
-      payloadLength = 127
-    } else if (bodyLength > 125) {
-      offset += 2 // payload length is next 2 bytes
-      payloadLength = 126
-    }
-
-    const buffer = Buffer.allocUnsafe(bodyLength + offset)
-
-    // Clear first 2 bytes, everything else is overwritten
-    buffer[0] = buffer[1] = 0
-    buffer[0] |= 0x80 // FIN
-    buffer[0] = (buffer[0] & 0xF0) + opcode // opcode
-
-    /*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */
-    buffer[offset - 4] = this.maskKey[0]
-    buffer[offset - 3] = this.maskKey[1]
-    buffer[offset - 2] = this.maskKey[2]
-    buffer[offset - 1] = this.maskKey[3]
-
-    buffer[1] = payloadLength
-
-    if (payloadLength === 126) {
-      buffer.writeUInt16BE(bodyLength, 2)
-    } else if (payloadLength === 127) {
-      // Clear extended payload length
-      buffer[2] = buffer[3] = 0
-      buffer.writeUIntBE(bodyLength, 4, 6)
-    }
-
-    buffer[1] |= 0x80 // MASK
-
-    // mask body
-    for (let i = 0; i < bodyLength; i++) {
-      buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]
-    }
-
-    return buffer
-  }
-}
-
-module.exports = {
-  WebsocketFrameSend
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/receiver.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/receiver.js
deleted file mode 100644
index bdd2031..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/receiver.js
+++ /dev/null
@@ -1,344 +0,0 @@
-'use strict'
-
-const { Writable } = require('stream')
-const diagnosticsChannel = require('diagnostics_channel')
-const { parserStates, opcodes, states, emptyBuffer } = require('./constants')
-const { kReadyState, kSentClose, kResponse, kReceivedClose } = require('./symbols')
-const { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require('./util')
-const { WebsocketFrameSend } = require('./frame')
-
-// This code was influenced by ws released under the MIT license.
-// Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com>
-// Copyright (c) 2013 Arnout Kazemier and contributors
-// Copyright (c) 2016 Luigi Pinca and contributors
-
-const channels = {}
-channels.ping = diagnosticsChannel.channel('undici:websocket:ping')
-channels.pong = diagnosticsChannel.channel('undici:websocket:pong')
-
-class ByteParser extends Writable {
-  #buffers = []
-  #byteOffset = 0
-
-  #state = parserStates.INFO
-
-  #info = {}
-  #fragments = []
-
-  constructor (ws) {
-    super()
-
-    this.ws = ws
-  }
-
-  /**
-   * @param {Buffer} chunk
-   * @param {() => void} callback
-   */
-  _write (chunk, _, callback) {
-    this.#buffers.push(chunk)
-    this.#byteOffset += chunk.length
-
-    this.run(callback)
-  }
-
-  /**
-   * Runs whenever a new chunk is received.
-   * Callback is called whenever there are no more chunks buffering,
-   * or not enough bytes are buffered to parse.
-   */
-  run (callback) {
-    while (true) {
-      if (this.#state === parserStates.INFO) {
-        // If there aren't enough bytes to parse the payload length, etc.
-        if (this.#byteOffset < 2) {
-          return callback()
-        }
-
-        const buffer = this.consume(2)
-
-        this.#info.fin = (buffer[0] & 0x80) !== 0
-        this.#info.opcode = buffer[0] & 0x0F
-
-        // If we receive a fragmented message, we use the type of the first
-        // frame to parse the full message as binary/text, when it's terminated
-        this.#info.originalOpcode ??= this.#info.opcode
-
-        this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION
-
-        if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) {
-          // Only text and binary frames can be fragmented
-          failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.')
-          return
-        }
-
-        const payloadLength = buffer[1] & 0x7F
-
-        if (payloadLength <= 125) {
-          this.#info.payloadLength = payloadLength
-          this.#state = parserStates.READ_DATA
-        } else if (payloadLength === 126) {
-          this.#state = parserStates.PAYLOADLENGTH_16
-        } else if (payloadLength === 127) {
-          this.#state = parserStates.PAYLOADLENGTH_64
-        }
-
-        if (this.#info.fragmented && payloadLength > 125) {
-          // A fragmented frame can't be fragmented itself
-          failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.')
-          return
-        } else if (
-          (this.#info.opcode === opcodes.PING ||
-            this.#info.opcode === opcodes.PONG ||
-            this.#info.opcode === opcodes.CLOSE) &&
-          payloadLength > 125
-        ) {
-          // Control frames can have a payload length of 125 bytes MAX
-          failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.')
-          return
-        } else if (this.#info.opcode === opcodes.CLOSE) {
-          if (payloadLength === 1) {
-            failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.')
-            return
-          }
-
-          const body = this.consume(payloadLength)
-
-          this.#info.closeInfo = this.parseCloseBody(false, body)
-
-          if (!this.ws[kSentClose]) {
-            // If an endpoint receives a Close frame and did not previously send a
-            // Close frame, the endpoint MUST send a Close frame in response.  (When
-            // sending a Close frame in response, the endpoint typically echos the
-            // status code it received.)
-            const body = Buffer.allocUnsafe(2)
-            body.writeUInt16BE(this.#info.closeInfo.code, 0)
-            const closeFrame = new WebsocketFrameSend(body)
-
-            this.ws[kResponse].socket.write(
-              closeFrame.createFrame(opcodes.CLOSE),
-              (err) => {
-                if (!err) {
-                  this.ws[kSentClose] = true
-                }
-              }
-            )
-          }
-
-          // Upon either sending or receiving a Close control frame, it is said
-          // that _The WebSocket Closing Handshake is Started_ and that the
-          // WebSocket connection is in the CLOSING state.
-          this.ws[kReadyState] = states.CLOSING
-          this.ws[kReceivedClose] = true
-
-          this.end()
-
-          return
-        } else if (this.#info.opcode === opcodes.PING) {
-          // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in
-          // response, unless it already received a Close frame.
-          // A Pong frame sent in response to a Ping frame must have identical
-          // "Application data"
-
-          const body = this.consume(payloadLength)
-
-          if (!this.ws[kReceivedClose]) {
-            const frame = new WebsocketFrameSend(body)
-
-            this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG))
-
-            if (channels.ping.hasSubscribers) {
-              channels.ping.publish({
-                payload: body
-              })
-            }
-          }
-
-          this.#state = parserStates.INFO
-
-          if (this.#byteOffset > 0) {
-            continue
-          } else {
-            callback()
-            return
-          }
-        } else if (this.#info.opcode === opcodes.PONG) {
-          // A Pong frame MAY be sent unsolicited.  This serves as a
-          // unidirectional heartbeat.  A response to an unsolicited Pong frame is
-          // not expected.
-
-          const body = this.consume(payloadLength)
-
-          if (channels.pong.hasSubscribers) {
-            channels.pong.publish({
-              payload: body
-            })
-          }
-
-          if (this.#byteOffset > 0) {
-            continue
-          } else {
-            callback()
-            return
-          }
-        }
-      } else if (this.#state === parserStates.PAYLOADLENGTH_16) {
-        if (this.#byteOffset < 2) {
-          return callback()
-        }
-
-        const buffer = this.consume(2)
-
-        this.#info.payloadLength = buffer.readUInt16BE(0)
-        this.#state = parserStates.READ_DATA
-      } else if (this.#state === parserStates.PAYLOADLENGTH_64) {
-        if (this.#byteOffset < 8) {
-          return callback()
-        }
-
-        const buffer = this.consume(8)
-        const upper = buffer.readUInt32BE(0)
-
-        // 2^31 is the maxinimum bytes an arraybuffer can contain
-        // on 32-bit systems. Although, on 64-bit systems, this is
-        // 2^53-1 bytes.
-        // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length
-        // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275
-        // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e
-        if (upper > 2 ** 31 - 1) {
-          failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.')
-          return
-        }
-
-        const lower = buffer.readUInt32BE(4)
-
-        this.#info.payloadLength = (upper << 8) + lower
-        this.#state = parserStates.READ_DATA
-      } else if (this.#state === parserStates.READ_DATA) {
-        if (this.#byteOffset < this.#info.payloadLength) {
-          // If there is still more data in this chunk that needs to be read
-          return callback()
-        } else if (this.#byteOffset >= this.#info.payloadLength) {
-          // If the server sent multiple frames in a single chunk
-
-          const body = this.consume(this.#info.payloadLength)
-
-          this.#fragments.push(body)
-
-          // If the frame is unfragmented, or a fragmented frame was terminated,
-          // a message was received
-          if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) {
-            const fullMessage = Buffer.concat(this.#fragments)
-
-            websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage)
-
-            this.#info = {}
-            this.#fragments.length = 0
-          }
-
-          this.#state = parserStates.INFO
-        }
-      }
-
-      if (this.#byteOffset > 0) {
-        continue
-      } else {
-        callback()
-        break
-      }
-    }
-  }
-
-  /**
-   * Take n bytes from the buffered Buffers
-   * @param {number} n
-   * @returns {Buffer|null}
-   */
-  consume (n) {
-    if (n > this.#byteOffset) {
-      return null
-    } else if (n === 0) {
-      return emptyBuffer
-    }
-
-    if (this.#buffers[0].length === n) {
-      this.#byteOffset -= this.#buffers[0].length
-      return this.#buffers.shift()
-    }
-
-    const buffer = Buffer.allocUnsafe(n)
-    let offset = 0
-
-    while (offset !== n) {
-      const next = this.#buffers[0]
-      const { length } = next
-
-      if (length + offset === n) {
-        buffer.set(this.#buffers.shift(), offset)
-        break
-      } else if (length + offset > n) {
-        buffer.set(next.subarray(0, n - offset), offset)
-        this.#buffers[0] = next.subarray(n - offset)
-        break
-      } else {
-        buffer.set(this.#buffers.shift(), offset)
-        offset += next.length
-      }
-    }
-
-    this.#byteOffset -= n
-
-    return buffer
-  }
-
-  parseCloseBody (onlyCode, data) {
-    // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5
-    /** @type {number|undefined} */
-    let code
-
-    if (data.length >= 2) {
-      // _The WebSocket Connection Close Code_ is
-      // defined as the status code (Section 7.4) contained in the first Close
-      // control frame received by the application
-      code = data.readUInt16BE(0)
-    }
-
-    if (onlyCode) {
-      if (!isValidStatusCode(code)) {
-        return null
-      }
-
-      return { code }
-    }
-
-    // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6
-    /** @type {Buffer} */
-    let reason = data.subarray(2)
-
-    // Remove BOM
-    if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) {
-      reason = reason.subarray(3)
-    }
-
-    if (code !== undefined && !isValidStatusCode(code)) {
-      return null
-    }
-
-    try {
-      // TODO: optimize this
-      reason = new TextDecoder('utf-8', { fatal: true }).decode(reason)
-    } catch {
-      return null
-    }
-
-    return { code, reason }
-  }
-
-  get closingInfo () {
-    return this.#info.closeInfo
-  }
-}
-
-module.exports = {
-  ByteParser
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/symbols.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/symbols.js
deleted file mode 100644
index 11d03e3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/symbols.js
+++ /dev/null
@@ -1,12 +0,0 @@
-'use strict'
-
-module.exports = {
-  kWebSocketURL: Symbol('url'),
-  kReadyState: Symbol('ready state'),
-  kController: Symbol('controller'),
-  kResponse: Symbol('response'),
-  kBinaryType: Symbol('binary type'),
-  kSentClose: Symbol('sent close'),
-  kReceivedClose: Symbol('received close'),
-  kByteParser: Symbol('byte parser')
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/util.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/util.js
deleted file mode 100644
index 6c59b2c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/util.js
+++ /dev/null
@@ -1,200 +0,0 @@
-'use strict'
-
-const { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require('./symbols')
-const { states, opcodes } = require('./constants')
-const { MessageEvent, ErrorEvent } = require('./events')
-
-/* globals Blob */
-
-/**
- * @param {import('./websocket').WebSocket} ws
- */
-function isEstablished (ws) {
-  // If the server's response is validated as provided for above, it is
-  // said that _The WebSocket Connection is Established_ and that the
-  // WebSocket Connection is in the OPEN state.
-  return ws[kReadyState] === states.OPEN
-}
-
-/**
- * @param {import('./websocket').WebSocket} ws
- */
-function isClosing (ws) {
-  // Upon either sending or receiving a Close control frame, it is said
-  // that _The WebSocket Closing Handshake is Started_ and that the
-  // WebSocket connection is in the CLOSING state.
-  return ws[kReadyState] === states.CLOSING
-}
-
-/**
- * @param {import('./websocket').WebSocket} ws
- */
-function isClosed (ws) {
-  return ws[kReadyState] === states.CLOSED
-}
-
-/**
- * @see https://dom.spec.whatwg.org/#concept-event-fire
- * @param {string} e
- * @param {EventTarget} target
- * @param {EventInit | undefined} eventInitDict
- */
-function fireEvent (e, target, eventConstructor = Event, eventInitDict) {
-  // 1. If eventConstructor is not given, then let eventConstructor be Event.
-
-  // 2. Let event be the result of creating an event given eventConstructor,
-  //    in the relevant realm of target.
-  // 3. Initialize event’s type attribute to e.
-  const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap
-
-  // 4. Initialize any other IDL attributes of event as described in the
-  //    invocation of this algorithm.
-
-  // 5. Return the result of dispatching event at target, with legacy target
-  //    override flag set if set.
-  target.dispatchEvent(event)
-}
-
-/**
- * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol
- * @param {import('./websocket').WebSocket} ws
- * @param {number} type Opcode
- * @param {Buffer} data application data
- */
-function websocketMessageReceived (ws, type, data) {
-  // 1. If ready state is not OPEN (1), then return.
-  if (ws[kReadyState] !== states.OPEN) {
-    return
-  }
-
-  // 2. Let dataForEvent be determined by switching on type and binary type:
-  let dataForEvent
-
-  if (type === opcodes.TEXT) {
-    // -> type indicates that the data is Text
-    //      a new DOMString containing data
-    try {
-      dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data)
-    } catch {
-      failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.')
-      return
-    }
-  } else if (type === opcodes.BINARY) {
-    if (ws[kBinaryType] === 'blob') {
-      // -> type indicates that the data is Binary and binary type is "blob"
-      //      a new Blob object, created in the relevant Realm of the WebSocket
-      //      object, that represents data as its raw data
-      dataForEvent = new Blob([data])
-    } else {
-      // -> type indicates that the data is Binary and binary type is "arraybuffer"
-      //      a new ArrayBuffer object, created in the relevant Realm of the
-      //      WebSocket object, whose contents are data
-      dataForEvent = new Uint8Array(data).buffer
-    }
-  }
-
-  // 3. Fire an event named message at the WebSocket object, using MessageEvent,
-  //    with the origin attribute initialized to the serialization of the WebSocket
-  //    object’s url's origin, and the data attribute initialized to dataForEvent.
-  fireEvent('message', ws, MessageEvent, {
-    origin: ws[kWebSocketURL].origin,
-    data: dataForEvent
-  })
-}
-
-/**
- * @see https://datatracker.ietf.org/doc/html/rfc6455
- * @see https://datatracker.ietf.org/doc/html/rfc2616
- * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407
- * @param {string} protocol
- */
-function isValidSubprotocol (protocol) {
-  // If present, this value indicates one
-  // or more comma-separated subprotocol the client wishes to speak,
-  // ordered by preference.  The elements that comprise this value
-  // MUST be non-empty strings with characters in the range U+0021 to
-  // U+007E not including separator characters as defined in
-  // [RFC2616] and MUST all be unique strings.
-  if (protocol.length === 0) {
-    return false
-  }
-
-  for (const char of protocol) {
-    const code = char.charCodeAt(0)
-
-    if (
-      code < 0x21 ||
-      code > 0x7E ||
-      char === '(' ||
-      char === ')' ||
-      char === '<' ||
-      char === '>' ||
-      char === '@' ||
-      char === ',' ||
-      char === ';' ||
-      char === ':' ||
-      char === '\\' ||
-      char === '"' ||
-      char === '/' ||
-      char === '[' ||
-      char === ']' ||
-      char === '?' ||
-      char === '=' ||
-      char === '{' ||
-      char === '}' ||
-      code === 32 || // SP
-      code === 9 // HT
-    ) {
-      return false
-    }
-  }
-
-  return true
-}
-
-/**
- * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4
- * @param {number} code
- */
-function isValidStatusCode (code) {
-  if (code >= 1000 && code < 1015) {
-    return (
-      code !== 1004 && // reserved
-      code !== 1005 && // "MUST NOT be set as a status code"
-      code !== 1006 // "MUST NOT be set as a status code"
-    )
-  }
-
-  return code >= 3000 && code <= 4999
-}
-
-/**
- * @param {import('./websocket').WebSocket} ws
- * @param {string|undefined} reason
- */
-function failWebsocketConnection (ws, reason) {
-  const { [kController]: controller, [kResponse]: response } = ws
-
-  controller.abort()
-
-  if (response?.socket && !response.socket.destroyed) {
-    response.socket.destroy()
-  }
-
-  if (reason) {
-    fireEvent('error', ws, ErrorEvent, {
-      error: new Error(reason)
-    })
-  }
-}
-
-module.exports = {
-  isEstablished,
-  isClosing,
-  isClosed,
-  fireEvent,
-  isValidSubprotocol,
-  isValidStatusCode,
-  failWebsocketConnection,
-  websocketMessageReceived
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/websocket.js b/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/websocket.js
deleted file mode 100644
index e4aa58f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/lib/websocket/websocket.js
+++ /dev/null
@@ -1,641 +0,0 @@
-'use strict'
-
-const { webidl } = require('../fetch/webidl')
-const { DOMException } = require('../fetch/constants')
-const { URLSerializer } = require('../fetch/dataURL')
-const { getGlobalOrigin } = require('../fetch/global')
-const { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require('./constants')
-const {
-  kWebSocketURL,
-  kReadyState,
-  kController,
-  kBinaryType,
-  kResponse,
-  kSentClose,
-  kByteParser
-} = require('./symbols')
-const { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require('./util')
-const { establishWebSocketConnection } = require('./connection')
-const { WebsocketFrameSend } = require('./frame')
-const { ByteParser } = require('./receiver')
-const { kEnumerableProperty, isBlobLike } = require('../core/util')
-const { getGlobalDispatcher } = require('../global')
-const { types } = require('util')
-
-let experimentalWarned = false
-
-// https://websockets.spec.whatwg.org/#interface-definition
-class WebSocket extends EventTarget {
-  #events = {
-    open: null,
-    error: null,
-    close: null,
-    message: null
-  }
-
-  #bufferedAmount = 0
-  #protocol = ''
-  #extensions = ''
-
-  /**
-   * @param {string} url
-   * @param {string|string[]} protocols
-   */
-  constructor (url, protocols = []) {
-    super()
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' })
-
-    if (!experimentalWarned) {
-      experimentalWarned = true
-      process.emitWarning('WebSockets are experimental, expect them to change at any time.', {
-        code: 'UNDICI-WS'
-      })
-    }
-
-    const options = webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'](protocols)
-
-    url = webidl.converters.USVString(url)
-    protocols = options.protocols
-
-    // 1. Let baseURL be this's relevant settings object's API base URL.
-    const baseURL = getGlobalOrigin()
-
-    // 1. Let urlRecord be the result of applying the URL parser to url with baseURL.
-    let urlRecord
-
-    try {
-      urlRecord = new URL(url, baseURL)
-    } catch (e) {
-      // 3. If urlRecord is failure, then throw a "SyntaxError" DOMException.
-      throw new DOMException(e, 'SyntaxError')
-    }
-
-    // 4. If urlRecord’s scheme is "http", then set urlRecord’s scheme to "ws".
-    if (urlRecord.protocol === 'http:') {
-      urlRecord.protocol = 'ws:'
-    } else if (urlRecord.protocol === 'https:') {
-      // 5. Otherwise, if urlRecord’s scheme is "https", set urlRecord’s scheme to "wss".
-      urlRecord.protocol = 'wss:'
-    }
-
-    // 6. If urlRecord’s scheme is not "ws" or "wss", then throw a "SyntaxError" DOMException.
-    if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') {
-      throw new DOMException(
-        `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`,
-        'SyntaxError'
-      )
-    }
-
-    // 7. If urlRecord’s fragment is non-null, then throw a "SyntaxError"
-    //    DOMException.
-    if (urlRecord.hash || urlRecord.href.endsWith('#')) {
-      throw new DOMException('Got fragment', 'SyntaxError')
-    }
-
-    // 8. If protocols is a string, set protocols to a sequence consisting
-    //    of just that string.
-    if (typeof protocols === 'string') {
-      protocols = [protocols]
-    }
-
-    // 9. If any of the values in protocols occur more than once or otherwise
-    //    fail to match the requirements for elements that comprise the value
-    //    of `Sec-WebSocket-Protocol` fields as defined by The WebSocket
-    //    protocol, then throw a "SyntaxError" DOMException.
-    if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {
-      throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')
-    }
-
-    if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {
-      throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')
-    }
-
-    // 10. Set this's url to urlRecord.
-    this[kWebSocketURL] = new URL(urlRecord.href)
-
-    // 11. Let client be this's relevant settings object.
-
-    // 12. Run this step in parallel:
-
-    //    1. Establish a WebSocket connection given urlRecord, protocols,
-    //       and client.
-    this[kController] = establishWebSocketConnection(
-      urlRecord,
-      protocols,
-      this,
-      (response) => this.#onConnectionEstablished(response),
-      options
-    )
-
-    // Each WebSocket object has an associated ready state, which is a
-    // number representing the state of the connection. Initially it must
-    // be CONNECTING (0).
-    this[kReadyState] = WebSocket.CONNECTING
-
-    // The extensions attribute must initially return the empty string.
-
-    // The protocol attribute must initially return the empty string.
-
-    // Each WebSocket object has an associated binary type, which is a
-    // BinaryType. Initially it must be "blob".
-    this[kBinaryType] = 'blob'
-  }
-
-  /**
-   * @see https://websockets.spec.whatwg.org/#dom-websocket-close
-   * @param {number|undefined} code
-   * @param {string|undefined} reason
-   */
-  close (code = undefined, reason = undefined) {
-    webidl.brandCheck(this, WebSocket)
-
-    if (code !== undefined) {
-      code = webidl.converters['unsigned short'](code, { clamp: true })
-    }
-
-    if (reason !== undefined) {
-      reason = webidl.converters.USVString(reason)
-    }
-
-    // 1. If code is present, but is neither an integer equal to 1000 nor an
-    //    integer in the range 3000 to 4999, inclusive, throw an
-    //    "InvalidAccessError" DOMException.
-    if (code !== undefined) {
-      if (code !== 1000 && (code < 3000 || code > 4999)) {
-        throw new DOMException('invalid code', 'InvalidAccessError')
-      }
-    }
-
-    let reasonByteLength = 0
-
-    // 2. If reason is present, then run these substeps:
-    if (reason !== undefined) {
-      // 1. Let reasonBytes be the result of encoding reason.
-      // 2. If reasonBytes is longer than 123 bytes, then throw a
-      //    "SyntaxError" DOMException.
-      reasonByteLength = Buffer.byteLength(reason)
-
-      if (reasonByteLength > 123) {
-        throw new DOMException(
-          `Reason must be less than 123 bytes; received ${reasonByteLength}`,
-          'SyntaxError'
-        )
-      }
-    }
-
-    // 3. Run the first matching steps from the following list:
-    if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) {
-      // If this's ready state is CLOSING (2) or CLOSED (3)
-      // Do nothing.
-    } else if (!isEstablished(this)) {
-      // If the WebSocket connection is not yet established
-      // Fail the WebSocket connection and set this's ready state
-      // to CLOSING (2).
-      failWebsocketConnection(this, 'Connection was closed before it was established.')
-      this[kReadyState] = WebSocket.CLOSING
-    } else if (!isClosing(this)) {
-      // If the WebSocket closing handshake has not yet been started
-      // Start the WebSocket closing handshake and set this's ready
-      // state to CLOSING (2).
-      // - If neither code nor reason is present, the WebSocket Close
-      //   message must not have a body.
-      // - If code is present, then the status code to use in the
-      //   WebSocket Close message must be the integer given by code.
-      // - If reason is also present, then reasonBytes must be
-      //   provided in the Close message after the status code.
-
-      const frame = new WebsocketFrameSend()
-
-      // If neither code nor reason is present, the WebSocket Close
-      // message must not have a body.
-
-      // If code is present, then the status code to use in the
-      // WebSocket Close message must be the integer given by code.
-      if (code !== undefined && reason === undefined) {
-        frame.frameData = Buffer.allocUnsafe(2)
-        frame.frameData.writeUInt16BE(code, 0)
-      } else if (code !== undefined && reason !== undefined) {
-        // If reason is also present, then reasonBytes must be
-        // provided in the Close message after the status code.
-        frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength)
-        frame.frameData.writeUInt16BE(code, 0)
-        // the body MAY contain UTF-8-encoded data with value /reason/
-        frame.frameData.write(reason, 2, 'utf-8')
-      } else {
-        frame.frameData = emptyBuffer
-      }
-
-      /** @type {import('stream').Duplex} */
-      const socket = this[kResponse].socket
-
-      socket.write(frame.createFrame(opcodes.CLOSE), (err) => {
-        if (!err) {
-          this[kSentClose] = true
-        }
-      })
-
-      // Upon either sending or receiving a Close control frame, it is said
-      // that _The WebSocket Closing Handshake is Started_ and that the
-      // WebSocket connection is in the CLOSING state.
-      this[kReadyState] = states.CLOSING
-    } else {
-      // Otherwise
-      // Set this's ready state to CLOSING (2).
-      this[kReadyState] = WebSocket.CLOSING
-    }
-  }
-
-  /**
-   * @see https://websockets.spec.whatwg.org/#dom-websocket-send
-   * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data
-   */
-  send (data) {
-    webidl.brandCheck(this, WebSocket)
-
-    webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' })
-
-    data = webidl.converters.WebSocketSendData(data)
-
-    // 1. If this's ready state is CONNECTING, then throw an
-    //    "InvalidStateError" DOMException.
-    if (this[kReadyState] === WebSocket.CONNECTING) {
-      throw new DOMException('Sent before connected.', 'InvalidStateError')
-    }
-
-    // 2. Run the appropriate set of steps from the following list:
-    // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1
-    // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2
-
-    if (!isEstablished(this) || isClosing(this)) {
-      return
-    }
-
-    /** @type {import('stream').Duplex} */
-    const socket = this[kResponse].socket
-
-    // If data is a string
-    if (typeof data === 'string') {
-      // If the WebSocket connection is established and the WebSocket
-      // closing handshake has not yet started, then the user agent
-      // must send a WebSocket Message comprised of the data argument
-      // using a text frame opcode; if the data cannot be sent, e.g.
-      // because it would need to be buffered but the buffer is full,
-      // the user agent must flag the WebSocket as full and then close
-      // the WebSocket connection. Any invocation of this method with a
-      // string argument that does not throw an exception must increase
-      // the bufferedAmount attribute by the number of bytes needed to
-      // express the argument as UTF-8.
-
-      const value = Buffer.from(data)
-      const frame = new WebsocketFrameSend(value)
-      const buffer = frame.createFrame(opcodes.TEXT)
-
-      this.#bufferedAmount += value.byteLength
-      socket.write(buffer, () => {
-        this.#bufferedAmount -= value.byteLength
-      })
-    } else if (types.isArrayBuffer(data)) {
-      // If the WebSocket connection is established, and the WebSocket
-      // closing handshake has not yet started, then the user agent must
-      // send a WebSocket Message comprised of data using a binary frame
-      // opcode; if the data cannot be sent, e.g. because it would need
-      // to be buffered but the buffer is full, the user agent must flag
-      // the WebSocket as full and then close the WebSocket connection.
-      // The data to be sent is the data stored in the buffer described
-      // by the ArrayBuffer object. Any invocation of this method with an
-      // ArrayBuffer argument that does not throw an exception must
-      // increase the bufferedAmount attribute by the length of the
-      // ArrayBuffer in bytes.
-
-      const value = Buffer.from(data)
-      const frame = new WebsocketFrameSend(value)
-      const buffer = frame.createFrame(opcodes.BINARY)
-
-      this.#bufferedAmount += value.byteLength
-      socket.write(buffer, () => {
-        this.#bufferedAmount -= value.byteLength
-      })
-    } else if (ArrayBuffer.isView(data)) {
-      // If the WebSocket connection is established, and the WebSocket
-      // closing handshake has not yet started, then the user agent must
-      // send a WebSocket Message comprised of data using a binary frame
-      // opcode; if the data cannot be sent, e.g. because it would need to
-      // be buffered but the buffer is full, the user agent must flag the
-      // WebSocket as full and then close the WebSocket connection. The
-      // data to be sent is the data stored in the section of the buffer
-      // described by the ArrayBuffer object that data references. Any
-      // invocation of this method with this kind of argument that does
-      // not throw an exception must increase the bufferedAmount attribute
-      // by the length of data’s buffer in bytes.
-
-      const ab = Buffer.from(data, data.byteOffset, data.byteLength)
-
-      const frame = new WebsocketFrameSend(ab)
-      const buffer = frame.createFrame(opcodes.BINARY)
-
-      this.#bufferedAmount += ab.byteLength
-      socket.write(buffer, () => {
-        this.#bufferedAmount -= ab.byteLength
-      })
-    } else if (isBlobLike(data)) {
-      // If the WebSocket connection is established, and the WebSocket
-      // closing handshake has not yet started, then the user agent must
-      // send a WebSocket Message comprised of data using a binary frame
-      // opcode; if the data cannot be sent, e.g. because it would need to
-      // be buffered but the buffer is full, the user agent must flag the
-      // WebSocket as full and then close the WebSocket connection. The data
-      // to be sent is the raw data represented by the Blob object. Any
-      // invocation of this method with a Blob argument that does not throw
-      // an exception must increase the bufferedAmount attribute by the size
-      // of the Blob object’s raw data, in bytes.
-
-      const frame = new WebsocketFrameSend()
-
-      data.arrayBuffer().then((ab) => {
-        const value = Buffer.from(ab)
-        frame.frameData = value
-        const buffer = frame.createFrame(opcodes.BINARY)
-
-        this.#bufferedAmount += value.byteLength
-        socket.write(buffer, () => {
-          this.#bufferedAmount -= value.byteLength
-        })
-      })
-    }
-  }
-
-  get readyState () {
-    webidl.brandCheck(this, WebSocket)
-
-    // The readyState getter steps are to return this's ready state.
-    return this[kReadyState]
-  }
-
-  get bufferedAmount () {
-    webidl.brandCheck(this, WebSocket)
-
-    return this.#bufferedAmount
-  }
-
-  get url () {
-    webidl.brandCheck(this, WebSocket)
-
-    // The url getter steps are to return this's url, serialized.
-    return URLSerializer(this[kWebSocketURL])
-  }
-
-  get extensions () {
-    webidl.brandCheck(this, WebSocket)
-
-    return this.#extensions
-  }
-
-  get protocol () {
-    webidl.brandCheck(this, WebSocket)
-
-    return this.#protocol
-  }
-
-  get onopen () {
-    webidl.brandCheck(this, WebSocket)
-
-    return this.#events.open
-  }
-
-  set onopen (fn) {
-    webidl.brandCheck(this, WebSocket)
-
-    if (this.#events.open) {
-      this.removeEventListener('open', this.#events.open)
-    }
-
-    if (typeof fn === 'function') {
-      this.#events.open = fn
-      this.addEventListener('open', fn)
-    } else {
-      this.#events.open = null
-    }
-  }
-
-  get onerror () {
-    webidl.brandCheck(this, WebSocket)
-
-    return this.#events.error
-  }
-
-  set onerror (fn) {
-    webidl.brandCheck(this, WebSocket)
-
-    if (this.#events.error) {
-      this.removeEventListener('error', this.#events.error)
-    }
-
-    if (typeof fn === 'function') {
-      this.#events.error = fn
-      this.addEventListener('error', fn)
-    } else {
-      this.#events.error = null
-    }
-  }
-
-  get onclose () {
-    webidl.brandCheck(this, WebSocket)
-
-    return this.#events.close
-  }
-
-  set onclose (fn) {
-    webidl.brandCheck(this, WebSocket)
-
-    if (this.#events.close) {
-      this.removeEventListener('close', this.#events.close)
-    }
-
-    if (typeof fn === 'function') {
-      this.#events.close = fn
-      this.addEventListener('close', fn)
-    } else {
-      this.#events.close = null
-    }
-  }
-
-  get onmessage () {
-    webidl.brandCheck(this, WebSocket)
-
-    return this.#events.message
-  }
-
-  set onmessage (fn) {
-    webidl.brandCheck(this, WebSocket)
-
-    if (this.#events.message) {
-      this.removeEventListener('message', this.#events.message)
-    }
-
-    if (typeof fn === 'function') {
-      this.#events.message = fn
-      this.addEventListener('message', fn)
-    } else {
-      this.#events.message = null
-    }
-  }
-
-  get binaryType () {
-    webidl.brandCheck(this, WebSocket)
-
-    return this[kBinaryType]
-  }
-
-  set binaryType (type) {
-    webidl.brandCheck(this, WebSocket)
-
-    if (type !== 'blob' && type !== 'arraybuffer') {
-      this[kBinaryType] = 'blob'
-    } else {
-      this[kBinaryType] = type
-    }
-  }
-
-  /**
-   * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol
-   */
-  #onConnectionEstablished (response) {
-    // processResponse is called when the "response’s header list has been received and initialized."
-    // once this happens, the connection is open
-    this[kResponse] = response
-
-    const parser = new ByteParser(this)
-    parser.on('drain', function onParserDrain () {
-      this.ws[kResponse].socket.resume()
-    })
-
-    response.socket.ws = this
-    this[kByteParser] = parser
-
-    // 1. Change the ready state to OPEN (1).
-    this[kReadyState] = states.OPEN
-
-    // 2. Change the extensions attribute’s value to the extensions in use, if
-    //    it is not the null value.
-    // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1
-    const extensions = response.headersList.get('sec-websocket-extensions')
-
-    if (extensions !== null) {
-      this.#extensions = extensions
-    }
-
-    // 3. Change the protocol attribute’s value to the subprotocol in use, if
-    //    it is not the null value.
-    // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9
-    const protocol = response.headersList.get('sec-websocket-protocol')
-
-    if (protocol !== null) {
-      this.#protocol = protocol
-    }
-
-    // 4. Fire an event named open at the WebSocket object.
-    fireEvent('open', this)
-  }
-}
-
-// https://websockets.spec.whatwg.org/#dom-websocket-connecting
-WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING
-// https://websockets.spec.whatwg.org/#dom-websocket-open
-WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN
-// https://websockets.spec.whatwg.org/#dom-websocket-closing
-WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING
-// https://websockets.spec.whatwg.org/#dom-websocket-closed
-WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED
-
-Object.defineProperties(WebSocket.prototype, {
-  CONNECTING: staticPropertyDescriptors,
-  OPEN: staticPropertyDescriptors,
-  CLOSING: staticPropertyDescriptors,
-  CLOSED: staticPropertyDescriptors,
-  url: kEnumerableProperty,
-  readyState: kEnumerableProperty,
-  bufferedAmount: kEnumerableProperty,
-  onopen: kEnumerableProperty,
-  onerror: kEnumerableProperty,
-  onclose: kEnumerableProperty,
-  close: kEnumerableProperty,
-  onmessage: kEnumerableProperty,
-  binaryType: kEnumerableProperty,
-  send: kEnumerableProperty,
-  extensions: kEnumerableProperty,
-  protocol: kEnumerableProperty,
-  [Symbol.toStringTag]: {
-    value: 'WebSocket',
-    writable: false,
-    enumerable: false,
-    configurable: true
-  }
-})
-
-Object.defineProperties(WebSocket, {
-  CONNECTING: staticPropertyDescriptors,
-  OPEN: staticPropertyDescriptors,
-  CLOSING: staticPropertyDescriptors,
-  CLOSED: staticPropertyDescriptors
-})
-
-webidl.converters['sequence<DOMString>'] = webidl.sequenceConverter(
-  webidl.converters.DOMString
-)
-
-webidl.converters['DOMString or sequence<DOMString>'] = function (V) {
-  if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) {
-    return webidl.converters['sequence<DOMString>'](V)
-  }
-
-  return webidl.converters.DOMString(V)
-}
-
-// This implements the propsal made in https://github.com/whatwg/websockets/issues/42
-webidl.converters.WebSocketInit = webidl.dictionaryConverter([
-  {
-    key: 'protocols',
-    converter: webidl.converters['DOMString or sequence<DOMString>'],
-    get defaultValue () {
-      return []
-    }
-  },
-  {
-    key: 'dispatcher',
-    converter: (V) => V,
-    get defaultValue () {
-      return getGlobalDispatcher()
-    }
-  },
-  {
-    key: 'headers',
-    converter: webidl.nullableConverter(webidl.converters.HeadersInit)
-  }
-])
-
-webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'] = function (V) {
-  if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) {
-    return webidl.converters.WebSocketInit(V)
-  }
-
-  return { protocols: webidl.converters['DOMString or sequence<DOMString>'](V) }
-}
-
-webidl.converters.WebSocketSendData = function (V) {
-  if (webidl.util.Type(V) === 'Object') {
-    if (isBlobLike(V)) {
-      return webidl.converters.Blob(V, { strict: false })
-    }
-
-    if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {
-      return webidl.converters.BufferSource(V)
-    }
-  }
-
-  return webidl.converters.USVString(V)
-}
-
-module.exports = {
-  WebSocket
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/package.json b/actions/bcr-pr-review-notifier/node_modules/undici/package.json
deleted file mode 100644
index 2b64daf..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/package.json
+++ /dev/null
@@ -1,167 +0,0 @@
-{
-  "name": "undici",
-  "version": "5.28.2",
-  "description": "An HTTP/1.1 client, written from scratch for Node.js",
-  "homepage": "https://undici.nodejs.org",
-  "bugs": {
-    "url": "https://github.com/nodejs/undici/issues"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/nodejs/undici.git"
-  },
-  "license": "MIT",
-  "contributors": [
-    {
-      "name": "Daniele Belardi",
-      "url": "https://github.com/dnlup",
-      "author": true
-    },
-    {
-      "name": "Ethan Arrowood",
-      "url": "https://github.com/ethan-arrowood",
-      "author": true
-    },
-    {
-      "name": "Matteo Collina",
-      "url": "https://github.com/mcollina",
-      "author": true
-    },
-    {
-      "name": "Matthew Aitken",
-      "url": "https://github.com/KhafraDev",
-      "author": true
-    },
-    {
-      "name": "Robert Nagy",
-      "url": "https://github.com/ronag",
-      "author": true
-    },
-    {
-      "name": "Szymon Marczak",
-      "url": "https://github.com/szmarczak",
-      "author": true
-    },
-    {
-      "name": "Tomas Della Vedova",
-      "url": "https://github.com/delvedor",
-      "author": true
-    }
-  ],
-  "keywords": [
-    "fetch",
-    "http",
-    "https",
-    "promise",
-    "request",
-    "curl",
-    "wget",
-    "xhr",
-    "whatwg"
-  ],
-  "main": "index.js",
-  "types": "index.d.ts",
-  "files": [
-    "*.d.ts",
-    "index.js",
-    "index-fetch.js",
-    "lib",
-    "types",
-    "docs"
-  ],
-  "scripts": {
-    "build:node": "npx esbuild@0.19.4 index-fetch.js --bundle --platform=node --outfile=undici-fetch.js --define:esbuildDetection=1 --keep-names",
-    "prebuild:wasm": "node build/wasm.js --prebuild",
-    "build:wasm": "node build/wasm.js --docker",
-    "lint": "standard | snazzy",
-    "lint:fix": "standard --fix | snazzy",
-    "test": "node scripts/generate-pem && npm run test:tap && npm run test:node-fetch && npm run test:fetch && npm run test:cookies && npm run test:wpt && npm run test:websocket && npm run test:jest && npm run test:typescript",
-    "test:cookies": "node scripts/verifyVersion 16 || tap test/cookie/*.js",
-    "test:node-fetch": "node scripts/verifyVersion.js 16 || mocha --exit test/node-fetch",
-    "test:fetch": "node scripts/verifyVersion.js 16 || (npm run build:node && tap --expose-gc test/fetch/*.js && tap test/webidl/*.js)",
-    "test:jest": "node scripts/verifyVersion.js 14 || jest",
-    "test:tap": "tap test/*.js test/diagnostics-channel/*.js",
-    "test:tdd": "tap test/*.js test/diagnostics-channel/*.js -w",
-    "test:typescript": "node scripts/verifyVersion.js 14 || tsd && tsc --skipLibCheck test/imports/undici-import.ts",
-    "test:websocket": "node scripts/verifyVersion.js 18 || tap test/websocket/*.js",
-    "test:wpt": "node scripts/verifyVersion 18 || (node test/wpt/start-fetch.mjs && node test/wpt/start-FileAPI.mjs && node test/wpt/start-mimesniff.mjs && node test/wpt/start-xhr.mjs && node test/wpt/start-websockets.mjs)",
-    "coverage": "nyc --reporter=text --reporter=html npm run test",
-    "coverage:ci": "nyc --reporter=lcov npm run test",
-    "bench": "PORT=3042 concurrently -k -s first npm:bench:server npm:bench:run",
-    "bench:server": "node benchmarks/server.js",
-    "prebench:run": "node benchmarks/wait.js",
-    "bench:run": "CONNECTIONS=1 node benchmarks/benchmark.js; CONNECTIONS=50 node benchmarks/benchmark.js",
-    "serve:website": "docsify serve .",
-    "prepare": "husky install",
-    "fuzz": "jsfuzz test/fuzzing/fuzz.js corpus"
-  },
-  "devDependencies": {
-    "@sinonjs/fake-timers": "^11.1.0",
-    "@types/node": "^18.0.3",
-    "abort-controller": "^3.0.0",
-    "atomic-sleep": "^1.0.0",
-    "chai": "^4.3.4",
-    "chai-as-promised": "^7.1.1",
-    "chai-iterator": "^3.0.2",
-    "chai-string": "^1.5.0",
-    "concurrently": "^8.0.1",
-    "cronometro": "^1.0.5",
-    "delay": "^5.0.0",
-    "dns-packet": "^5.4.0",
-    "docsify-cli": "^4.4.3",
-    "form-data": "^4.0.0",
-    "formdata-node": "^6.0.3",
-    "https-pem": "^3.0.0",
-    "husky": "^8.0.1",
-    "import-fresh": "^3.3.0",
-    "jest": "^29.0.2",
-    "jsdom": "^23.0.0",
-    "jsfuzz": "^1.0.15",
-    "mocha": "^10.0.0",
-    "mockttp": "^3.9.2",
-    "p-timeout": "^3.2.0",
-    "pre-commit": "^1.2.2",
-    "proxy": "^1.0.2",
-    "proxyquire": "^2.1.3",
-    "semver": "^7.5.4",
-    "sinon": "^17.0.1",
-    "snazzy": "^9.0.0",
-    "standard": "^17.0.0",
-    "table": "^6.8.0",
-    "tap": "^16.1.0",
-    "tsd": "^0.29.0",
-    "typescript": "^5.0.2",
-    "wait-on": "^7.0.1",
-    "ws": "^8.11.0"
-  },
-  "engines": {
-    "node": ">=14.0"
-  },
-  "standard": {
-    "env": [
-      "mocha"
-    ],
-    "ignore": [
-      "lib/llhttp/constants.js",
-      "lib/llhttp/utils.js",
-      "test/wpt/tests"
-    ]
-  },
-  "tsd": {
-    "directory": "test/types",
-    "compilerOptions": {
-      "esModuleInterop": true,
-      "lib": [
-        "esnext"
-      ]
-    }
-  },
-  "jest": {
-    "testMatch": [
-      "<rootDir>/test/jest/**"
-    ]
-  },
-  "dependencies": {
-    "@fastify/busboy": "^2.0.0"
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/README.md b/actions/bcr-pr-review-notifier/node_modules/undici/types/README.md
deleted file mode 100644
index 20a721c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# undici-types
-
-This package is a dual-publish of the [undici](https://www.npmjs.com/package/undici) library types. The `undici` package **still contains types**. This package is for users who _only_ need undici types (such as for `@types/node`). It is published alongside every release of `undici`, so you can always use the same version.
-
-- [GitHub nodejs/undici](https://github.com/nodejs/undici)
-- [Undici Documentation](https://undici.nodejs.org/#/)
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/agent.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/agent.d.ts
deleted file mode 100644
index 58081ce..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/agent.d.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { URL } from 'url'
-import Pool from './pool'
-import Dispatcher from "./dispatcher";
-
-export default Agent
-
-declare class Agent extends Dispatcher{
-  constructor(opts?: Agent.Options)
-  /** `true` after `dispatcher.close()` has been called. */
-  closed: boolean;
-  /** `true` after `dispatcher.destroyed()` has been called or `dispatcher.close()` has been called and the dispatcher shutdown has completed. */
-  destroyed: boolean;
-  /** Dispatches a request. */
-  dispatch(options: Agent.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean;
-}
-
-declare namespace Agent {
-  export interface Options extends Pool.Options {
-    /** Default: `(origin, opts) => new Pool(origin, opts)`. */
-    factory?(origin: string | URL, opts: Object): Dispatcher;
-    /** Integer. Default: `0` */
-    maxRedirections?: number;
-
-    interceptors?: { Agent?: readonly Dispatcher.DispatchInterceptor[] } & Pool.Options["interceptors"]
-  }
-
-  export interface DispatchOptions extends Dispatcher.DispatchOptions {
-    /** Integer. */
-    maxRedirections?: number;
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/api.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/api.d.ts
deleted file mode 100644
index 400341d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/api.d.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { URL, UrlObject } from 'url'
-import { Duplex } from 'stream'
-import Dispatcher from './dispatcher'
-
-export {
-  request,
-  stream,
-  pipeline,
-  connect,
-  upgrade,
-}
-
-/** Performs an HTTP request. */
-declare function request(
-  url: string | URL | UrlObject,
-  options?: { dispatcher?: Dispatcher } & Omit<Dispatcher.RequestOptions, 'origin' | 'path' | 'method'> & Partial<Pick<Dispatcher.RequestOptions, 'method'>>,
-): Promise<Dispatcher.ResponseData>;
-
-/** A faster version of `request`. */
-declare function stream(
-  url: string | URL | UrlObject,
-  options: { dispatcher?: Dispatcher } & Omit<Dispatcher.RequestOptions, 'origin' | 'path'>,
-  factory: Dispatcher.StreamFactory
-): Promise<Dispatcher.StreamData>;
-
-/** For easy use with `stream.pipeline`. */
-declare function pipeline(
-  url: string | URL | UrlObject,
-  options: { dispatcher?: Dispatcher } & Omit<Dispatcher.PipelineOptions, 'origin' | 'path'>,
-  handler: Dispatcher.PipelineHandler
-): Duplex;
-
-/** Starts two-way communications with the requested resource. */
-declare function connect(
-  url: string | URL | UrlObject,
-  options?: { dispatcher?: Dispatcher } & Omit<Dispatcher.ConnectOptions, 'origin' | 'path'>
-): Promise<Dispatcher.ConnectData>;
-
-/** Upgrade to a different protocol. */
-declare function upgrade(
-  url: string | URL | UrlObject,
-  options?: { dispatcher?: Dispatcher } & Omit<Dispatcher.UpgradeOptions, 'origin' | 'path'>
-): Promise<Dispatcher.UpgradeData>;
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/balanced-pool.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/balanced-pool.d.ts
deleted file mode 100644
index d1e9375..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/balanced-pool.d.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import Pool from './pool'
-import Dispatcher from './dispatcher'
-import { URL } from 'url'
-
-export default BalancedPool
-
-declare class BalancedPool extends Dispatcher {
-  constructor(url: string | string[] | URL | URL[], options?: Pool.Options);
-
-  addUpstream(upstream: string | URL): BalancedPool;
-  removeUpstream(upstream: string | URL): BalancedPool;
-  upstreams: Array<string>;
-
-  /** `true` after `pool.close()` has been called. */
-  closed: boolean;
-  /** `true` after `pool.destroyed()` has been called or `pool.close()` has been called and the pool shutdown has completed. */
-  destroyed: boolean;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/cache.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/cache.d.ts
deleted file mode 100644
index 4c33335..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/cache.d.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import type { RequestInfo, Response, Request } from './fetch'
-
-export interface CacheStorage {
-  match (request: RequestInfo, options?: MultiCacheQueryOptions): Promise<Response | undefined>,
-  has (cacheName: string): Promise<boolean>,
-  open (cacheName: string): Promise<Cache>,
-  delete (cacheName: string): Promise<boolean>,
-  keys (): Promise<string[]>
-}
-
-declare const CacheStorage: {
-  prototype: CacheStorage
-  new(): CacheStorage
-}
-
-export interface Cache {
-  match (request: RequestInfo, options?: CacheQueryOptions): Promise<Response | undefined>,
-  matchAll (request?: RequestInfo, options?: CacheQueryOptions): Promise<readonly Response[]>,
-  add (request: RequestInfo): Promise<undefined>,
-  addAll (requests: RequestInfo[]): Promise<undefined>,
-  put (request: RequestInfo, response: Response): Promise<undefined>,
-  delete (request: RequestInfo, options?: CacheQueryOptions): Promise<boolean>,
-  keys (request?: RequestInfo, options?: CacheQueryOptions): Promise<readonly Request[]>
-}
-
-export interface CacheQueryOptions {
-  ignoreSearch?: boolean,
-  ignoreMethod?: boolean,
-  ignoreVary?: boolean
-}
-
-export interface MultiCacheQueryOptions extends CacheQueryOptions {
-  cacheName?: string
-}
-
-export declare const caches: CacheStorage
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/client.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/client.d.ts
deleted file mode 100644
index 56e78cc..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/client.d.ts
+++ /dev/null
@@ -1,97 +0,0 @@
-import { URL } from 'url'
-import { TlsOptions } from 'tls'
-import Dispatcher from './dispatcher'
-import buildConnector from "./connector";
-
-/**
- * A basic HTTP/1.1 client, mapped on top a single TCP/TLS connection. Pipelining is disabled by default.
- */
-export class Client extends Dispatcher {
-  constructor(url: string | URL, options?: Client.Options);
-  /** Property to get and set the pipelining factor. */
-  pipelining: number;
-  /** `true` after `client.close()` has been called. */
-  closed: boolean;
-  /** `true` after `client.destroyed()` has been called or `client.close()` has been called and the client shutdown has completed. */
-  destroyed: boolean;
-}
-
-export declare namespace Client {
-  export interface OptionsInterceptors {
-    Client: readonly Dispatcher.DispatchInterceptor[];
-  }
-  export interface Options {
-    /** TODO */
-    interceptors?: OptionsInterceptors;
-    /** The maximum length of request headers in bytes. Default: Node.js' `--max-http-header-size` or `16384` (16KiB). */
-    maxHeaderSize?: number;
-    /** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers (Node 14 and above only). Default: `300e3` milliseconds (300s). */
-    headersTimeout?: number;
-    /** @deprecated unsupported socketTimeout, use headersTimeout & bodyTimeout instead */
-    socketTimeout?: never;
-    /** @deprecated unsupported requestTimeout, use headersTimeout & bodyTimeout instead */
-    requestTimeout?: never;
-    /** TODO */
-    connectTimeout?: number;
-    /** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Default: `300e3` milliseconds (300s). */
-    bodyTimeout?: number;
-    /** @deprecated unsupported idleTimeout, use keepAliveTimeout instead */
-    idleTimeout?: never;
-    /** @deprecated unsupported keepAlive, use pipelining=0 instead */
-    keepAlive?: never;
-    /** the timeout, in milliseconds, after which a socket without active requests will time out. Monitors time between activity on a connected socket. This value may be overridden by *keep-alive* hints from the server. Default: `4e3` milliseconds (4s). */
-    keepAliveTimeout?: number;
-    /** @deprecated unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead */
-    maxKeepAliveTimeout?: never;
-    /** the maximum allowed `idleTimeout`, in milliseconds, when overridden by *keep-alive* hints from the server. Default: `600e3` milliseconds (10min). */
-    keepAliveMaxTimeout?: number;
-    /** A number of milliseconds subtracted from server *keep-alive* hints when overriding `idleTimeout` to account for timing inaccuracies caused by e.g. transport latency. Default: `1e3` milliseconds (1s). */
-    keepAliveTimeoutThreshold?: number;
-    /** TODO */
-    socketPath?: string;
-    /** The amount of concurrent requests to be sent over the single TCP/TLS connection according to [RFC7230](https://tools.ietf.org/html/rfc7230#section-6.3.2). Default: `1`. */
-    pipelining?: number;
-    /** @deprecated use the connect option instead */
-    tls?: never;
-    /** If `true`, an error is thrown when the request content-length header doesn't match the length of the request body. Default: `true`. */
-    strictContentLength?: boolean;
-    /** TODO */
-    maxCachedSessions?: number;
-    /** TODO */
-    maxRedirections?: number;
-    /** TODO */
-    connect?: buildConnector.BuildOptions | buildConnector.connector;
-    /** TODO */
-    maxRequestsPerClient?: number;
-    /** TODO */
-    localAddress?: string;
-    /** Max response body size in bytes, -1 is disabled */
-    maxResponseSize?: number;
-    /** Enables a family autodetection algorithm that loosely implements section 5 of RFC 8305. */
-    autoSelectFamily?: boolean;
-    /** The amount of time in milliseconds to wait for a connection attempt to finish before trying the next address when using the `autoSelectFamily` option. */
-    autoSelectFamilyAttemptTimeout?: number;
-    /**
-     * @description Enables support for H2 if the server has assigned bigger priority to it through ALPN negotiation.
-     * @default false
-    */
-    allowH2?: boolean;
-    /**
-     * @description Dictates the maximum number of concurrent streams for a single H2 session. It can be overridden by a SETTINGS remote frame.
-     * @default 100
-    */
-    maxConcurrentStreams?: number
-  }
-  export interface SocketInfo {
-    localAddress?: string
-    localPort?: number
-    remoteAddress?: string
-    remotePort?: number
-    remoteFamily?: string
-    timeout?: number
-    bytesWritten?: number
-    bytesRead?: number
-  }
-}
-
-export default Client;
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/connector.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/connector.d.ts
deleted file mode 100644
index bd92433..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/connector.d.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { TLSSocket, ConnectionOptions } from 'tls'
-import { IpcNetConnectOpts, Socket, TcpNetConnectOpts } from 'net'
-
-export default buildConnector
-declare function buildConnector (options?: buildConnector.BuildOptions): buildConnector.connector
-
-declare namespace buildConnector {
-  export type BuildOptions = (ConnectionOptions | TcpNetConnectOpts | IpcNetConnectOpts) & {
-    allowH2?: boolean;
-    maxCachedSessions?: number | null;
-    socketPath?: string | null;
-    timeout?: number | null;
-    port?: number;
-    keepAlive?: boolean | null;
-    keepAliveInitialDelay?: number | null;
-  }
-
-  export interface Options {
-    hostname: string
-    host?: string
-    protocol: string
-    port: string
-    servername?: string
-    localAddress?: string | null
-    httpSocket?: Socket
-  }
-
-  export type Callback = (...args: CallbackArgs) => void
-  type CallbackArgs = [null, Socket | TLSSocket] | [Error, null]
-
-  export interface connector {
-    (options: buildConnector.Options, callback: buildConnector.Callback): void
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/content-type.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/content-type.d.ts
deleted file mode 100644
index f2a87f1..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/content-type.d.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/// <reference types="node" />
-
-interface MIMEType {
-  type: string
-  subtype: string
-  parameters: Map<string, string>
-  essence: string
-}
-
-/**
- * Parse a string to a {@link MIMEType} object. Returns `failure` if the string
- * couldn't be parsed.
- * @see https://mimesniff.spec.whatwg.org/#parse-a-mime-type
- */
-export function parseMIMEType (input: string): 'failure' | MIMEType
-
-/**
- * Convert a MIMEType object to a string.
- * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type
- */
-export function serializeAMimeType (mimeType: MIMEType): string
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/cookies.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/cookies.d.ts
deleted file mode 100644
index aa38cae..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/cookies.d.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/// <reference types="node" />
-
-import type { Headers } from './fetch'
-
-export interface Cookie {
-  name: string
-  value: string
-  expires?: Date | number
-  maxAge?: number
-  domain?: string
-  path?: string
-  secure?: boolean
-  httpOnly?: boolean
-  sameSite?: 'Strict' | 'Lax' | 'None'
-  unparsed?: string[]
-}
-
-export function deleteCookie (
-  headers: Headers,
-  name: string,
-  attributes?: { name?: string, domain?: string }
-): void
-
-export function getCookies (headers: Headers): Record<string, string>
-
-export function getSetCookies (headers: Headers): Cookie[]
-
-export function setCookie (headers: Headers, cookie: Cookie): void
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/diagnostics-channel.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/diagnostics-channel.d.ts
deleted file mode 100644
index 85d4482..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/diagnostics-channel.d.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import { Socket } from "net";
-import { URL } from "url";
-import Connector from "./connector";
-import Dispatcher from "./dispatcher";
-
-declare namespace DiagnosticsChannel {
-  interface Request {
-    origin?: string | URL;
-    completed: boolean;
-    method?: Dispatcher.HttpMethod;
-    path: string;
-    headers: string;
-    addHeader(key: string, value: string): Request;
-  }
-  interface Response {
-    statusCode: number;
-    statusText: string;
-    headers: Array<Buffer>;
-  }
-  type Error = unknown;
-  interface ConnectParams {
-    host: URL["host"];
-    hostname: URL["hostname"];
-    protocol: URL["protocol"];
-    port: URL["port"];
-    servername: string | null;
-  }
-  type Connector = Connector.connector;
-  export interface RequestCreateMessage {
-    request: Request;
-  }
-  export interface RequestBodySentMessage {
-    request: Request;
-  }
-  export interface RequestHeadersMessage {
-    request: Request;
-    response: Response;
-  }
-  export interface RequestTrailersMessage {
-    request: Request;
-    trailers: Array<Buffer>;
-  }
-  export interface RequestErrorMessage {
-    request: Request;
-    error: Error;
-  }
-  export interface ClientSendHeadersMessage {
-    request: Request;
-    headers: string;
-    socket: Socket;
-  }
-  export interface ClientBeforeConnectMessage {
-    connectParams: ConnectParams;
-    connector: Connector;
-  }
-  export interface ClientConnectedMessage {
-    socket: Socket;
-    connectParams: ConnectParams;
-    connector: Connector;
-  }
-  export interface ClientConnectErrorMessage {
-    error: Error;
-    socket: Socket;
-    connectParams: ConnectParams;
-    connector: Connector;
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/dispatcher.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/dispatcher.d.ts
deleted file mode 100644
index efc53ee..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/dispatcher.d.ts
+++ /dev/null
@@ -1,241 +0,0 @@
-import { URL } from 'url'
-import { Duplex, Readable, Writable } from 'stream'
-import { EventEmitter } from 'events'
-import { Blob } from 'buffer'
-import { IncomingHttpHeaders } from './header'
-import BodyReadable from './readable'
-import { FormData } from './formdata'
-import Errors from './errors'
-
-type AbortSignal = unknown;
-
-export default Dispatcher
-
-/** Dispatcher is the core API used to dispatch requests. */
-declare class Dispatcher extends EventEmitter {
-  /** Dispatches a request. This API is expected to evolve through semver-major versions and is less stable than the preceding higher level APIs. It is primarily intended for library developers who implement higher level APIs on top of this. */
-  dispatch(options: Dispatcher.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean;
-  /** Starts two-way communications with the requested resource. */
-  connect(options: Dispatcher.ConnectOptions): Promise<Dispatcher.ConnectData>;
-  connect(options: Dispatcher.ConnectOptions, callback: (err: Error | null, data: Dispatcher.ConnectData) => void): void;
-  /** Performs an HTTP request. */
-  request(options: Dispatcher.RequestOptions): Promise<Dispatcher.ResponseData>;
-  request(options: Dispatcher.RequestOptions, callback: (err: Error | null, data: Dispatcher.ResponseData) => void): void;
-  /** For easy use with `stream.pipeline`. */
-  pipeline(options: Dispatcher.PipelineOptions, handler: Dispatcher.PipelineHandler): Duplex;
-  /** A faster version of `Dispatcher.request`. */
-  stream(options: Dispatcher.RequestOptions, factory: Dispatcher.StreamFactory): Promise<Dispatcher.StreamData>;
-  stream(options: Dispatcher.RequestOptions, factory: Dispatcher.StreamFactory, callback: (err: Error | null, data: Dispatcher.StreamData) => void): void;
-  /** Upgrade to a different protocol. */
-  upgrade(options: Dispatcher.UpgradeOptions): Promise<Dispatcher.UpgradeData>;
-  upgrade(options: Dispatcher.UpgradeOptions, callback: (err: Error | null, data: Dispatcher.UpgradeData) => void): void;
-  /** Closes the client and gracefully waits for enqueued requests to complete before invoking the callback (or returning a promise if no callback is provided). */
-  close(): Promise<void>;
-  close(callback: () => void): void;
-  /** Destroy the client abruptly with the given err. All the pending and running requests will be asynchronously aborted and error. Waits until socket is closed before invoking the callback (or returning a promise if no callback is provided). Since this operation is asynchronously dispatched there might still be some progress on dispatched requests. */
-  destroy(): Promise<void>;
-  destroy(err: Error | null): Promise<void>;
-  destroy(callback: () => void): void;
-  destroy(err: Error | null, callback: () => void): void;
-
-  on(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
-  on(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  on(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  on(eventName: 'drain', callback: (origin: URL) => void): this;
-
-
-  once(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
-  once(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  once(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  once(eventName: 'drain', callback: (origin: URL) => void): this;
-
-
-  off(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
-  off(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  off(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  off(eventName: 'drain', callback: (origin: URL) => void): this;
-
-
-  addListener(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
-  addListener(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  addListener(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  addListener(eventName: 'drain', callback: (origin: URL) => void): this;
-
-  removeListener(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
-  removeListener(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  removeListener(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  removeListener(eventName: 'drain', callback: (origin: URL) => void): this;
-
-  prependListener(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
-  prependListener(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  prependListener(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  prependListener(eventName: 'drain', callback: (origin: URL) => void): this;
-
-  prependOnceListener(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
-  prependOnceListener(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  prependOnceListener(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
-  prependOnceListener(eventName: 'drain', callback: (origin: URL) => void): this;
-
-  listeners(eventName: 'connect'): ((origin: URL, targets: readonly Dispatcher[]) => void)[]
-  listeners(eventName: 'disconnect'): ((origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void)[];
-  listeners(eventName: 'connectionError'): ((origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void)[];
-  listeners(eventName: 'drain'): ((origin: URL) => void)[];
-
-  rawListeners(eventName: 'connect'): ((origin: URL, targets: readonly Dispatcher[]) => void)[]
-  rawListeners(eventName: 'disconnect'): ((origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void)[];
-  rawListeners(eventName: 'connectionError'): ((origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void)[];
-  rawListeners(eventName: 'drain'): ((origin: URL) => void)[];
-
-  emit(eventName: 'connect', origin: URL, targets: readonly Dispatcher[]): boolean;
-  emit(eventName: 'disconnect', origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError): boolean;
-  emit(eventName: 'connectionError', origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError): boolean;
-  emit(eventName: 'drain', origin: URL): boolean;
-}
-
-declare namespace Dispatcher {
-  export interface DispatchOptions {
-    origin?: string | URL;
-    path: string;
-    method: HttpMethod;
-    /** Default: `null` */
-    body?: string | Buffer | Uint8Array | Readable | null | FormData;
-    /** Default: `null` */
-    headers?: IncomingHttpHeaders | string[] | null;
-    /** Query string params to be embedded in the request URL. Default: `null` */
-    query?: Record<string, any>;
-    /** Whether the requests can be safely retried or not. If `false` the request won't be sent until all preceding requests in the pipeline have completed. Default: `true` if `method` is `HEAD` or `GET`. */
-    idempotent?: boolean;
-    /** Whether the response is expected to take a long time and would end up blocking the pipeline. When this is set to `true` further pipelining will be avoided on the same connection until headers have been received. */
-    blocking?: boolean;
-    /** Upgrade the request. Should be used to specify the kind of upgrade i.e. `'Websocket'`. Default: `method === 'CONNECT' || null`. */
-    upgrade?: boolean | string | null;
-    /** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers. Defaults to 300 seconds. */
-    headersTimeout?: number | null;
-    /** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use 0 to disable it entirely. Defaults to 300 seconds. */
-    bodyTimeout?: number | null;
-    /** Whether the request should stablish a keep-alive or not. Default `false` */
-    reset?: boolean;
-    /** Whether Undici should throw an error upon receiving a 4xx or 5xx response from the server. Defaults to false */
-    throwOnError?: boolean;
-    /** For H2, it appends the expect: 100-continue header, and halts the request body until a 100-continue is received from the remote server*/
-    expectContinue?: boolean;
-  }
-  export interface ConnectOptions {
-    path: string;
-    /** Default: `null` */
-    headers?: IncomingHttpHeaders | string[] | null;
-    /** Default: `null` */
-    signal?: AbortSignal | EventEmitter | null;
-    /** This argument parameter is passed through to `ConnectData` */
-    opaque?: unknown;
-    /** Default: 0 */
-    maxRedirections?: number;
-    /** Default: `null` */
-    responseHeader?: 'raw' | null;
-  }
-  export interface RequestOptions extends DispatchOptions {
-    /** Default: `null` */
-    opaque?: unknown;
-    /** Default: `null` */
-    signal?: AbortSignal | EventEmitter | null;
-    /** Default: 0 */
-    maxRedirections?: number;
-    /** Default: `null` */
-    onInfo?: (info: { statusCode: number, headers: Record<string, string | string[]> }) => void;
-    /** Default: `null` */
-    responseHeader?: 'raw' | null;
-    /** Default: `64 KiB` */
-    highWaterMark?: number;
-  }
-  export interface PipelineOptions extends RequestOptions {
-    /** `true` if the `handler` will return an object stream. Default: `false` */
-    objectMode?: boolean;
-  }
-  export interface UpgradeOptions {
-    path: string;
-    /** Default: `'GET'` */
-    method?: string;
-    /** Default: `null` */
-    headers?: IncomingHttpHeaders | string[] | null;
-    /** A string of comma separated protocols, in descending preference order. Default: `'Websocket'` */
-    protocol?: string;
-    /** Default: `null` */
-    signal?: AbortSignal | EventEmitter | null;
-    /** Default: 0 */
-    maxRedirections?: number;
-    /** Default: `null` */
-    responseHeader?: 'raw' | null;
-  }
-  export interface ConnectData {
-    statusCode: number;
-    headers: IncomingHttpHeaders;
-    socket: Duplex;
-    opaque: unknown;
-  }
-  export interface ResponseData {
-    statusCode: number;
-    headers: IncomingHttpHeaders;
-    body: BodyReadable & BodyMixin;
-    trailers: Record<string, string>;
-    opaque: unknown;
-    context: object;
-  }
-  export interface PipelineHandlerData {
-    statusCode: number;
-    headers: IncomingHttpHeaders;
-    opaque: unknown;
-    body: BodyReadable;
-    context: object;
-  }
-  export interface StreamData {
-    opaque: unknown;
-    trailers: Record<string, string>;
-  }
-  export interface UpgradeData {
-    headers: IncomingHttpHeaders;
-    socket: Duplex;
-    opaque: unknown;
-  }
-  export interface StreamFactoryData {
-    statusCode: number;
-    headers: IncomingHttpHeaders;
-    opaque: unknown;
-    context: object;
-  }
-  export type StreamFactory = (data: StreamFactoryData) => Writable;
-  export interface DispatchHandlers {
-    /** Invoked before request is dispatched on socket. May be invoked multiple times when a request is retried when the request at the head of the pipeline fails. */
-    onConnect?(abort: () => void): void;
-    /** Invoked when an error has occurred. */
-    onError?(err: Error): void;
-    /** Invoked when request is upgraded either due to a `Upgrade` header or `CONNECT` method. */
-    onUpgrade?(statusCode: number, headers: Buffer[] | string[] | null, socket: Duplex): void;
-    /** Invoked when statusCode and headers have been received. May be invoked multiple times due to 1xx informational headers. */
-    onHeaders?(statusCode: number, headers: Buffer[] | string[] | null, resume: () => void, statusText: string): boolean;
-    /** Invoked when response payload data is received. */
-    onData?(chunk: Buffer): boolean;
-    /** Invoked when response payload and trailers have been received and the request has completed. */
-    onComplete?(trailers: string[] | null): void;
-    /** Invoked when a body chunk is sent to the server. May be invoked multiple times for chunked requests */
-    onBodySent?(chunkSize: number, totalBytesSent: number): void;
-  }
-  export type PipelineHandler = (data: PipelineHandlerData) => Readable;
-  export type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH';
-
-  /**
-   * @link https://fetch.spec.whatwg.org/#body-mixin
-   */
-  interface BodyMixin {
-    readonly body?: never; // throws on node v16.6.0
-    readonly bodyUsed: boolean;
-    arrayBuffer(): Promise<ArrayBuffer>;
-    blob(): Promise<Blob>;
-    formData(): Promise<never>;
-    json(): Promise<unknown>;
-    text(): Promise<string>;
-  }
-
-  export interface DispatchInterceptor {
-    (dispatch: Dispatcher['dispatch']): Dispatcher['dispatch']
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/errors.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/errors.d.ts
deleted file mode 100644
index 7923ddd..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/errors.d.ts
+++ /dev/null
@@ -1,128 +0,0 @@
-import { IncomingHttpHeaders } from "./header";
-import Client from './client'
-
-export default Errors
-
-declare namespace Errors {
-  export class UndiciError extends Error {
-    name: string;
-    code: string;
-  }
-
-  /** Connect timeout error. */
-  export class ConnectTimeoutError extends UndiciError {
-    name: 'ConnectTimeoutError';
-    code: 'UND_ERR_CONNECT_TIMEOUT';
-  }
-
-  /** A header exceeds the `headersTimeout` option. */
-  export class HeadersTimeoutError extends UndiciError {
-    name: 'HeadersTimeoutError';
-    code: 'UND_ERR_HEADERS_TIMEOUT';
-  }
-
-  /** Headers overflow error. */
-  export class HeadersOverflowError extends UndiciError {
-    name: 'HeadersOverflowError'
-    code: 'UND_ERR_HEADERS_OVERFLOW'
-  }
-
-  /** A body exceeds the `bodyTimeout` option. */
-  export class BodyTimeoutError extends UndiciError {
-    name: 'BodyTimeoutError';
-    code: 'UND_ERR_BODY_TIMEOUT';
-  }
-
-  export class ResponseStatusCodeError extends UndiciError {
-    constructor (
-      message?: string,
-      statusCode?: number,
-      headers?: IncomingHttpHeaders | string[] | null,
-      body?: null | Record<string, any> | string
-    );
-    name: 'ResponseStatusCodeError';
-    code: 'UND_ERR_RESPONSE_STATUS_CODE';
-    body: null | Record<string, any> | string
-    status: number
-    statusCode: number
-    headers: IncomingHttpHeaders | string[] | null;
-  }
-
-  /** Passed an invalid argument. */
-  export class InvalidArgumentError extends UndiciError {
-    name: 'InvalidArgumentError';
-    code: 'UND_ERR_INVALID_ARG';
-  }
-
-  /** Returned an invalid value. */
-  export class InvalidReturnValueError extends UndiciError {
-    name: 'InvalidReturnValueError';
-    code: 'UND_ERR_INVALID_RETURN_VALUE';
-  }
-
-  /** The request has been aborted by the user. */
-  export class RequestAbortedError extends UndiciError {
-    name: 'AbortError';
-    code: 'UND_ERR_ABORTED';
-  }
-
-  /** Expected error with reason. */
-  export class InformationalError extends UndiciError {
-    name: 'InformationalError';
-    code: 'UND_ERR_INFO';
-  }
-
-  /** Request body length does not match content-length header. */
-  export class RequestContentLengthMismatchError extends UndiciError {
-    name: 'RequestContentLengthMismatchError';
-    code: 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH';
-  }
-
-  /** Response body length does not match content-length header. */
-  export class ResponseContentLengthMismatchError extends UndiciError {
-    name: 'ResponseContentLengthMismatchError';
-    code: 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH';
-  }
-
-  /** Trying to use a destroyed client. */
-  export class ClientDestroyedError extends UndiciError {
-    name: 'ClientDestroyedError';
-    code: 'UND_ERR_DESTROYED';
-  }
-
-  /** Trying to use a closed client. */
-  export class ClientClosedError extends UndiciError {
-    name: 'ClientClosedError';
-    code: 'UND_ERR_CLOSED';
-  }
-
-  /** There is an error with the socket. */
-  export class SocketError extends UndiciError {
-    name: 'SocketError';
-    code: 'UND_ERR_SOCKET';
-    socket: Client.SocketInfo | null
-  }
-
-  /** Encountered unsupported functionality. */
-  export class NotSupportedError extends UndiciError {
-    name: 'NotSupportedError';
-    code: 'UND_ERR_NOT_SUPPORTED';
-  }
-
-  /** No upstream has been added to the BalancedPool. */
-  export class BalancedPoolMissingUpstreamError extends UndiciError {
-    name: 'MissingUpstreamError';
-    code: 'UND_ERR_BPL_MISSING_UPSTREAM';
-  }
-
-  export class HTTPParserError extends UndiciError {
-    name: 'HTTPParserError';
-    code: string;
-  }
-
-  /** The response exceed the length allowed. */
-  export class ResponseExceededMaxSizeError extends UndiciError {
-    name: 'ResponseExceededMaxSizeError';
-    code: 'UND_ERR_RES_EXCEEDED_MAX_SIZE';
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/fetch.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/fetch.d.ts
deleted file mode 100644
index 440f2b0..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/fetch.d.ts
+++ /dev/null
@@ -1,209 +0,0 @@
-// based on https://github.com/Ethan-Arrowood/undici-fetch/blob/249269714db874351589d2d364a0645d5160ae71/index.d.ts (MIT license)
-// and https://github.com/node-fetch/node-fetch/blob/914ce6be5ec67a8bab63d68510aabf07cb818b6d/index.d.ts (MIT license)
-/// <reference types="node" />
-
-import { Blob } from 'buffer'
-import { URL, URLSearchParams } from 'url'
-import { ReadableStream } from 'stream/web'
-import { FormData } from './formdata'
-
-import Dispatcher from './dispatcher'
-
-export type RequestInfo = string | URL | Request
-
-export declare function fetch (
-  input: RequestInfo,
-  init?: RequestInit
-): Promise<Response>
-
-export type BodyInit =
-  | ArrayBuffer
-  | AsyncIterable<Uint8Array>
-  | Blob
-  | FormData
-  | Iterable<Uint8Array>
-  | NodeJS.ArrayBufferView
-  | URLSearchParams
-  | null
-  | string
-
-export interface BodyMixin {
-  readonly body: ReadableStream | null
-  readonly bodyUsed: boolean
-
-  readonly arrayBuffer: () => Promise<ArrayBuffer>
-  readonly blob: () => Promise<Blob>
-  readonly formData: () => Promise<FormData>
-  readonly json: () => Promise<unknown>
-  readonly text: () => Promise<string>
-}
-
-export interface SpecIterator<T, TReturn = any, TNext = undefined> {
-  next(...args: [] | [TNext]): IteratorResult<T, TReturn>;
-}
-
-export interface SpecIterableIterator<T> extends SpecIterator<T> {
-  [Symbol.iterator](): SpecIterableIterator<T>;
-}
-
-export interface SpecIterable<T> {
-  [Symbol.iterator](): SpecIterator<T>;
-}
-
-export type HeadersInit = string[][] | Record<string, string | ReadonlyArray<string>> | Headers
-
-export declare class Headers implements SpecIterable<[string, string]> {
-  constructor (init?: HeadersInit)
-  readonly append: (name: string, value: string) => void
-  readonly delete: (name: string) => void
-  readonly get: (name: string) => string | null
-  readonly has: (name: string) => boolean
-  readonly set: (name: string, value: string) => void
-  readonly getSetCookie: () => string[]
-  readonly forEach: (
-    callbackfn: (value: string, key: string, iterable: Headers) => void,
-    thisArg?: unknown
-  ) => void
-
-  readonly keys: () => SpecIterableIterator<string>
-  readonly values: () => SpecIterableIterator<string>
-  readonly entries: () => SpecIterableIterator<[string, string]>
-  readonly [Symbol.iterator]: () => SpecIterator<[string, string]>
-}
-
-export type RequestCache =
-  | 'default'
-  | 'force-cache'
-  | 'no-cache'
-  | 'no-store'
-  | 'only-if-cached'
-  | 'reload'
-
-export type RequestCredentials = 'omit' | 'include' | 'same-origin'
-
-type RequestDestination =
-  | ''
-  | 'audio'
-  | 'audioworklet'
-  | 'document'
-  | 'embed'
-  | 'font'
-  | 'image'
-  | 'manifest'
-  | 'object'
-  | 'paintworklet'
-  | 'report'
-  | 'script'
-  | 'sharedworker'
-  | 'style'
-  | 'track'
-  | 'video'
-  | 'worker'
-  | 'xslt'
-
-export interface RequestInit {
-  method?: string
-  keepalive?: boolean
-  headers?: HeadersInit
-  body?: BodyInit
-  redirect?: RequestRedirect
-  integrity?: string
-  signal?: AbortSignal | null
-  credentials?: RequestCredentials
-  mode?: RequestMode
-  referrer?: string
-  referrerPolicy?: ReferrerPolicy
-  window?: null
-  dispatcher?: Dispatcher
-  duplex?: RequestDuplex
-}
-
-export type ReferrerPolicy =
-  | ''
-  | 'no-referrer'
-  | 'no-referrer-when-downgrade'
-  | 'origin'
-  | 'origin-when-cross-origin'
-  | 'same-origin'
-  | 'strict-origin'
-  | 'strict-origin-when-cross-origin'
-  | 'unsafe-url';
-
-export type RequestMode = 'cors' | 'navigate' | 'no-cors' | 'same-origin'
-
-export type RequestRedirect = 'error' | 'follow' | 'manual'
-
-export type RequestDuplex = 'half'
-
-export declare class Request implements BodyMixin {
-  constructor (input: RequestInfo, init?: RequestInit)
-
-  readonly cache: RequestCache
-  readonly credentials: RequestCredentials
-  readonly destination: RequestDestination
-  readonly headers: Headers
-  readonly integrity: string
-  readonly method: string
-  readonly mode: RequestMode
-  readonly redirect: RequestRedirect
-  readonly referrerPolicy: string
-  readonly url: string
-
-  readonly keepalive: boolean
-  readonly signal: AbortSignal
-  readonly duplex: RequestDuplex
-
-  readonly body: ReadableStream | null
-  readonly bodyUsed: boolean
-
-  readonly arrayBuffer: () => Promise<ArrayBuffer>
-  readonly blob: () => Promise<Blob>
-  readonly formData: () => Promise<FormData>
-  readonly json: () => Promise<unknown>
-  readonly text: () => Promise<string>
-
-  readonly clone: () => Request
-}
-
-export interface ResponseInit {
-  readonly status?: number
-  readonly statusText?: string
-  readonly headers?: HeadersInit
-}
-
-export type ResponseType =
-  | 'basic'
-  | 'cors'
-  | 'default'
-  | 'error'
-  | 'opaque'
-  | 'opaqueredirect'
-
-export type ResponseRedirectStatus = 301 | 302 | 303 | 307 | 308
-
-export declare class Response implements BodyMixin {
-  constructor (body?: BodyInit, init?: ResponseInit)
-
-  readonly headers: Headers
-  readonly ok: boolean
-  readonly status: number
-  readonly statusText: string
-  readonly type: ResponseType
-  readonly url: string
-  readonly redirected: boolean
-
-  readonly body: ReadableStream | null
-  readonly bodyUsed: boolean
-
-  readonly arrayBuffer: () => Promise<ArrayBuffer>
-  readonly blob: () => Promise<Blob>
-  readonly formData: () => Promise<FormData>
-  readonly json: () => Promise<unknown>
-  readonly text: () => Promise<string>
-
-  readonly clone: () => Response
-
-  static error (): Response
-  static json(data: any, init?: ResponseInit): Response
-  static redirect (url: string | URL, status: ResponseRedirectStatus): Response
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/file.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/file.d.ts
deleted file mode 100644
index c695b7a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/file.d.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-// Based on https://github.com/octet-stream/form-data/blob/2d0f0dc371517444ce1f22cdde13f51995d0953a/lib/File.ts (MIT)
-/// <reference types="node" />
-
-import { Blob } from 'buffer'
-
-export interface BlobPropertyBag {
-  type?: string
-  endings?: 'native' | 'transparent'
-}
-
-export interface FilePropertyBag extends BlobPropertyBag {
-  /**
-   * The last modified date of the file as the number of milliseconds since the Unix epoch (January 1, 1970 at midnight). Files without a known last modified date return the current date.
-   */
-  lastModified?: number
-}
-
-export declare class File extends Blob {
-  /**
-   * Creates a new File instance.
-   *
-   * @param fileBits An `Array` strings, or [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer), [`ArrayBufferView`](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView), [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) objects, or a mix of any of such objects, that will be put inside the [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File).
-   * @param fileName The name of the file.
-   * @param options An options object containing optional attributes for the file.
-   */
-  constructor(fileBits: ReadonlyArray<string | NodeJS.ArrayBufferView | Blob>, fileName: string, options?: FilePropertyBag)
-
-  /**
-   * Name of the file referenced by the File object.
-   */
-  readonly name: string
-
-  /**
-   * The last modified date of the file as the number of milliseconds since the Unix epoch (January 1, 1970 at midnight). Files without a known last modified date return the current date.
-   */
-  readonly lastModified: number
-
-  readonly [Symbol.toStringTag]: string
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/filereader.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/filereader.d.ts
deleted file mode 100644
index f05d231..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/filereader.d.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-/// <reference types="node" />
-
-import { Blob } from 'buffer'
-import { DOMException, Event, EventInit, EventTarget } from './patch'
-
-export declare class FileReader {
-  __proto__: EventTarget & FileReader
-
-  constructor ()
-
-  readAsArrayBuffer (blob: Blob): void
-  readAsBinaryString (blob: Blob): void
-  readAsText (blob: Blob, encoding?: string): void
-  readAsDataURL (blob: Blob): void
-
-  abort (): void
-
-  static readonly EMPTY = 0
-  static readonly LOADING = 1
-  static readonly DONE = 2
-
-  readonly EMPTY = 0
-  readonly LOADING = 1
-  readonly DONE = 2
-
-  readonly readyState: number
-
-  readonly result: string | ArrayBuffer | null
-
-  readonly error: DOMException | null
-
-  onloadstart: null | ((this: FileReader, event: ProgressEvent) => void)
-  onprogress: null | ((this: FileReader, event: ProgressEvent) => void)
-  onload: null | ((this: FileReader, event: ProgressEvent) => void)
-  onabort: null |  ((this: FileReader, event: ProgressEvent) => void)
-  onerror: null | ((this: FileReader, event: ProgressEvent) => void)
-  onloadend: null | ((this: FileReader, event: ProgressEvent) => void)
-}
-
-export interface ProgressEventInit extends EventInit {
-  lengthComputable?: boolean
-  loaded?: number
-  total?: number
-}
-
-export declare class ProgressEvent {
-  __proto__: Event & ProgressEvent
-
-  constructor (type: string, eventInitDict?: ProgressEventInit)
-
-  readonly lengthComputable: boolean
-  readonly loaded: number
-  readonly total: number
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/formdata.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/formdata.d.ts
deleted file mode 100644
index df29a57..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/formdata.d.ts
+++ /dev/null
@@ -1,108 +0,0 @@
-// Based on https://github.com/octet-stream/form-data/blob/2d0f0dc371517444ce1f22cdde13f51995d0953a/lib/FormData.ts (MIT)
-/// <reference types="node" />
-
-import { File } from './file'
-import { SpecIterator, SpecIterableIterator } from './fetch'
-
-/**
- * A `string` or `File` that represents a single value from a set of `FormData` key-value pairs.
- */
-declare type FormDataEntryValue = string | File
-
-/**
- * Provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using fetch().
- */
-export declare class FormData {
-  /**
-   * Appends a new value onto an existing key inside a FormData object,
-   * or adds the key if it does not already exist.
-   *
-   * The difference between `set()` and `append()` is that if the specified key already exists, `set()` will overwrite all existing values with the new one, whereas `append()` will append the new value onto the end of the existing set of values.
-   *
-   * @param name The name of the field whose data is contained in `value`.
-   * @param value The field's value. This can be [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-    or [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File). If none of these are specified the value is converted to a string.
-   * @param fileName The filename reported to the server, when a Blob or File is passed as the second parameter. The default filename for Blob objects is "blob". The default filename for File objects is the file's filename.
-   */
-  append(name: string, value: unknown, fileName?: string): void
-
-  /**
-   * Set a new value for an existing key inside FormData,
-   * or add the new field if it does not already exist.
-   *
-   * @param name The name of the field whose data is contained in `value`.
-   * @param value The field's value. This can be [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-    or [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File). If none of these are specified the value is converted to a string.
-   * @param fileName The filename reported to the server, when a Blob or File is passed as the second parameter. The default filename for Blob objects is "blob". The default filename for File objects is the file's filename.
-   *
-   */
-  set(name: string, value: unknown, fileName?: string): void
-
-  /**
-   * Returns the first value associated with a given key from within a `FormData` object.
-   * If you expect multiple values and want all of them, use the `getAll()` method instead.
-   *
-   * @param {string} name A name of the value you want to retrieve.
-   *
-   * @returns A `FormDataEntryValue` containing the value. If the key doesn't exist, the method returns null.
-   */
-  get(name: string): FormDataEntryValue | null
-
-  /**
-   * Returns all the values associated with a given key from within a `FormData` object.
-   *
-   * @param {string} name A name of the value you want to retrieve.
-   *
-   * @returns An array of `FormDataEntryValue` whose key matches the value passed in the `name` parameter. If the key doesn't exist, the method returns an empty list.
-   */
-  getAll(name: string): FormDataEntryValue[]
-
-  /**
-   * Returns a boolean stating whether a `FormData` object contains a certain key.
-   *
-   * @param name A string representing the name of the key you want to test for.
-   *
-   * @return A boolean value.
-   */
-  has(name: string): boolean
-
-  /**
-   * Deletes a key and its value(s) from a `FormData` object.
-   *
-   * @param name The name of the key you want to delete.
-   */
-  delete(name: string): void
-
-  /**
-   * Executes given callback function for each field of the FormData instance
-   */
-  forEach: (
-    callbackfn: (value: FormDataEntryValue, key: string, iterable: FormData) => void,
-    thisArg?: unknown
-  ) => void
-
-  /**
-   * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through all keys contained in this `FormData` object.
-   * Each key is a `string`.
-   */
-  keys: () => SpecIterableIterator<string>
-
-  /**
-   * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through all values contained in this object `FormData` object.
-   * Each value is a [`FormDataValue`](https://developer.mozilla.org/en-US/docs/Web/API/FormDataEntryValue).
-   */
-  values: () => SpecIterableIterator<FormDataEntryValue>
-
-  /**
-   * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through the `FormData` key/value pairs.
-   * The key of each pair is a string; the value is a [`FormDataValue`](https://developer.mozilla.org/en-US/docs/Web/API/FormDataEntryValue).
-   */
-  entries: () => SpecIterableIterator<[string, FormDataEntryValue]>
-
-  /**
-   * An alias for FormData#entries()
-   */
-  [Symbol.iterator]: () => SpecIterableIterator<[string, FormDataEntryValue]>
-
-  readonly [Symbol.toStringTag]: string
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/global-dispatcher.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/global-dispatcher.d.ts
deleted file mode 100644
index 728f95c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/global-dispatcher.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Dispatcher from "./dispatcher";
-
-export {
-  getGlobalDispatcher,
-  setGlobalDispatcher
-}
-
-declare function setGlobalDispatcher<DispatcherImplementation extends Dispatcher>(dispatcher: DispatcherImplementation): void;
-declare function getGlobalDispatcher(): Dispatcher;
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/global-origin.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/global-origin.d.ts
deleted file mode 100644
index 322542d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/global-origin.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export {
-	setGlobalOrigin,
-	getGlobalOrigin
-}
-  
-declare function setGlobalOrigin(origin: string | URL | undefined): void;
-declare function getGlobalOrigin(): URL | undefined;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/handlers.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/handlers.d.ts
deleted file mode 100644
index eb4f5a9..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/handlers.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Dispatcher from "./dispatcher";
-
-export declare class RedirectHandler implements Dispatcher.DispatchHandlers{
-  constructor (dispatch: Dispatcher, maxRedirections: number, opts: Dispatcher.DispatchOptions, handler: Dispatcher.DispatchHandlers)
-}
-
-export declare class DecoratorHandler implements Dispatcher.DispatchHandlers{
-  constructor (handler: Dispatcher.DispatchHandlers)
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/header.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/header.d.ts
deleted file mode 100644
index bfdb329..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/header.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * The header type declaration of `undici`.
- */
-export type IncomingHttpHeaders = Record<string, string | string[] | undefined>;
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/index.d.ts
deleted file mode 100644
index 0ea8bdc..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/index.d.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import Dispatcher from'./dispatcher'
-import { setGlobalDispatcher, getGlobalDispatcher } from './global-dispatcher'
-import { setGlobalOrigin, getGlobalOrigin } from './global-origin'
-import Pool from'./pool'
-import { RedirectHandler, DecoratorHandler } from './handlers'
-
-import BalancedPool from './balanced-pool'
-import Client from'./client'
-import buildConnector from'./connector'
-import errors from'./errors'
-import Agent from'./agent'
-import MockClient from'./mock-client'
-import MockPool from'./mock-pool'
-import MockAgent from'./mock-agent'
-import mockErrors from'./mock-errors'
-import ProxyAgent from'./proxy-agent'
-import RetryHandler from'./retry-handler'
-import { request, pipeline, stream, connect, upgrade } from './api'
-
-export * from './cookies'
-export * from './fetch'
-export * from './file'
-export * from './filereader'
-export * from './formdata'
-export * from './diagnostics-channel'
-export * from './websocket'
-export * from './content-type'
-export * from './cache'
-export { Interceptable } from './mock-interceptor'
-
-export { Dispatcher, BalancedPool, Pool, Client, buildConnector, errors, Agent, request, stream, pipeline, connect, upgrade, setGlobalDispatcher, getGlobalDispatcher, setGlobalOrigin, getGlobalOrigin, MockClient, MockPool, MockAgent, mockErrors, ProxyAgent, RedirectHandler, DecoratorHandler, RetryHandler }
-export default Undici
-
-declare namespace Undici {
-  var Dispatcher: typeof import('./dispatcher').default
-  var Pool: typeof import('./pool').default;
-  var RedirectHandler: typeof import ('./handlers').RedirectHandler
-  var DecoratorHandler: typeof import ('./handlers').DecoratorHandler
-  var RetryHandler: typeof import ('./retry-handler').default
-  var createRedirectInterceptor: typeof import ('./interceptors').createRedirectInterceptor
-  var BalancedPool: typeof import('./balanced-pool').default;
-  var Client: typeof import('./client').default;
-  var buildConnector: typeof import('./connector').default;
-  var errors: typeof import('./errors').default;
-  var Agent: typeof import('./agent').default;
-  var setGlobalDispatcher: typeof import('./global-dispatcher').setGlobalDispatcher;
-  var getGlobalDispatcher: typeof import('./global-dispatcher').getGlobalDispatcher;
-  var request: typeof import('./api').request;
-  var stream: typeof import('./api').stream;
-  var pipeline: typeof import('./api').pipeline;
-  var connect: typeof import('./api').connect;
-  var upgrade: typeof import('./api').upgrade;
-  var MockClient: typeof import('./mock-client').default;
-  var MockPool: typeof import('./mock-pool').default;
-  var MockAgent: typeof import('./mock-agent').default;
-  var mockErrors: typeof import('./mock-errors').default;
-  var fetch: typeof import('./fetch').fetch;
-  var Headers: typeof import('./fetch').Headers;
-  var Response: typeof import('./fetch').Response;
-  var Request: typeof import('./fetch').Request;
-  var FormData: typeof import('./formdata').FormData;
-  var File: typeof import('./file').File;
-  var FileReader: typeof import('./filereader').FileReader;
-  var caches: typeof import('./cache').caches;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/interceptors.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/interceptors.d.ts
deleted file mode 100644
index 047ac17..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/interceptors.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import Dispatcher from "./dispatcher";
-
-type RedirectInterceptorOpts = { maxRedirections?: number }
-
-export declare function createRedirectInterceptor (opts: RedirectInterceptorOpts): Dispatcher.DispatchInterceptor
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-agent.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-agent.d.ts
deleted file mode 100644
index 98cd645..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-agent.d.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import Agent from './agent'
-import Dispatcher from './dispatcher'
-import { Interceptable, MockInterceptor } from './mock-interceptor'
-import MockDispatch = MockInterceptor.MockDispatch;
-
-export default MockAgent
-
-interface PendingInterceptor extends MockDispatch {
-  origin: string;
-}
-
-/** A mocked Agent class that implements the Agent API. It allows one to intercept HTTP requests made through undici and return mocked responses instead. */
-declare class MockAgent<TMockAgentOptions extends MockAgent.Options = MockAgent.Options> extends Dispatcher {
-  constructor(options?: MockAgent.Options)
-  /** Creates and retrieves mock Dispatcher instances which can then be used to intercept HTTP requests. If the number of connections on the mock agent is set to 1, a MockClient instance is returned. Otherwise a MockPool instance is returned. */
-  get<TInterceptable extends Interceptable>(origin: string): TInterceptable;
-  get<TInterceptable extends Interceptable>(origin: RegExp): TInterceptable;
-  get<TInterceptable extends Interceptable>(origin: ((origin: string) => boolean)): TInterceptable;
-  /** Dispatches a mocked request. */
-  dispatch(options: Agent.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean;
-  /** Closes the mock agent and waits for registered mock pools and clients to also close before resolving. */
-  close(): Promise<void>;
-  /** Disables mocking in MockAgent. */
-  deactivate(): void;
-  /** Enables mocking in a MockAgent instance. When instantiated, a MockAgent is automatically activated. Therefore, this method is only effective after `MockAgent.deactivate` has been called. */
-  activate(): void;
-  /** Define host matchers so only matching requests that aren't intercepted by the mock dispatchers will be attempted. */
-  enableNetConnect(): void;
-  enableNetConnect(host: string): void;
-  enableNetConnect(host: RegExp): void;
-  enableNetConnect(host: ((host: string) => boolean)): void;
-  /** Causes all requests to throw when requests are not matched in a MockAgent intercept. */
-  disableNetConnect(): void;
-  pendingInterceptors(): PendingInterceptor[];
-  assertNoPendingInterceptors(options?: {
-    pendingInterceptorsFormatter?: PendingInterceptorsFormatter;
-  }): void;
-}
-
-interface PendingInterceptorsFormatter {
-  format(pendingInterceptors: readonly PendingInterceptor[]): string;
-}
-
-declare namespace MockAgent {
-  /** MockAgent options. */
-  export interface Options extends Agent.Options {
-    /** A custom agent to be encapsulated by the MockAgent. */
-    agent?: Agent;
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-client.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-client.d.ts
deleted file mode 100644
index 51d008c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-client.d.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import Client from './client'
-import Dispatcher from './dispatcher'
-import MockAgent from './mock-agent'
-import { MockInterceptor, Interceptable } from './mock-interceptor'
-
-export default MockClient
-
-/** MockClient extends the Client API and allows one to mock requests. */
-declare class MockClient extends Client implements Interceptable {
-  constructor(origin: string, options: MockClient.Options);
-  /** Intercepts any matching requests that use the same origin as this mock client. */
-  intercept(options: MockInterceptor.Options): MockInterceptor;
-  /** Dispatches a mocked request. */
-  dispatch(options: Dispatcher.DispatchOptions, handlers: Dispatcher.DispatchHandlers): boolean;
-  /** Closes the mock client and gracefully waits for enqueued requests to complete. */
-  close(): Promise<void>;
-}
-
-declare namespace MockClient {
-  /** MockClient options. */
-  export interface Options extends Client.Options {
-    /** The agent to associate this MockClient with. */
-    agent: MockAgent;
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-errors.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-errors.d.ts
deleted file mode 100644
index 3d9e727..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-errors.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import Errors from './errors'
-
-export default MockErrors
-
-declare namespace MockErrors {
-  /** The request does not match any registered mock dispatches. */
-  export class MockNotMatchedError extends Errors.UndiciError {
-    constructor(message?: string);
-    name: 'MockNotMatchedError';
-    code: 'UND_MOCK_ERR_MOCK_NOT_MATCHED';
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-interceptor.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-interceptor.d.ts
deleted file mode 100644
index 6b3961c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-interceptor.d.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-import { IncomingHttpHeaders } from './header'
-import Dispatcher from './dispatcher';
-import { BodyInit, Headers } from './fetch'
-
-export {
-  Interceptable,
-  MockInterceptor,
-  MockScope
-}
-
-/** The scope associated with a mock dispatch. */
-declare class MockScope<TData extends object = object> {
-  constructor(mockDispatch: MockInterceptor.MockDispatch<TData>);
-  /** Delay a reply by a set amount of time in ms. */
-  delay(waitInMs: number): MockScope<TData>;
-  /** Persist the defined mock data for the associated reply. It will return the defined mock data indefinitely. */
-  persist(): MockScope<TData>;
-  /** Define a reply for a set amount of matching requests. */
-  times(repeatTimes: number): MockScope<TData>;
-}
-
-/** The interceptor for a Mock. */
-declare class MockInterceptor {
-  constructor(options: MockInterceptor.Options, mockDispatches: MockInterceptor.MockDispatch[]);
-  /** Mock an undici request with the defined reply. */
-  reply<TData extends object = object>(replyOptionsCallback: MockInterceptor.MockReplyOptionsCallback<TData>): MockScope<TData>;
-  reply<TData extends object = object>(
-    statusCode: number,
-    data?: TData | Buffer | string | MockInterceptor.MockResponseDataHandler<TData>,
-    responseOptions?: MockInterceptor.MockResponseOptions
-  ): MockScope<TData>;
-  /** Mock an undici request by throwing the defined reply error. */
-  replyWithError<TError extends Error = Error>(error: TError): MockScope;
-  /** Set default reply headers on the interceptor for subsequent mocked replies. */
-  defaultReplyHeaders(headers: IncomingHttpHeaders): MockInterceptor;
-  /** Set default reply trailers on the interceptor for subsequent mocked replies. */
-  defaultReplyTrailers(trailers: Record<string, string>): MockInterceptor;
-  /** Set automatically calculated content-length header on subsequent mocked replies. */
-  replyContentLength(): MockInterceptor;
-}
-
-declare namespace MockInterceptor {
-  /** MockInterceptor options. */
-  export interface Options {
-    /** Path to intercept on. */
-    path: string | RegExp | ((path: string) => boolean);
-    /** Method to intercept on. Defaults to GET. */
-    method?: string | RegExp | ((method: string) => boolean);
-    /** Body to intercept on. */
-    body?: string | RegExp | ((body: string) => boolean);
-    /** Headers to intercept on. */
-    headers?: Record<string, string | RegExp | ((body: string) => boolean)> | ((headers: Record<string, string>) => boolean);
-    /** Query params to intercept on */
-    query?: Record<string, any>;
-  }
-  export interface MockDispatch<TData extends object = object, TError extends Error = Error> extends Options {
-    times: number | null;
-    persist: boolean;
-    consumed: boolean;
-    data: MockDispatchData<TData, TError>;
-  }
-  export interface MockDispatchData<TData extends object = object, TError extends Error = Error> extends MockResponseOptions {
-    error: TError | null;
-    statusCode?: number;
-    data?: TData | string;
-  }
-  export interface MockResponseOptions {
-    headers?: IncomingHttpHeaders;
-    trailers?: Record<string, string>;
-  }
-
-  export interface MockResponseCallbackOptions {
-    path: string;
-    origin: string;
-    method: string;
-    body?: BodyInit | Dispatcher.DispatchOptions['body'];
-    headers: Headers | Record<string, string>;
-    maxRedirections: number;
-  }
-
-  export type MockResponseDataHandler<TData extends object = object> = (
-    opts: MockResponseCallbackOptions
-  ) => TData | Buffer | string;
-
-  export type MockReplyOptionsCallback<TData extends object = object> = (
-    opts: MockResponseCallbackOptions
-  ) => { statusCode: number, data?: TData | Buffer | string, responseOptions?: MockResponseOptions }
-}
-
-interface Interceptable extends Dispatcher {
-  /** Intercepts any matching requests that use the same origin as this mock client. */
-  intercept(options: MockInterceptor.Options): MockInterceptor;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-pool.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-pool.d.ts
deleted file mode 100644
index 39e709a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/mock-pool.d.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import Pool from './pool'
-import MockAgent from './mock-agent'
-import { Interceptable, MockInterceptor } from './mock-interceptor'
-import Dispatcher from './dispatcher'
-
-export default MockPool
-
-/** MockPool extends the Pool API and allows one to mock requests. */
-declare class MockPool extends Pool implements Interceptable {
-  constructor(origin: string, options: MockPool.Options);
-  /** Intercepts any matching requests that use the same origin as this mock pool. */
-  intercept(options: MockInterceptor.Options): MockInterceptor;
-  /** Dispatches a mocked request. */
-  dispatch(options: Dispatcher.DispatchOptions, handlers: Dispatcher.DispatchHandlers): boolean;
-  /** Closes the mock pool and gracefully waits for enqueued requests to complete. */
-  close(): Promise<void>;
-}
-
-declare namespace MockPool {
-  /** MockPool options. */
-  export interface Options extends Pool.Options {
-    /** The agent to associate this MockPool with. */
-    agent: MockAgent;
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/patch.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/patch.d.ts
deleted file mode 100644
index 3871acf..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/patch.d.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-/// <reference types="node" />
-
-// See https://github.com/nodejs/undici/issues/1740
-
-export type DOMException = typeof globalThis extends { DOMException: infer T }
- ? T
- : any
-
-export type EventTarget = typeof globalThis extends { EventTarget: infer T }
-  ? T
-  : {
-    addEventListener(
-      type: string,
-      listener: any,
-      options?: any,
-    ): void
-    dispatchEvent(event: Event): boolean
-    removeEventListener(
-      type: string,
-      listener: any,
-      options?: any | boolean,
-    ): void
-  }
-
-export type Event = typeof globalThis extends { Event: infer T }
-  ? T
-  : {
-    readonly bubbles: boolean
-    cancelBubble: () => void
-    readonly cancelable: boolean
-    readonly composed: boolean
-    composedPath(): [EventTarget?]
-    readonly currentTarget: EventTarget | null
-    readonly defaultPrevented: boolean
-    readonly eventPhase: 0 | 2
-    readonly isTrusted: boolean
-    preventDefault(): void
-    returnValue: boolean
-    readonly srcElement: EventTarget | null
-    stopImmediatePropagation(): void
-    stopPropagation(): void
-    readonly target: EventTarget | null
-    readonly timeStamp: number
-    readonly type: string
-  }
-
-export interface EventInit {
-  bubbles?: boolean
-  cancelable?: boolean
-  composed?: boolean
-}
-
-export interface EventListenerOptions {
-  capture?: boolean
-}
-
-export interface AddEventListenerOptions extends EventListenerOptions {
-  once?: boolean
-  passive?: boolean
-  signal?: AbortSignal
-}
-
-export type EventListenerOrEventListenerObject = EventListener | EventListenerObject
-
-export interface EventListenerObject {
-  handleEvent (object: Event): void
-}
-
-export interface EventListener {
-  (evt: Event): void
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/pool-stats.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/pool-stats.d.ts
deleted file mode 100644
index 8b6d2bf..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/pool-stats.d.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import Pool from "./pool"
-
-export default PoolStats
-
-declare class PoolStats {
-  constructor(pool: Pool);
-  /** Number of open socket connections in this pool. */
-  connected: number;
-  /** Number of open socket connections in this pool that do not have an active request. */
-  free: number;
-  /** Number of pending requests across all clients in this pool. */
-  pending: number;
-  /** Number of queued requests across all clients in this pool. */
-  queued: number;
-  /** Number of currently active requests across all clients in this pool. */
-  running: number;
-  /** Number of active, pending, or queued requests across all clients in this pool. */
-  size: number;
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/pool.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/pool.d.ts
deleted file mode 100644
index 7747d48..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/pool.d.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import Client from './client'
-import TPoolStats from './pool-stats'
-import { URL } from 'url'
-import Dispatcher from "./dispatcher";
-
-export default Pool
-
-declare class Pool extends Dispatcher {
-  constructor(url: string | URL, options?: Pool.Options)
-  /** `true` after `pool.close()` has been called. */
-  closed: boolean;
-  /** `true` after `pool.destroyed()` has been called or `pool.close()` has been called and the pool shutdown has completed. */
-  destroyed: boolean;
-  /** Aggregate stats for a Pool. */
-  readonly stats: TPoolStats;
-}
-
-declare namespace Pool {
-  export type PoolStats = TPoolStats;
-  export interface Options extends Client.Options {
-    /** Default: `(origin, opts) => new Client(origin, opts)`. */
-    factory?(origin: URL, opts: object): Dispatcher;
-    /** The max number of clients to create. `null` if no limit. Default `null`. */
-    connections?: number | null;
-
-    interceptors?: { Pool?: readonly Dispatcher.DispatchInterceptor[] } & Client.Options["interceptors"]
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/proxy-agent.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/proxy-agent.d.ts
deleted file mode 100644
index 96b2638..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/proxy-agent.d.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import Agent from './agent'
-import buildConnector from './connector';
-import Client from './client'
-import Dispatcher from './dispatcher'
-import { IncomingHttpHeaders } from './header'
-import Pool from './pool'
-
-export default ProxyAgent
-
-declare class ProxyAgent extends Dispatcher {
-  constructor(options: ProxyAgent.Options | string)
-
-  dispatch(options: Agent.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean;
-  close(): Promise<void>;
-}
-
-declare namespace ProxyAgent {
-  export interface Options extends Agent.Options {
-    uri: string;
-    /**
-     * @deprecated use opts.token
-     */
-    auth?: string;
-    token?: string;
-    headers?: IncomingHttpHeaders;
-    requestTls?: buildConnector.BuildOptions;
-    proxyTls?: buildConnector.BuildOptions;
-    clientFactory?(origin: URL, opts: object): Dispatcher;
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/readable.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/readable.d.ts
deleted file mode 100644
index 4549a8c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/readable.d.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { Readable } from "stream";
-import { Blob } from 'buffer'
-
-export default BodyReadable
-
-declare class BodyReadable extends Readable {
-  constructor(
-    resume?: (this: Readable, size: number) => void | null,
-    abort?: () => void | null,
-    contentType?: string
-  )
-
-  /** Consumes and returns the body as a string
-   *  https://fetch.spec.whatwg.org/#dom-body-text
-   */
-  text(): Promise<string>
-
-  /** Consumes and returns the body as a JavaScript Object
-   *  https://fetch.spec.whatwg.org/#dom-body-json
-   */
-  json(): Promise<unknown>
-
-  /** Consumes and returns the body as a Blob
-   *  https://fetch.spec.whatwg.org/#dom-body-blob
-   */
-  blob(): Promise<Blob>
-
-  /** Consumes and returns the body as an ArrayBuffer
-   *  https://fetch.spec.whatwg.org/#dom-body-arraybuffer
-   */
-  arrayBuffer(): Promise<ArrayBuffer>
-
-  /** Not implemented
-   *
-   *  https://fetch.spec.whatwg.org/#dom-body-formdata
-   */
-  formData(): Promise<never>
-
-  /** Returns true if the body is not null and the body has been consumed
-   *
-   *  Otherwise, returns false
-   *
-   * https://fetch.spec.whatwg.org/#dom-body-bodyused
-   */
-  readonly bodyUsed: boolean
-
-  /** Throws on node 16.6.0
-   *
-   *  If body is null, it should return null as the body
-   *
-   *  If body is not null, should return the body as a ReadableStream
-   *
-   *  https://fetch.spec.whatwg.org/#dom-body-body
-   */
-  readonly body: never | undefined
-
-  /** Dumps the response body by reading `limit` number of bytes.
-   * @param opts.limit Number of bytes to read (optional) - Default: 262144
-   */
-  dump(opts?: { limit: number }): Promise<void>
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/retry-handler.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/retry-handler.d.ts
deleted file mode 100644
index 0528eb4..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/retry-handler.d.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-import Dispatcher from "./dispatcher";
-
-export default RetryHandler;
-
-declare class RetryHandler implements Dispatcher.DispatchHandlers {
-  constructor(
-    options: Dispatcher.DispatchOptions & {
-      retryOptions?: RetryHandler.RetryOptions;
-    },
-    retryHandlers: RetryHandler.RetryHandlers
-  );
-}
-
-declare namespace RetryHandler {
-  export type RetryState = { counter: number; currentTimeout: number };
-
-  export type RetryContext = {
-    state: RetryState;
-    opts: Dispatcher.DispatchOptions & {
-      retryOptions?: RetryHandler.RetryOptions;
-    };
-  }
-
-  export type OnRetryCallback = (result?: Error | null) => void;
-
-  export type RetryCallback = (
-    err: Error,
-    context: {
-      state: RetryState;
-      opts: Dispatcher.DispatchOptions & {
-        retryOptions?: RetryHandler.RetryOptions;
-      };
-    },
-    callback: OnRetryCallback
-  ) => number | null;
-
-  export interface RetryOptions {
-    /**
-     * Callback to be invoked on every retry iteration.
-     * It receives the error, current state of the retry object and the options object
-     * passed when instantiating the retry handler.
-     *
-     * @type {RetryCallback}
-     * @memberof RetryOptions
-     */
-    retry?: RetryCallback;
-    /**
-     * Maximum number of retries to allow.
-     *
-     * @type {number}
-     * @memberof RetryOptions
-     * @default 5
-     */
-    maxRetries?: number;
-    /**
-     * Max number of milliseconds allow between retries
-     *
-     * @type {number}
-     * @memberof RetryOptions
-     * @default 30000
-     */
-    maxTimeout?: number;
-    /**
-     * Initial number of milliseconds to wait before retrying for the first time.
-     *
-     * @type {number}
-     * @memberof RetryOptions
-     * @default 500
-     */
-    minTimeout?: number;
-    /**
-     * Factior to multiply the timeout factor between retries.
-     *
-     * @type {number}
-     * @memberof RetryOptions
-     * @default 2
-     */
-    timeoutFactor?: number;
-    /**
-     * It enables to automatically infer timeout between retries based on the `Retry-After` header.
-     *
-     * @type {boolean}
-     * @memberof RetryOptions
-     * @default true
-     */
-    retryAfter?: boolean;
-    /**
-     * HTTP methods to retry.
-     *
-     * @type {Dispatcher.HttpMethod[]}
-     * @memberof RetryOptions
-     * @default ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],
-     */
-    methods?: Dispatcher.HttpMethod[];
-    /**
-     * Error codes to be retried. e.g. `ECONNRESET`, `ENOTFOUND`, `ETIMEDOUT`, `ECONNREFUSED`, etc.
-     *
-     * @type {string[]}
-     * @default ['ECONNRESET','ECONNREFUSED','ENOTFOUND','ENETDOWN','ENETUNREACH','EHOSTDOWN','EHOSTUNREACH','EPIPE']
-     */
-    errorCodes?: string[];
-    /**
-     * HTTP status codes to be retried.
-     *
-     * @type {number[]}
-     * @memberof RetryOptions
-     * @default [500, 502, 503, 504, 429],
-     */
-    statusCodes?: number[];
-  }
-
-  export interface RetryHandlers {
-    dispatch: Dispatcher["dispatch"];
-    handler: Dispatcher.DispatchHandlers;
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/webidl.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/webidl.d.ts
deleted file mode 100644
index 40cfe06..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/webidl.d.ts
+++ /dev/null
@@ -1,220 +0,0 @@
-// These types are not exported, and are only used internally
-
-/**
- * Take in an unknown value and return one that is of type T
- */
-type Converter<T> = (object: unknown) => T
-
-type SequenceConverter<T> = (object: unknown) => T[]
-
-type RecordConverter<K extends string, V> = (object: unknown) => Record<K, V>
-
-interface ConvertToIntOpts {
-  clamp?: boolean
-  enforceRange?: boolean
-}
-
-interface WebidlErrors {
-  exception (opts: { header: string, message: string }): TypeError
-  /**
-   * @description Throw an error when conversion from one type to another has failed
-   */
-  conversionFailed (opts: {
-    prefix: string
-    argument: string
-    types: string[]
-  }): TypeError
-  /**
-   * @description Throw an error when an invalid argument is provided
-   */
-  invalidArgument (opts: {
-    prefix: string
-    value: string
-    type: string
-  }): TypeError
-}
-
-interface WebidlUtil {
-  /**
-   * @see https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values
-   */
-  Type (object: unknown):
-    | 'Undefined'
-    | 'Boolean'
-    | 'String'
-    | 'Symbol'
-    | 'Number'
-    | 'BigInt'
-    | 'Null'
-    | 'Object'
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
-   */
-  ConvertToInt (
-    V: unknown,
-    bitLength: number,
-    signedness: 'signed' | 'unsigned',
-    opts?: ConvertToIntOpts
-  ): number
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
-   */
-  IntegerPart (N: number): number
-}
-
-interface WebidlConverters {
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-DOMString
-   */
-  DOMString (V: unknown, opts?: {
-    legacyNullToEmptyString: boolean
-  }): string
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-ByteString
-   */
-  ByteString (V: unknown): string
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-USVString
-   */
-  USVString (V: unknown): string
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-boolean
-   */
-  boolean (V: unknown): boolean
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-any
-   */
-  any <Value>(V: Value): Value
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-long-long
-   */
-  ['long long'] (V: unknown): number
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-unsigned-long-long
-   */
-  ['unsigned long long'] (V: unknown): number
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-unsigned-long
-   */
-  ['unsigned long'] (V: unknown): number
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-unsigned-short
-   */
-  ['unsigned short'] (V: unknown, opts?: ConvertToIntOpts): number
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#idl-ArrayBuffer
-   */
-  ArrayBuffer (V: unknown): ArrayBufferLike
-  ArrayBuffer (V: unknown, opts: { allowShared: false }): ArrayBuffer
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-buffer-source-types
-   */
-  TypedArray (
-    V: unknown,
-    TypedArray: NodeJS.TypedArray | ArrayBufferLike
-  ): NodeJS.TypedArray | ArrayBufferLike
-  TypedArray (
-    V: unknown,
-    TypedArray: NodeJS.TypedArray | ArrayBufferLike,
-    opts?: { allowShared: false }
-  ): NodeJS.TypedArray | ArrayBuffer
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-buffer-source-types
-   */
-  DataView (V: unknown, opts?: { allowShared: boolean }): DataView
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#BufferSource
-   */
-  BufferSource (
-    V: unknown,
-    opts?: { allowShared: boolean }
-  ): NodeJS.TypedArray | ArrayBufferLike | DataView
-
-  ['sequence<ByteString>']: SequenceConverter<string>
-  
-  ['sequence<sequence<ByteString>>']: SequenceConverter<string[]>
-
-  ['record<ByteString, ByteString>']: RecordConverter<string, string>
-
-  [Key: string]: (...args: any[]) => unknown
-}
-
-export interface Webidl {
-  errors: WebidlErrors
-  util: WebidlUtil
-  converters: WebidlConverters
-
-  /**
-   * @description Performs a brand-check on {@param V} to ensure it is a
-   * {@param cls} object.
-   */
-  brandCheck <Interface>(V: unknown, cls: Interface, opts?: { strict?: boolean }): asserts V is Interface
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-sequence
-   * @description Convert a value, V, to a WebIDL sequence type.
-   */
-  sequenceConverter <Type>(C: Converter<Type>): SequenceConverter<Type>
-
-  illegalConstructor (): never
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#es-to-record
-   * @description Convert a value, V, to a WebIDL record type.
-   */
-  recordConverter <K extends string, V>(
-    keyConverter: Converter<K>,
-    valueConverter: Converter<V>
-  ): RecordConverter<K, V>
-
-  /**
-   * Similar to {@link Webidl.brandCheck} but allows skipping the check if third party
-   * interfaces are allowed.
-   */
-  interfaceConverter <Interface>(cls: Interface): (
-    V: unknown,
-    opts?: { strict: boolean }
-  ) => asserts V is typeof cls
-
-  // TODO(@KhafraDev): a type could likely be implemented that can infer the return type
-  // from the converters given?
-  /**
-   * Converts a value, V, to a WebIDL dictionary types. Allows limiting which keys are
-   * allowed, values allowed, optional and required keys. Auto converts the value to
-   * a type given a converter.
-   */
-  dictionaryConverter (converters: {
-    key: string,
-    defaultValue?: unknown,
-    required?: boolean,
-    converter: (...args: unknown[]) => unknown,
-    allowedValues?: unknown[]
-  }[]): (V: unknown) => Record<string, unknown>
-
-  /**
-   * @see https://webidl.spec.whatwg.org/#idl-nullable-type
-   * @description allows a type, V, to be null
-   */
-  nullableConverter <T>(
-    converter: Converter<T>
-  ): (V: unknown) => ReturnType<typeof converter> | null
-
-  argumentLengthCheck (args: { length: number }, min: number, context: {
-    header: string
-    message?: string
-  }): void
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/undici/types/websocket.d.ts b/actions/bcr-pr-review-notifier/node_modules/undici/types/websocket.d.ts
deleted file mode 100644
index 15a357d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/undici/types/websocket.d.ts
+++ /dev/null
@@ -1,131 +0,0 @@
-/// <reference types="node" />
-
-import type { Blob } from 'buffer'
-import type { MessagePort } from 'worker_threads'
-import {
-  EventTarget,
-  Event,
-  EventInit,
-  EventListenerOptions,
-  AddEventListenerOptions,
-  EventListenerOrEventListenerObject
-} from './patch'
-import Dispatcher from './dispatcher'
-import { HeadersInit } from './fetch'
-
-export type BinaryType = 'blob' | 'arraybuffer'
-
-interface WebSocketEventMap {
-  close: CloseEvent
-  error: Event
-  message: MessageEvent
-  open: Event
-}
-
-interface WebSocket extends EventTarget {
-  binaryType: BinaryType
-  
-  readonly bufferedAmount: number
-  readonly extensions: string
-
-  onclose: ((this: WebSocket, ev: WebSocketEventMap['close']) => any) | null
-  onerror: ((this: WebSocket, ev: WebSocketEventMap['error']) => any) | null
-  onmessage: ((this: WebSocket, ev: WebSocketEventMap['message']) => any) | null
-  onopen: ((this: WebSocket, ev: WebSocketEventMap['open']) => any) | null
-
-  readonly protocol: string
-  readonly readyState: number
-  readonly url: string
-
-  close(code?: number, reason?: string): void
-  send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void
-
-  readonly CLOSED: number
-  readonly CLOSING: number
-  readonly CONNECTING: number
-  readonly OPEN: number
-
-  addEventListener<K extends keyof WebSocketEventMap>(
-    type: K,
-    listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
-    options?: boolean | AddEventListenerOptions
-  ): void
-  addEventListener(
-    type: string,
-    listener: EventListenerOrEventListenerObject,
-    options?: boolean | AddEventListenerOptions
-  ): void
-  removeEventListener<K extends keyof WebSocketEventMap>(
-    type: K,
-    listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
-    options?: boolean | EventListenerOptions
-  ): void
-  removeEventListener(
-    type: string,
-    listener: EventListenerOrEventListenerObject,
-    options?: boolean | EventListenerOptions
-  ): void
-}
-
-export declare const WebSocket: {
-  prototype: WebSocket
-  new (url: string | URL, protocols?: string | string[] | WebSocketInit): WebSocket
-  readonly CLOSED: number
-  readonly CLOSING: number
-  readonly CONNECTING: number
-  readonly OPEN: number
-}
-
-interface CloseEventInit extends EventInit {
-  code?: number
-  reason?: string
-  wasClean?: boolean
-}
-
-interface CloseEvent extends Event {
-  readonly code: number
-  readonly reason: string
-  readonly wasClean: boolean
-}
-
-export declare const CloseEvent: {
-  prototype: CloseEvent
-  new (type: string, eventInitDict?: CloseEventInit): CloseEvent
-}
-
-interface MessageEventInit<T = any> extends EventInit {
-  data?: T
-  lastEventId?: string
-  origin?: string
-  ports?: (typeof MessagePort)[]
-  source?: typeof MessagePort | null
-}
-
-interface MessageEvent<T = any> extends Event {
-  readonly data: T
-  readonly lastEventId: string
-  readonly origin: string
-  readonly ports: ReadonlyArray<typeof MessagePort>
-  readonly source: typeof MessagePort | null
-  initMessageEvent(
-    type: string,
-    bubbles?: boolean,
-    cancelable?: boolean,
-    data?: any,
-    origin?: string,
-    lastEventId?: string,
-    source?: typeof MessagePort | null,
-    ports?: (typeof MessagePort)[]
-  ): void;
-}
-
-export declare const MessageEvent: {
-  prototype: MessageEvent
-  new<T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>
-}
-
-interface WebSocketInit {
-  protocols?: string | string[],
-  dispatcher?: Dispatcher,
-  headers?: HeadersInit
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/LICENSE.md b/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/LICENSE.md
deleted file mode 100644
index f105ab0..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/LICENSE.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# [ISC License](https://spdx.org/licenses/ISC)
-
-Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m)
-
-Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/README.md b/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/README.md
deleted file mode 100644
index 170ae0c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# universal-user-agent
-
-> Get a user agent string in both browser and node
-
-[![@latest](https://img.shields.io/npm/v/universal-user-agent.svg)](https://www.npmjs.com/package/universal-user-agent)
-[![Build Status](https://github.com/gr2m/universal-user-agent/workflows/Test/badge.svg)](https://github.com/gr2m/universal-user-agent/actions?query=workflow%3ATest+branch%3Amaster)
-[![Greenkeeper](https://badges.greenkeeper.io/gr2m/universal-user-agent.svg)](https://greenkeeper.io/)
-
-```js
-const { getUserAgent } = require("universal-user-agent");
-// or import { getUserAgent } from "universal-user-agent";
-
-const userAgent = getUserAgent();
-// userAgent will look like this
-// in browser: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0"
-// in node: Node.js/v8.9.4 (macOS High Sierra; x64)
-```
-
-## Credits
-
-The Node implementation was originally inspired by [default-user-agent](https://www.npmjs.com/package/default-user-agent).
-
-## License
-
-[ISC](LICENSE.md)
diff --git a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-node/index.js b/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-node/index.js
deleted file mode 100644
index 8865c7c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-node/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-function getUserAgent() {
-  if (typeof navigator === "object" && "userAgent" in navigator) {
-    return navigator.userAgent;
-  }
-
-  if (typeof process === "object" && process.version !== undefined) {
-    return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;
-  }
-
-  return "<environment undetectable>";
-}
-
-exports.getUserAgent = getUserAgent;
-//# sourceMappingURL=index.js.map
diff --git a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-node/index.js.map b/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-node/index.js.map
deleted file mode 100644
index 0a2cead..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-node/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sources":["../dist-src/index.js"],"sourcesContent":["export function getUserAgent() {\n    if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n        return navigator.userAgent;\n    }\n    if (typeof process === \"object\" && process.version !== undefined) {\n        return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;\n    }\n    return \"<environment undetectable>\";\n}\n"],"names":["getUserAgent","navigator","userAgent","process","version","undefined","substr","platform","arch"],"mappings":";;;;AAAO,SAASA,YAAT,GAAwB;AAC3B,MAAI,OAAOC,SAAP,KAAqB,QAArB,IAAiC,eAAeA,SAApD,EAA+D;AAC3D,WAAOA,SAAS,CAACC,SAAjB;AACH;;AACD,MAAI,OAAOC,OAAP,KAAmB,QAAnB,IAA+BA,OAAO,CAACC,OAAR,KAAoBC,SAAvD,EAAkE;AAC9D,WAAQ,WAAUF,OAAO,CAACC,OAAR,CAAgBE,MAAhB,CAAuB,CAAvB,CAA0B,KAAIH,OAAO,CAACI,QAAS,KAAIJ,OAAO,CAACK,IAAK,GAAlF;AACH;;AACD,SAAO,4BAAP;AACH;;;;"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-src/index.js b/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-src/index.js
deleted file mode 100644
index 3006e37..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-src/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-export function getUserAgent() {
-    if (typeof navigator === "object" && "userAgent" in navigator) {
-        return navigator.userAgent;
-    }
-    if (typeof process === "object" && process.version !== undefined) {
-        return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;
-    }
-    return "<environment undetectable>";
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-types/index.d.ts b/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-types/index.d.ts
deleted file mode 100644
index a7bb1c4..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-types/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare function getUserAgent(): string;
diff --git a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-web/index.js b/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-web/index.js
deleted file mode 100644
index fc742b9..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-web/index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-function getUserAgent() {
-    if (typeof navigator === "object" && "userAgent" in navigator) {
-        return navigator.userAgent;
-    }
-    if (typeof process === "object" && process.version !== undefined) {
-        return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;
-    }
-    return "<environment undetectable>";
-}
-
-export { getUserAgent };
-//# sourceMappingURL=index.js.map
diff --git a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-web/index.js.map b/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-web/index.js.map
deleted file mode 100644
index 2cdf193..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/dist-web/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sources":["../dist-src/index.js"],"sourcesContent":["export function getUserAgent() {\n    if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n        return navigator.userAgent;\n    }\n    if (typeof process === \"object\" && process.version !== undefined) {\n        return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;\n    }\n    return \"<environment undetectable>\";\n}\n"],"names":[],"mappings":"AAAO,SAAS,YAAY,GAAG;AAC/B,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,WAAW,IAAI,SAAS,EAAE;AACnE,QAAQ,OAAO,SAAS,CAAC,SAAS,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;AACtE,QAAQ,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7F,KAAK;AACL,IAAI,OAAO,4BAA4B,CAAC;AACxC;;;;"}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/package.json b/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/package.json
deleted file mode 100644
index c386163..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/universal-user-agent/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "name": "universal-user-agent",
-  "description": "Get a user agent string in both browser and node",
-  "version": "6.0.1",
-  "license": "ISC",
-  "files": [
-    "dist-*/",
-    "bin/"
-  ],
-  "pika": true,
-  "sideEffects": false,
-  "keywords": [],
-  "repository": "https://github.com/gr2m/universal-user-agent.git",
-  "dependencies": {},
-  "devDependencies": {
-    "@gr2m/pika-plugin-build-web": "^0.6.0-issue-84.1",
-    "@pika/pack": "^0.5.0",
-    "@pika/plugin-build-node": "^0.9.1",
-    "@pika/plugin-ts-standard-pkg": "^0.9.1",
-    "@types/jest": "^25.1.0",
-    "jest": "^24.9.0",
-    "prettier": "^2.0.0",
-    "semantic-release": "^17.0.5",
-    "ts-jest": "^26.0.0",
-    "typescript": "^3.6.2"
-  },
-  "source": "dist-src/index.js",
-  "types": "dist-types/index.d.ts",
-  "main": "dist-node/index.js",
-  "module": "dist-web/index.js"
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/CHANGELOG.md b/actions/bcr-pr-review-notifier/node_modules/uuid/CHANGELOG.md
deleted file mode 100644
index 7519d19..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/CHANGELOG.md
+++ /dev/null
@@ -1,229 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-### [8.3.2](https://github.com/uuidjs/uuid/compare/v8.3.1...v8.3.2) (2020-12-08)
-
-### Bug Fixes
-
-- lazy load getRandomValues ([#537](https://github.com/uuidjs/uuid/issues/537)) ([16c8f6d](https://github.com/uuidjs/uuid/commit/16c8f6df2f6b09b4d6235602d6a591188320a82e)), closes [#536](https://github.com/uuidjs/uuid/issues/536)
-
-### [8.3.1](https://github.com/uuidjs/uuid/compare/v8.3.0...v8.3.1) (2020-10-04)
-
-### Bug Fixes
-
-- support expo>=39.0.0 ([#515](https://github.com/uuidjs/uuid/issues/515)) ([c65a0f3](https://github.com/uuidjs/uuid/commit/c65a0f3fa73b901959d638d1e3591dfacdbed867)), closes [#375](https://github.com/uuidjs/uuid/issues/375)
-
-## [8.3.0](https://github.com/uuidjs/uuid/compare/v8.2.0...v8.3.0) (2020-07-27)
-
-### Features
-
-- add parse/stringify/validate/version/NIL APIs ([#479](https://github.com/uuidjs/uuid/issues/479)) ([0e6c10b](https://github.com/uuidjs/uuid/commit/0e6c10ba1bf9517796ff23c052fc0468eedfd5f4)), closes [#475](https://github.com/uuidjs/uuid/issues/475) [#478](https://github.com/uuidjs/uuid/issues/478) [#480](https://github.com/uuidjs/uuid/issues/480) [#481](https://github.com/uuidjs/uuid/issues/481) [#180](https://github.com/uuidjs/uuid/issues/180)
-
-## [8.2.0](https://github.com/uuidjs/uuid/compare/v8.1.0...v8.2.0) (2020-06-23)
-
-### Features
-
-- improve performance of v1 string representation ([#453](https://github.com/uuidjs/uuid/issues/453)) ([0ee0b67](https://github.com/uuidjs/uuid/commit/0ee0b67c37846529c66089880414d29f3ae132d5))
-- remove deprecated v4 string parameter ([#454](https://github.com/uuidjs/uuid/issues/454)) ([88ce3ca](https://github.com/uuidjs/uuid/commit/88ce3ca0ba046f60856de62c7ce03f7ba98ba46c)), closes [#437](https://github.com/uuidjs/uuid/issues/437)
-- support jspm ([#473](https://github.com/uuidjs/uuid/issues/473)) ([e9f2587](https://github.com/uuidjs/uuid/commit/e9f2587a92575cac31bc1d4ae944e17c09756659))
-
-### Bug Fixes
-
-- prepare package exports for webpack 5 ([#468](https://github.com/uuidjs/uuid/issues/468)) ([8d6e6a5](https://github.com/uuidjs/uuid/commit/8d6e6a5f8965ca9575eb4d92e99a43435f4a58a8))
-
-## [8.1.0](https://github.com/uuidjs/uuid/compare/v8.0.0...v8.1.0) (2020-05-20)
-
-### Features
-
-- improve v4 performance by reusing random number array ([#435](https://github.com/uuidjs/uuid/issues/435)) ([bf4af0d](https://github.com/uuidjs/uuid/commit/bf4af0d711b4d2ed03d1f74fd12ad0baa87dc79d))
-- optimize V8 performance of bytesToUuid ([#434](https://github.com/uuidjs/uuid/issues/434)) ([e156415](https://github.com/uuidjs/uuid/commit/e156415448ec1af2351fa0b6660cfb22581971f2))
-
-### Bug Fixes
-
-- export package.json required by react-native and bundlers ([#449](https://github.com/uuidjs/uuid/issues/449)) ([be1c8fe](https://github.com/uuidjs/uuid/commit/be1c8fe9a3206c358e0059b52fafd7213aa48a52)), closes [ai/nanoevents#44](https://github.com/ai/nanoevents/issues/44#issuecomment-602010343) [#444](https://github.com/uuidjs/uuid/issues/444)
-
-## [8.0.0](https://github.com/uuidjs/uuid/compare/v7.0.3...v8.0.0) (2020-04-29)
-
-### ⚠ BREAKING CHANGES
-
-- For native ECMAScript Module (ESM) usage in Node.js only named exports are exposed, there is no more default export.
-
-  ```diff
-  -import uuid from 'uuid';
-  -console.log(uuid.v4()); // -> 'cd6c3b08-0adc-4f4b-a6ef-36087a1c9869'
-  +import { v4 as uuidv4 } from 'uuid';
-  +uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
-  ```
-
-- Deep requiring specific algorithms of this library like `require('uuid/v4')`, which has been deprecated in `uuid@7`, is no longer supported.
-
-  Instead use the named exports that this module exports.
-
-  For ECMAScript Modules (ESM):
-
-  ```diff
-  -import uuidv4 from 'uuid/v4';
-  +import { v4 as uuidv4 } from 'uuid';
-  uuidv4();
-  ```
-
-  For CommonJS:
-
-  ```diff
-  -const uuidv4 = require('uuid/v4');
-  +const { v4: uuidv4 } = require('uuid');
-  uuidv4();
-  ```
-
-### Features
-
-- native Node.js ES Modules (wrapper approach) ([#423](https://github.com/uuidjs/uuid/issues/423)) ([2d9f590](https://github.com/uuidjs/uuid/commit/2d9f590ad9701d692625c07ed62f0a0f91227991)), closes [#245](https://github.com/uuidjs/uuid/issues/245) [#419](https://github.com/uuidjs/uuid/issues/419) [#342](https://github.com/uuidjs/uuid/issues/342)
-- remove deep requires ([#426](https://github.com/uuidjs/uuid/issues/426)) ([daf72b8](https://github.com/uuidjs/uuid/commit/daf72b84ceb20272a81bb5fbddb05dd95922cbba))
-
-### Bug Fixes
-
-- add CommonJS syntax example to README quickstart section ([#417](https://github.com/uuidjs/uuid/issues/417)) ([e0ec840](https://github.com/uuidjs/uuid/commit/e0ec8402c7ad44b7ef0453036c612f5db513fda0))
-
-### [7.0.3](https://github.com/uuidjs/uuid/compare/v7.0.2...v7.0.3) (2020-03-31)
-
-### Bug Fixes
-
-- make deep require deprecation warning work in browsers ([#409](https://github.com/uuidjs/uuid/issues/409)) ([4b71107](https://github.com/uuidjs/uuid/commit/4b71107d8c0d2ef56861ede6403fc9dc35a1e6bf)), closes [#408](https://github.com/uuidjs/uuid/issues/408)
-
-### [7.0.2](https://github.com/uuidjs/uuid/compare/v7.0.1...v7.0.2) (2020-03-04)
-
-### Bug Fixes
-
-- make access to msCrypto consistent ([#393](https://github.com/uuidjs/uuid/issues/393)) ([8bf2a20](https://github.com/uuidjs/uuid/commit/8bf2a20f3565df743da7215eebdbada9d2df118c))
-- simplify link in deprecation warning ([#391](https://github.com/uuidjs/uuid/issues/391)) ([bb2c8e4](https://github.com/uuidjs/uuid/commit/bb2c8e4e9f4c5f9c1eaaf3ea59710c633cd90cb7))
-- update links to match content in readme ([#386](https://github.com/uuidjs/uuid/issues/386)) ([44f2f86](https://github.com/uuidjs/uuid/commit/44f2f86e9d2bbf14ee5f0f00f72a3db1292666d4))
-
-### [7.0.1](https://github.com/uuidjs/uuid/compare/v7.0.0...v7.0.1) (2020-02-25)
-
-### Bug Fixes
-
-- clean up esm builds for node and browser ([#383](https://github.com/uuidjs/uuid/issues/383)) ([59e6a49](https://github.com/uuidjs/uuid/commit/59e6a49e7ce7b3e8fb0f3ee52b9daae72af467dc))
-- provide browser versions independent from module system ([#380](https://github.com/uuidjs/uuid/issues/380)) ([4344a22](https://github.com/uuidjs/uuid/commit/4344a22e7aed33be8627eeaaf05360f256a21753)), closes [#378](https://github.com/uuidjs/uuid/issues/378)
-
-## [7.0.0](https://github.com/uuidjs/uuid/compare/v3.4.0...v7.0.0) (2020-02-24)
-
-### ⚠ BREAKING CHANGES
-
-- The default export, which used to be the v4() method but which was already discouraged in v3.x of this library, has been removed.
-- Explicitly note that deep imports of the different uuid version functions are deprecated and no longer encouraged and that ECMAScript module named imports should be used instead. Emit a deprecation warning for people who deep-require the different algorithm variants.
-- Remove builtin support for insecure random number generators in the browser. Users who want that will have to supply their own random number generator function.
-- Remove support for generating v3 and v5 UUIDs in Node.js<4.x
-- Convert code base to ECMAScript Modules (ESM) and release CommonJS build for node and ESM build for browser bundlers.
-
-### Features
-
-- add UMD build to npm package ([#357](https://github.com/uuidjs/uuid/issues/357)) ([4e75adf](https://github.com/uuidjs/uuid/commit/4e75adf435196f28e3fbbe0185d654b5ded7ca2c)), closes [#345](https://github.com/uuidjs/uuid/issues/345)
-- add various es module and CommonJS examples ([b238510](https://github.com/uuidjs/uuid/commit/b238510bf352463521f74bab175a3af9b7a42555))
-- ensure that docs are up-to-date in CI ([ee5e77d](https://github.com/uuidjs/uuid/commit/ee5e77db547474f5a8f23d6c857a6d399209986b))
-- hybrid CommonJS & ECMAScript modules build ([a3f078f](https://github.com/uuidjs/uuid/commit/a3f078faa0baff69ab41aed08e041f8f9c8993d0))
-- remove insecure fallback random number generator ([3a5842b](https://github.com/uuidjs/uuid/commit/3a5842b141a6e5de0ae338f391661e6b84b167c9)), closes [#173](https://github.com/uuidjs/uuid/issues/173)
-- remove support for pre Node.js v4 Buffer API ([#356](https://github.com/uuidjs/uuid/issues/356)) ([b59b5c5](https://github.com/uuidjs/uuid/commit/b59b5c5ecad271c5453f1a156f011671f6d35627))
-- rename repository to github:uuidjs/uuid ([#351](https://github.com/uuidjs/uuid/issues/351)) ([c37a518](https://github.com/uuidjs/uuid/commit/c37a518e367ac4b6d0aa62dba1bc6ce9e85020f7)), closes [#338](https://github.com/uuidjs/uuid/issues/338)
-
-### Bug Fixes
-
-- add deep-require proxies for local testing and adjust tests ([#365](https://github.com/uuidjs/uuid/issues/365)) ([7fedc79](https://github.com/uuidjs/uuid/commit/7fedc79ac8fda4bfd1c566c7f05ef4ac13b2db48))
-- add note about removal of default export ([#372](https://github.com/uuidjs/uuid/issues/372)) ([12749b7](https://github.com/uuidjs/uuid/commit/12749b700eb49db8a9759fd306d8be05dbfbd58c)), closes [#370](https://github.com/uuidjs/uuid/issues/370)
-- deprecated deep requiring of the different algorithm versions ([#361](https://github.com/uuidjs/uuid/issues/361)) ([c0bdf15](https://github.com/uuidjs/uuid/commit/c0bdf15e417639b1aeb0b247b2fb11f7a0a26b23))
-
-## [3.4.0](https://github.com/uuidjs/uuid/compare/v3.3.3...v3.4.0) (2020-01-16)
-
-### Features
-
-- rename repository to github:uuidjs/uuid ([#351](https://github.com/uuidjs/uuid/issues/351)) ([e2d7314](https://github.com/uuidjs/uuid/commit/e2d7314)), closes [#338](https://github.com/uuidjs/uuid/issues/338)
-
-## [3.3.3](https://github.com/uuidjs/uuid/compare/v3.3.2...v3.3.3) (2019-08-19)
-
-### Bug Fixes
-
-- no longer run ci tests on node v4
-- upgrade dependencies
-
-## [3.3.2](https://github.com/uuidjs/uuid/compare/v3.3.1...v3.3.2) (2018-06-28)
-
-### Bug Fixes
-
-- typo ([305d877](https://github.com/uuidjs/uuid/commit/305d877))
-
-## [3.3.1](https://github.com/uuidjs/uuid/compare/v3.3.0...v3.3.1) (2018-06-28)
-
-### Bug Fixes
-
-- fix [#284](https://github.com/uuidjs/uuid/issues/284) by setting function name in try-catch ([f2a60f2](https://github.com/uuidjs/uuid/commit/f2a60f2))
-
-# [3.3.0](https://github.com/uuidjs/uuid/compare/v3.2.1...v3.3.0) (2018-06-22)
-
-### Bug Fixes
-
-- assignment to readonly property to allow running in strict mode ([#270](https://github.com/uuidjs/uuid/issues/270)) ([d062fdc](https://github.com/uuidjs/uuid/commit/d062fdc))
-- fix [#229](https://github.com/uuidjs/uuid/issues/229) ([c9684d4](https://github.com/uuidjs/uuid/commit/c9684d4))
-- Get correct version of IE11 crypto ([#274](https://github.com/uuidjs/uuid/issues/274)) ([153d331](https://github.com/uuidjs/uuid/commit/153d331))
-- mem issue when generating uuid ([#267](https://github.com/uuidjs/uuid/issues/267)) ([c47702c](https://github.com/uuidjs/uuid/commit/c47702c))
-
-### Features
-
-- enforce Conventional Commit style commit messages ([#282](https://github.com/uuidjs/uuid/issues/282)) ([cc9a182](https://github.com/uuidjs/uuid/commit/cc9a182))
-
-## [3.2.1](https://github.com/uuidjs/uuid/compare/v3.2.0...v3.2.1) (2018-01-16)
-
-### Bug Fixes
-
-- use msCrypto if available. Fixes [#241](https://github.com/uuidjs/uuid/issues/241) ([#247](https://github.com/uuidjs/uuid/issues/247)) ([1fef18b](https://github.com/uuidjs/uuid/commit/1fef18b))
-
-# [3.2.0](https://github.com/uuidjs/uuid/compare/v3.1.0...v3.2.0) (2018-01-16)
-
-### Bug Fixes
-
-- remove mistakenly added typescript dependency, rollback version (standard-version will auto-increment) ([09fa824](https://github.com/uuidjs/uuid/commit/09fa824))
-- use msCrypto if available. Fixes [#241](https://github.com/uuidjs/uuid/issues/241) ([#247](https://github.com/uuidjs/uuid/issues/247)) ([1fef18b](https://github.com/uuidjs/uuid/commit/1fef18b))
-
-### Features
-
-- Add v3 Support ([#217](https://github.com/uuidjs/uuid/issues/217)) ([d94f726](https://github.com/uuidjs/uuid/commit/d94f726))
-
-# [3.1.0](https://github.com/uuidjs/uuid/compare/v3.1.0...v3.0.1) (2017-06-17)
-
-### Bug Fixes
-
-- (fix) Add .npmignore file to exclude test/ and other non-essential files from packing. (#183)
-- Fix typo (#178)
-- Simple typo fix (#165)
-
-### Features
-
-- v5 support in CLI (#197)
-- V5 support (#188)
-
-# 3.0.1 (2016-11-28)
-
-- split uuid versions into separate files
-
-# 3.0.0 (2016-11-17)
-
-- remove .parse and .unparse
-
-# 2.0.0
-
-- Removed uuid.BufferClass
-
-# 1.4.0
-
-- Improved module context detection
-- Removed public RNG functions
-
-# 1.3.2
-
-- Improve tests and handling of v1() options (Issue #24)
-- Expose RNG option to allow for perf testing with different generators
-
-# 1.3.0
-
-- Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!
-- Support for node.js crypto API
-- De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/CONTRIBUTING.md b/actions/bcr-pr-review-notifier/node_modules/uuid/CONTRIBUTING.md
deleted file mode 100644
index 4a4503d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/CONTRIBUTING.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Contributing
-
-Please feel free to file GitHub Issues or propose Pull Requests. We're always happy to discuss improvements to this library!
-
-## Testing
-
-```shell
-npm test
-```
-
-## Releasing
-
-Releases are supposed to be done from master, version bumping is automated through [`standard-version`](https://github.com/conventional-changelog/standard-version):
-
-```shell
-npm run release -- --dry-run  # verify output manually
-npm run release               # follow the instructions from the output of this command
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/LICENSE.md b/actions/bcr-pr-review-notifier/node_modules/uuid/LICENSE.md
deleted file mode 100644
index 3934168..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/LICENSE.md
+++ /dev/null
@@ -1,9 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2010-2020 Robert Kieffer and other contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/README.md b/actions/bcr-pr-review-notifier/node_modules/uuid/README.md
deleted file mode 100644
index ed27e57..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/README.md
+++ /dev/null
@@ -1,505 +0,0 @@
-<!--
-  -- This file is auto-generated from README_js.md. Changes should be made there.
-  -->
-
-# uuid [![CI](https://github.com/uuidjs/uuid/workflows/CI/badge.svg)](https://github.com/uuidjs/uuid/actions?query=workflow%3ACI) [![Browser](https://github.com/uuidjs/uuid/workflows/Browser/badge.svg)](https://github.com/uuidjs/uuid/actions?query=workflow%3ABrowser)
-
-For the creation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDs
-
-- **Complete** - Support for RFC4122 version 1, 3, 4, and 5 UUIDs
-- **Cross-platform** - Support for ...
-  - CommonJS, [ECMAScript Modules](#ecmascript-modules) and [CDN builds](#cdn-builds)
-  - Node 8, 10, 12, 14
-  - Chrome, Safari, Firefox, Edge, IE 11 browsers
-  - Webpack and rollup.js module bundlers
-  - [React Native / Expo](#react-native--expo)
-- **Secure** - Cryptographically-strong random values
-- **Small** - Zero-dependency, small footprint, plays nice with "tree shaking" packagers
-- **CLI** - Includes the [`uuid` command line](#command-line) utility
-
-**Upgrading from `uuid@3.x`?** Your code is probably okay, but check out [Upgrading From `uuid@3.x`](#upgrading-from-uuid3x) for details.
-
-## Quickstart
-
-To create a random UUID...
-
-**1. Install**
-
-```shell
-npm install uuid
-```
-
-**2. Create a UUID** (ES6 module syntax)
-
-```javascript
-import { v4 as uuidv4 } from 'uuid';
-uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
-```
-
-... or using CommonJS syntax:
-
-```javascript
-const { v4: uuidv4 } = require('uuid');
-uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
-```
-
-For timestamp UUIDs, namespace UUIDs, and other options read on ...
-
-## API Summary
-
-|  |  |  |
-| --- | --- | --- |
-| [`uuid.NIL`](#uuidnil) | The nil UUID string (all zeros) | New in `uuid@8.3` |
-| [`uuid.parse()`](#uuidparsestr) | Convert UUID string to array of bytes | New in `uuid@8.3` |
-| [`uuid.stringify()`](#uuidstringifyarr-offset) | Convert array of bytes to UUID string | New in `uuid@8.3` |
-| [`uuid.v1()`](#uuidv1options-buffer-offset) | Create a version 1 (timestamp) UUID |  |
-| [`uuid.v3()`](#uuidv3name-namespace-buffer-offset) | Create a version 3 (namespace w/ MD5) UUID |  |
-| [`uuid.v4()`](#uuidv4options-buffer-offset) | Create a version 4 (random) UUID |  |
-| [`uuid.v5()`](#uuidv5name-namespace-buffer-offset) | Create a version 5 (namespace w/ SHA-1) UUID |  |
-| [`uuid.validate()`](#uuidvalidatestr) | Test a string to see if it is a valid UUID | New in `uuid@8.3` |
-| [`uuid.version()`](#uuidversionstr) | Detect RFC version of a UUID | New in `uuid@8.3` |
-
-## API
-
-### uuid.NIL
-
-The nil UUID string (all zeros).
-
-Example:
-
-```javascript
-import { NIL as NIL_UUID } from 'uuid';
-
-NIL_UUID; // ⇨ '00000000-0000-0000-0000-000000000000'
-```
-
-### uuid.parse(str)
-
-Convert UUID string to array of bytes
-
-|           |                                          |
-| --------- | ---------------------------------------- |
-| `str`     | A valid UUID `String`                    |
-| _returns_ | `Uint8Array[16]`                         |
-| _throws_  | `TypeError` if `str` is not a valid UUID |
-
-Note: Ordering of values in the byte arrays used by `parse()` and `stringify()` follows the left &Rarr; right order of hex-pairs in UUID strings. As shown in the example below.
-
-Example:
-
-```javascript
-import { parse as uuidParse } from 'uuid';
-
-// Parse a UUID
-const bytes = uuidParse('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b');
-
-// Convert to hex strings to show byte order (for documentation purposes)
-[...bytes].map((v) => v.toString(16).padStart(2, '0')); // ⇨ 
-  // [
-  //   '6e', 'c0', 'bd', '7f',
-  //   '11', 'c0', '43', 'da',
-  //   '97', '5e', '2a', '8a',
-  //   'd9', 'eb', 'ae', '0b'
-  // ]
-```
-
-### uuid.stringify(arr[, offset])
-
-Convert array of bytes to UUID string
-
-|                |                                                                              |
-| -------------- | ---------------------------------------------------------------------------- |
-| `arr`          | `Array`-like collection of 16 values (starting from `offset`) between 0-255. |
-| [`offset` = 0] | `Number` Starting index in the Array                                         |
-| _returns_      | `String`                                                                     |
-| _throws_       | `TypeError` if a valid UUID string cannot be generated                       |
-
-Note: Ordering of values in the byte arrays used by `parse()` and `stringify()` follows the left &Rarr; right order of hex-pairs in UUID strings. As shown in the example below.
-
-Example:
-
-```javascript
-import { stringify as uuidStringify } from 'uuid';
-
-const uuidBytes = [
-  0x6e,
-  0xc0,
-  0xbd,
-  0x7f,
-  0x11,
-  0xc0,
-  0x43,
-  0xda,
-  0x97,
-  0x5e,
-  0x2a,
-  0x8a,
-  0xd9,
-  0xeb,
-  0xae,
-  0x0b,
-];
-
-uuidStringify(uuidBytes); // ⇨ '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'
-```
-
-### uuid.v1([options[, buffer[, offset]]])
-
-Create an RFC version 1 (timestamp) UUID
-
-|  |  |
-| --- | --- |
-| [`options`] | `Object` with one or more of the following properties: |
-| [`options.node` ] | RFC "node" field as an `Array[6]` of byte values (per 4.1.6) |
-| [`options.clockseq`] | RFC "clock sequence" as a `Number` between 0 - 0x3fff |
-| [`options.msecs`] | RFC "timestamp" field (`Number` of milliseconds, unix epoch) |
-| [`options.nsecs`] | RFC "timestamp" field (`Number` of nanseconds to add to `msecs`, should be 0-10,000) |
-| [`options.random`] | `Array` of 16 random bytes (0-255) |
-| [`options.rng`] | Alternative to `options.random`, a `Function` that returns an `Array` of 16 random bytes (0-255) |
-| [`buffer`] | `Array \| Buffer` If specified, uuid will be written here in byte-form, starting at `offset` |
-| [`offset` = 0] | `Number` Index to start writing UUID bytes in `buffer` |
-| _returns_ | UUID `String` if no `buffer` is specified, otherwise returns `buffer` |
-| _throws_ | `Error` if more than 10M UUIDs/sec are requested |
-
-Note: The default [node id](https://tools.ietf.org/html/rfc4122#section-4.1.6) (the last 12 digits in the UUID) is generated once, randomly, on process startup, and then remains unchanged for the duration of the process.
-
-Note: `options.random` and `options.rng` are only meaningful on the very first call to `v1()`, where they may be passed to initialize the internal `node` and `clockseq` fields.
-
-Example:
-
-```javascript
-import { v1 as uuidv1 } from 'uuid';
-
-uuidv1(); // ⇨ '2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d'
-```
-
-Example using `options`:
-
-```javascript
-import { v1 as uuidv1 } from 'uuid';
-
-const v1options = {
-  node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],
-  clockseq: 0x1234,
-  msecs: new Date('2011-11-01').getTime(),
-  nsecs: 5678,
-};
-uuidv1(v1options); // ⇨ '710b962e-041c-11e1-9234-0123456789ab'
-```
-
-### uuid.v3(name, namespace[, buffer[, offset]])
-
-Create an RFC version 3 (namespace w/ MD5) UUID
-
-API is identical to `v5()`, but uses "v3" instead.
-
-&#x26a0;&#xfe0f; Note: Per the RFC, "_If backward compatibility is not an issue, SHA-1 [Version 5] is preferred_."
-
-### uuid.v4([options[, buffer[, offset]]])
-
-Create an RFC version 4 (random) UUID
-
-|  |  |
-| --- | --- |
-| [`options`] | `Object` with one or more of the following properties: |
-| [`options.random`] | `Array` of 16 random bytes (0-255) |
-| [`options.rng`] | Alternative to `options.random`, a `Function` that returns an `Array` of 16 random bytes (0-255) |
-| [`buffer`] | `Array \| Buffer` If specified, uuid will be written here in byte-form, starting at `offset` |
-| [`offset` = 0] | `Number` Index to start writing UUID bytes in `buffer` |
-| _returns_ | UUID `String` if no `buffer` is specified, otherwise returns `buffer` |
-
-Example:
-
-```javascript
-import { v4 as uuidv4 } from 'uuid';
-
-uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
-```
-
-Example using predefined `random` values:
-
-```javascript
-import { v4 as uuidv4 } from 'uuid';
-
-const v4options = {
-  random: [
-    0x10,
-    0x91,
-    0x56,
-    0xbe,
-    0xc4,
-    0xfb,
-    0xc1,
-    0xea,
-    0x71,
-    0xb4,
-    0xef,
-    0xe1,
-    0x67,
-    0x1c,
-    0x58,
-    0x36,
-  ],
-};
-uuidv4(v4options); // ⇨ '109156be-c4fb-41ea-b1b4-efe1671c5836'
-```
-
-### uuid.v5(name, namespace[, buffer[, offset]])
-
-Create an RFC version 5 (namespace w/ SHA-1) UUID
-
-|  |  |
-| --- | --- |
-| `name` | `String \| Array` |
-| `namespace` | `String \| Array[16]` Namespace UUID |
-| [`buffer`] | `Array \| Buffer` If specified, uuid will be written here in byte-form, starting at `offset` |
-| [`offset` = 0] | `Number` Index to start writing UUID bytes in `buffer` |
-| _returns_ | UUID `String` if no `buffer` is specified, otherwise returns `buffer` |
-
-Note: The RFC `DNS` and `URL` namespaces are available as `v5.DNS` and `v5.URL`.
-
-Example with custom namespace:
-
-```javascript
-import { v5 as uuidv5 } from 'uuid';
-
-// Define a custom namespace.  Readers, create your own using something like
-// https://www.uuidgenerator.net/
-const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341';
-
-uuidv5('Hello, World!', MY_NAMESPACE); // ⇨ '630eb68f-e0fa-5ecc-887a-7c7a62614681'
-```
-
-Example with RFC `URL` namespace:
-
-```javascript
-import { v5 as uuidv5 } from 'uuid';
-
-uuidv5('https://www.w3.org/', uuidv5.URL); // ⇨ 'c106a26a-21bb-5538-8bf2-57095d1976c1'
-```
-
-### uuid.validate(str)
-
-Test a string to see if it is a valid UUID
-
-|           |                                                     |
-| --------- | --------------------------------------------------- |
-| `str`     | `String` to validate                                |
-| _returns_ | `true` if string is a valid UUID, `false` otherwise |
-
-Example:
-
-```javascript
-import { validate as uuidValidate } from 'uuid';
-
-uuidValidate('not a UUID'); // ⇨ false
-uuidValidate('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨ true
-```
-
-Using `validate` and `version` together it is possible to do per-version validation, e.g. validate for only v4 UUIds.
-
-```javascript
-import { version as uuidVersion } from 'uuid';
-import { validate as uuidValidate } from 'uuid';
-
-function uuidValidateV4(uuid) {
-  return uuidValidate(uuid) && uuidVersion(uuid) === 4;
-}
-
-const v1Uuid = 'd9428888-122b-11e1-b85c-61cd3cbb3210';
-const v4Uuid = '109156be-c4fb-41ea-b1b4-efe1671c5836';
-
-uuidValidateV4(v4Uuid); // ⇨ true
-uuidValidateV4(v1Uuid); // ⇨ false
-```
-
-### uuid.version(str)
-
-Detect RFC version of a UUID
-
-|           |                                          |
-| --------- | ---------------------------------------- |
-| `str`     | A valid UUID `String`                    |
-| _returns_ | `Number` The RFC version of the UUID     |
-| _throws_  | `TypeError` if `str` is not a valid UUID |
-
-Example:
-
-```javascript
-import { version as uuidVersion } from 'uuid';
-
-uuidVersion('45637ec4-c85f-11ea-87d0-0242ac130003'); // ⇨ 1
-uuidVersion('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨ 4
-```
-
-## Command Line
-
-UUIDs can be generated from the command line using `uuid`.
-
-```shell
-$ uuid
-ddeb27fb-d9a0-4624-be4d-4615062daed4
-```
-
-The default is to generate version 4 UUIDS, however the other versions are supported. Type `uuid --help` for details:
-
-```shell
-$ uuid --help
-
-Usage:
-  uuid
-  uuid v1
-  uuid v3 <name> <namespace uuid>
-  uuid v4
-  uuid v5 <name> <namespace uuid>
-  uuid --help
-
-Note: <namespace uuid> may be "URL" or "DNS" to use the corresponding UUIDs
-defined by RFC4122
-```
-
-## ECMAScript Modules
-
-This library comes with [ECMAScript Modules](https://www.ecma-international.org/ecma-262/6.0/#sec-modules) (ESM) support for Node.js versions that support it ([example](./examples/node-esmodules/)) as well as bundlers like [rollup.js](https://rollupjs.org/guide/en/#tree-shaking) ([example](./examples/browser-rollup/)) and [webpack](https://webpack.js.org/guides/tree-shaking/) ([example](./examples/browser-webpack/)) (targeting both, Node.js and browser environments).
-
-```javascript
-import { v4 as uuidv4 } from 'uuid';
-uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
-```
-
-To run the examples you must first create a dist build of this library in the module root:
-
-```shell
-npm run build
-```
-
-## CDN Builds
-
-### ECMAScript Modules
-
-To load this module directly into modern browsers that [support loading ECMAScript Modules](https://caniuse.com/#feat=es6-module) you can make use of [jspm](https://jspm.org/):
-
-```html
-<script type="module">
-  import { v4 as uuidv4 } from 'https://jspm.dev/uuid';
-  console.log(uuidv4()); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
-</script>
-```
-
-### UMD
-
-To load this module directly into older browsers you can use the [UMD (Universal Module Definition)](https://github.com/umdjs/umd) builds from any of the following CDNs:
-
-**Using [UNPKG](https://unpkg.com/uuid@latest/dist/umd/)**:
-
-```html
-<script src="https://unpkg.com/uuid@latest/dist/umd/uuidv4.min.js"></script>
-```
-
-**Using [jsDelivr](https://cdn.jsdelivr.net/npm/uuid@latest/dist/umd/)**:
-
-```html
-<script src="https://cdn.jsdelivr.net/npm/uuid@latest/dist/umd/uuidv4.min.js"></script>
-```
-
-**Using [cdnjs](https://cdnjs.com/libraries/uuid)**:
-
-```html
-<script src="https://cdnjs.cloudflare.com/ajax/libs/uuid/8.1.0/uuidv4.min.js"></script>
-```
-
-These CDNs all provide the same [`uuidv4()`](#uuidv4options-buffer-offset) method:
-
-```html
-<script>
-  uuidv4(); // ⇨ '55af1e37-0734-46d8-b070-a1e42e4fc392'
-</script>
-```
-
-Methods for the other algorithms ([`uuidv1()`](#uuidv1options-buffer-offset), [`uuidv3()`](#uuidv3name-namespace-buffer-offset) and [`uuidv5()`](#uuidv5name-namespace-buffer-offset)) are available from the files `uuidv1.min.js`, `uuidv3.min.js` and `uuidv5.min.js` respectively.
-
-## "getRandomValues() not supported"
-
-This error occurs in environments where the standard [`crypto.getRandomValues()`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues) API is not supported. This issue can be resolved by adding an appropriate polyfill:
-
-### React Native / Expo
-
-1. Install [`react-native-get-random-values`](https://github.com/LinusU/react-native-get-random-values#readme)
-1. Import it _before_ `uuid`. Since `uuid` might also appear as a transitive dependency of some other imports it's safest to just import `react-native-get-random-values` as the very first thing in your entry point:
-
-```javascript
-import 'react-native-get-random-values';
-import { v4 as uuidv4 } from 'uuid';
-```
-
-Note: If you are using Expo, you must be using at least `react-native-get-random-values@1.5.0` and `expo@39.0.0`.
-
-### Web Workers / Service Workers (Edge <= 18)
-
-[In Edge <= 18, Web Crypto is not supported in Web Workers or Service Workers](https://caniuse.com/#feat=cryptography) and we are not aware of a polyfill (let us know if you find one, please).
-
-## Upgrading From `uuid@7.x`
-
-### Only Named Exports Supported When Using with Node.js ESM
-
-`uuid@7.x` did not come with native ECMAScript Module (ESM) support for Node.js. Importing it in Node.js ESM consequently imported the CommonJS source with a default export. This library now comes with true Node.js ESM support and only provides named exports.
-
-Instead of doing:
-
-```javascript
-import uuid from 'uuid';
-uuid.v4();
-```
-
-you will now have to use the named exports:
-
-```javascript
-import { v4 as uuidv4 } from 'uuid';
-uuidv4();
-```
-
-### Deep Requires No Longer Supported
-
-Deep requires like `require('uuid/v4')` [which have been deprecated in `uuid@7.x`](#deep-requires-now-deprecated) are no longer supported.
-
-## Upgrading From `uuid@3.x`
-
-"_Wait... what happened to `uuid@4.x` - `uuid@6.x`?!?_"
-
-In order to avoid confusion with RFC [version 4](#uuidv4options-buffer-offset) and [version 5](#uuidv5name-namespace-buffer-offset) UUIDs, and a possible [version 6](http://gh.peabody.io/uuidv6/), releases 4 thru 6 of this module have been skipped.
-
-### Deep Requires Now Deprecated
-
-`uuid@3.x` encouraged the use of deep requires to minimize the bundle size of browser builds:
-
-```javascript
-const uuidv4 = require('uuid/v4'); // <== NOW DEPRECATED!
-uuidv4();
-```
-
-As of `uuid@7.x` this library now provides ECMAScript modules builds, which allow packagers like Webpack and Rollup to do "tree-shaking" to remove dead code. Instead, use the `import` syntax:
-
-```javascript
-import { v4 as uuidv4 } from 'uuid';
-uuidv4();
-```
-
-... or for CommonJS:
-
-```javascript
-const { v4: uuidv4 } = require('uuid');
-uuidv4();
-```
-
-### Default Export Removed
-
-`uuid@3.x` was exporting the Version 4 UUID method as a default export:
-
-```javascript
-const uuid = require('uuid'); // <== REMOVED!
-```
-
-This usage pattern was already discouraged in `uuid@3.x` and has been removed in `uuid@7.x`.
-
-----
-Markdown generated from [README_js.md](README_js.md) by [![RunMD Logo](http://i.imgur.com/h0FVyzU.png)](https://github.com/broofa/runmd)
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/bin/uuid b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/bin/uuid
deleted file mode 100755
index f38d2ee..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/bin/uuid
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env node
-require('../uuid-bin');
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/index.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/index.js
deleted file mode 100644
index 1db6f6d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-export { default as v1 } from './v1.js';
-export { default as v3 } from './v3.js';
-export { default as v4 } from './v4.js';
-export { default as v5 } from './v5.js';
-export { default as NIL } from './nil.js';
-export { default as version } from './version.js';
-export { default as validate } from './validate.js';
-export { default as stringify } from './stringify.js';
-export { default as parse } from './parse.js';
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/md5.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/md5.js
deleted file mode 100644
index 8b5d46a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/md5.js
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Browser-compatible JavaScript MD5
- *
- * Modification of JavaScript MD5
- * https://github.com/blueimp/JavaScript-MD5
- *
- * Copyright 2011, Sebastian Tschan
- * https://blueimp.net
- *
- * Licensed under the MIT license:
- * https://opensource.org/licenses/MIT
- *
- * Based on
- * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
- * Digest Algorithm, as defined in RFC 1321.
- * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for more info.
- */
-function md5(bytes) {
-  if (typeof bytes === 'string') {
-    var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
-
-    bytes = new Uint8Array(msg.length);
-
-    for (var i = 0; i < msg.length; ++i) {
-      bytes[i] = msg.charCodeAt(i);
-    }
-  }
-
-  return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));
-}
-/*
- * Convert an array of little-endian words to an array of bytes
- */
-
-
-function md5ToHexEncodedArray(input) {
-  var output = [];
-  var length32 = input.length * 32;
-  var hexTab = '0123456789abcdef';
-
-  for (var i = 0; i < length32; i += 8) {
-    var x = input[i >> 5] >>> i % 32 & 0xff;
-    var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);
-    output.push(hex);
-  }
-
-  return output;
-}
-/**
- * Calculate output length with padding and bit length
- */
-
-
-function getOutputLength(inputLength8) {
-  return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;
-}
-/*
- * Calculate the MD5 of an array of little-endian words, and a bit length.
- */
-
-
-function wordsToMd5(x, len) {
-  /* append padding */
-  x[len >> 5] |= 0x80 << len % 32;
-  x[getOutputLength(len) - 1] = len;
-  var a = 1732584193;
-  var b = -271733879;
-  var c = -1732584194;
-  var d = 271733878;
-
-  for (var i = 0; i < x.length; i += 16) {
-    var olda = a;
-    var oldb = b;
-    var oldc = c;
-    var oldd = d;
-    a = md5ff(a, b, c, d, x[i], 7, -680876936);
-    d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
-    c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
-    b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
-    a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
-    d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
-    c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
-    b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
-    a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
-    d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
-    c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
-    b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
-    a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
-    d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
-    c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
-    b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
-    a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
-    d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
-    c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
-    b = md5gg(b, c, d, a, x[i], 20, -373897302);
-    a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
-    d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
-    c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
-    b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
-    a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
-    d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
-    c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
-    b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
-    a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
-    d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
-    c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
-    b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
-    a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
-    d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
-    c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
-    b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
-    a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
-    d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
-    c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
-    b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
-    a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
-    d = md5hh(d, a, b, c, x[i], 11, -358537222);
-    c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
-    b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
-    a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
-    d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
-    c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
-    b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
-    a = md5ii(a, b, c, d, x[i], 6, -198630844);
-    d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
-    c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
-    b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
-    a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
-    d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
-    c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
-    b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
-    a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
-    d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
-    c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
-    b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
-    a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
-    d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
-    c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
-    b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
-    a = safeAdd(a, olda);
-    b = safeAdd(b, oldb);
-    c = safeAdd(c, oldc);
-    d = safeAdd(d, oldd);
-  }
-
-  return [a, b, c, d];
-}
-/*
- * Convert an array bytes to an array of little-endian words
- * Characters >255 have their high-byte silently ignored.
- */
-
-
-function bytesToWords(input) {
-  if (input.length === 0) {
-    return [];
-  }
-
-  var length8 = input.length * 8;
-  var output = new Uint32Array(getOutputLength(length8));
-
-  for (var i = 0; i < length8; i += 8) {
-    output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;
-  }
-
-  return output;
-}
-/*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
-
-
-function safeAdd(x, y) {
-  var lsw = (x & 0xffff) + (y & 0xffff);
-  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
-  return msw << 16 | lsw & 0xffff;
-}
-/*
- * Bitwise rotate a 32-bit number to the left.
- */
-
-
-function bitRotateLeft(num, cnt) {
-  return num << cnt | num >>> 32 - cnt;
-}
-/*
- * These functions implement the four basic operations the algorithm uses.
- */
-
-
-function md5cmn(q, a, b, x, s, t) {
-  return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
-}
-
-function md5ff(a, b, c, d, x, s, t) {
-  return md5cmn(b & c | ~b & d, a, b, x, s, t);
-}
-
-function md5gg(a, b, c, d, x, s, t) {
-  return md5cmn(b & d | c & ~d, a, b, x, s, t);
-}
-
-function md5hh(a, b, c, d, x, s, t) {
-  return md5cmn(b ^ c ^ d, a, b, x, s, t);
-}
-
-function md5ii(a, b, c, d, x, s, t) {
-  return md5cmn(c ^ (b | ~d), a, b, x, s, t);
-}
-
-export default md5;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/nil.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/nil.js
deleted file mode 100644
index b36324c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/nil.js
+++ /dev/null
@@ -1 +0,0 @@
-export default '00000000-0000-0000-0000-000000000000';
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/parse.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/parse.js
deleted file mode 100644
index 7c5b1d5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/parse.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import validate from './validate.js';
-
-function parse(uuid) {
-  if (!validate(uuid)) {
-    throw TypeError('Invalid UUID');
-  }
-
-  var v;
-  var arr = new Uint8Array(16); // Parse ########-....-....-....-............
-
-  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
-  arr[1] = v >>> 16 & 0xff;
-  arr[2] = v >>> 8 & 0xff;
-  arr[3] = v & 0xff; // Parse ........-####-....-....-............
-
-  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;
-  arr[5] = v & 0xff; // Parse ........-....-####-....-............
-
-  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;
-  arr[7] = v & 0xff; // Parse ........-....-....-####-............
-
-  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;
-  arr[9] = v & 0xff; // Parse ........-....-....-....-############
-  // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes)
-
-  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;
-  arr[11] = v / 0x100000000 & 0xff;
-  arr[12] = v >>> 24 & 0xff;
-  arr[13] = v >>> 16 & 0xff;
-  arr[14] = v >>> 8 & 0xff;
-  arr[15] = v & 0xff;
-  return arr;
-}
-
-export default parse;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/regex.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/regex.js
deleted file mode 100644
index 3da8673..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/regex.js
+++ /dev/null
@@ -1 +0,0 @@
-export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/rng.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/rng.js
deleted file mode 100644
index 8abbf2e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/rng.js
+++ /dev/null
@@ -1,19 +0,0 @@
-// Unique ID creation requires a high quality random # generator. In the browser we therefore
-// require the crypto API and do not support built-in fallback to lower quality random number
-// generators (like Math.random()).
-var getRandomValues;
-var rnds8 = new Uint8Array(16);
-export default function rng() {
-  // lazy load so that environments that need to polyfill have a chance to do so
-  if (!getRandomValues) {
-    // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. Also,
-    // find the complete implementation of crypto (msCrypto) on IE11.
-    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);
-
-    if (!getRandomValues) {
-      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
-    }
-  }
-
-  return getRandomValues(rnds8);
-}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/sha1.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/sha1.js
deleted file mode 100644
index 940548b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/sha1.js
+++ /dev/null
@@ -1,96 +0,0 @@
-// Adapted from Chris Veness' SHA1 code at
-// http://www.movable-type.co.uk/scripts/sha1.html
-function f(s, x, y, z) {
-  switch (s) {
-    case 0:
-      return x & y ^ ~x & z;
-
-    case 1:
-      return x ^ y ^ z;
-
-    case 2:
-      return x & y ^ x & z ^ y & z;
-
-    case 3:
-      return x ^ y ^ z;
-  }
-}
-
-function ROTL(x, n) {
-  return x << n | x >>> 32 - n;
-}
-
-function sha1(bytes) {
-  var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
-  var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
-
-  if (typeof bytes === 'string') {
-    var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
-
-    bytes = [];
-
-    for (var i = 0; i < msg.length; ++i) {
-      bytes.push(msg.charCodeAt(i));
-    }
-  } else if (!Array.isArray(bytes)) {
-    // Convert Array-like to Array
-    bytes = Array.prototype.slice.call(bytes);
-  }
-
-  bytes.push(0x80);
-  var l = bytes.length / 4 + 2;
-  var N = Math.ceil(l / 16);
-  var M = new Array(N);
-
-  for (var _i = 0; _i < N; ++_i) {
-    var arr = new Uint32Array(16);
-
-    for (var j = 0; j < 16; ++j) {
-      arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];
-    }
-
-    M[_i] = arr;
-  }
-
-  M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);
-  M[N - 1][14] = Math.floor(M[N - 1][14]);
-  M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;
-
-  for (var _i2 = 0; _i2 < N; ++_i2) {
-    var W = new Uint32Array(80);
-
-    for (var t = 0; t < 16; ++t) {
-      W[t] = M[_i2][t];
-    }
-
-    for (var _t = 16; _t < 80; ++_t) {
-      W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);
-    }
-
-    var a = H[0];
-    var b = H[1];
-    var c = H[2];
-    var d = H[3];
-    var e = H[4];
-
-    for (var _t2 = 0; _t2 < 80; ++_t2) {
-      var s = Math.floor(_t2 / 20);
-      var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;
-      e = d;
-      d = c;
-      c = ROTL(b, 30) >>> 0;
-      b = a;
-      a = T;
-    }
-
-    H[0] = H[0] + a >>> 0;
-    H[1] = H[1] + b >>> 0;
-    H[2] = H[2] + c >>> 0;
-    H[3] = H[3] + d >>> 0;
-    H[4] = H[4] + e >>> 0;
-  }
-
-  return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];
-}
-
-export default sha1;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/stringify.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/stringify.js
deleted file mode 100644
index 3102111..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/stringify.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import validate from './validate.js';
-/**
- * Convert array of 16 byte values to UUID string format of the form:
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- */
-
-var byteToHex = [];
-
-for (var i = 0; i < 256; ++i) {
-  byteToHex.push((i + 0x100).toString(16).substr(1));
-}
-
-function stringify(arr) {
-  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-  // Note: Be careful editing this code!  It's been tuned for performance
-  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
-  var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one
-  // of the following:
-  // - One or more input array values don't map to a hex octet (leading to
-  // "undefined" in the uuid)
-  // - Invalid input values for the RFC `version` or `variant` fields
-
-  if (!validate(uuid)) {
-    throw TypeError('Stringified UUID is invalid');
-  }
-
-  return uuid;
-}
-
-export default stringify;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v1.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v1.js
deleted file mode 100644
index 1a22591..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v1.js
+++ /dev/null
@@ -1,95 +0,0 @@
-import rng from './rng.js';
-import stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**
-//
-// Inspired by https://github.com/LiosK/UUID.js
-// and http://docs.python.org/library/uuid.html
-
-var _nodeId;
-
-var _clockseq; // Previous uuid creation time
-
-
-var _lastMSecs = 0;
-var _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details
-
-function v1(options, buf, offset) {
-  var i = buf && offset || 0;
-  var b = buf || new Array(16);
-  options = options || {};
-  var node = options.node || _nodeId;
-  var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not
-  // specified.  We do this lazily to minimize issues related to insufficient
-  // system entropy.  See #189
-
-  if (node == null || clockseq == null) {
-    var seedBytes = options.random || (options.rng || rng)();
-
-    if (node == null) {
-      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
-      node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];
-    }
-
-    if (clockseq == null) {
-      // Per 4.2.2, randomize (14 bit) clockseq
-      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
-    }
-  } // UUID timestamps are 100 nano-second units since the Gregorian epoch,
-  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
-  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
-  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
-
-
-  var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock
-  // cycle to simulate higher resolution clock
-
-  var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)
-
-  var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression
-
-  if (dt < 0 && options.clockseq === undefined) {
-    clockseq = clockseq + 1 & 0x3fff;
-  } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
-  // time interval
-
-
-  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
-    nsecs = 0;
-  } // Per 4.2.1.2 Throw error if too many uuids are requested
-
-
-  if (nsecs >= 10000) {
-    throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");
-  }
-
-  _lastMSecs = msecs;
-  _lastNSecs = nsecs;
-  _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
-
-  msecs += 12219292800000; // `time_low`
-
-  var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
-  b[i++] = tl >>> 24 & 0xff;
-  b[i++] = tl >>> 16 & 0xff;
-  b[i++] = tl >>> 8 & 0xff;
-  b[i++] = tl & 0xff; // `time_mid`
-
-  var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;
-  b[i++] = tmh >>> 8 & 0xff;
-  b[i++] = tmh & 0xff; // `time_high_and_version`
-
-  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
-
-  b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
-
-  b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`
-
-  b[i++] = clockseq & 0xff; // `node`
-
-  for (var n = 0; n < 6; ++n) {
-    b[i + n] = node[n];
-  }
-
-  return buf || stringify(b);
-}
-
-export default v1;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v3.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v3.js
deleted file mode 100644
index c9ab9a4..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v3.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import v35 from './v35.js';
-import md5 from './md5.js';
-var v3 = v35('v3', 0x30, md5);
-export default v3;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v35.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v35.js
deleted file mode 100644
index 31dd8a1..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v35.js
+++ /dev/null
@@ -1,64 +0,0 @@
-import stringify from './stringify.js';
-import parse from './parse.js';
-
-function stringToBytes(str) {
-  str = unescape(encodeURIComponent(str)); // UTF8 escape
-
-  var bytes = [];
-
-  for (var i = 0; i < str.length; ++i) {
-    bytes.push(str.charCodeAt(i));
-  }
-
-  return bytes;
-}
-
-export var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
-export var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
-export default function (name, version, hashfunc) {
-  function generateUUID(value, namespace, buf, offset) {
-    if (typeof value === 'string') {
-      value = stringToBytes(value);
-    }
-
-    if (typeof namespace === 'string') {
-      namespace = parse(namespace);
-    }
-
-    if (namespace.length !== 16) {
-      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');
-    } // Compute hash of namespace and value, Per 4.3
-    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =
-    // hashfunc([...namespace, ... value])`
-
-
-    var bytes = new Uint8Array(16 + value.length);
-    bytes.set(namespace);
-    bytes.set(value, namespace.length);
-    bytes = hashfunc(bytes);
-    bytes[6] = bytes[6] & 0x0f | version;
-    bytes[8] = bytes[8] & 0x3f | 0x80;
-
-    if (buf) {
-      offset = offset || 0;
-
-      for (var i = 0; i < 16; ++i) {
-        buf[offset + i] = bytes[i];
-      }
-
-      return buf;
-    }
-
-    return stringify(bytes);
-  } // Function#name is not settable on some platforms (#270)
-
-
-  try {
-    generateUUID.name = name; // eslint-disable-next-line no-empty
-  } catch (err) {} // For CommonJS default export support
-
-
-  generateUUID.DNS = DNS;
-  generateUUID.URL = URL;
-  return generateUUID;
-}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v4.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v4.js
deleted file mode 100644
index 404810a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v4.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import rng from './rng.js';
-import stringify from './stringify.js';
-
-function v4(options, buf, offset) {
-  options = options || {};
-  var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
-
-  rnds[6] = rnds[6] & 0x0f | 0x40;
-  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
-
-  if (buf) {
-    offset = offset || 0;
-
-    for (var i = 0; i < 16; ++i) {
-      buf[offset + i] = rnds[i];
-    }
-
-    return buf;
-  }
-
-  return stringify(rnds);
-}
-
-export default v4;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v5.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v5.js
deleted file mode 100644
index c08d96b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/v5.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import v35 from './v35.js';
-import sha1 from './sha1.js';
-var v5 = v35('v5', 0x50, sha1);
-export default v5;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/validate.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/validate.js
deleted file mode 100644
index f1cdc7a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/validate.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import REGEX from './regex.js';
-
-function validate(uuid) {
-  return typeof uuid === 'string' && REGEX.test(uuid);
-}
-
-export default validate;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/version.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/version.js
deleted file mode 100644
index 77530e9..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-browser/version.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import validate from './validate.js';
-
-function version(uuid) {
-  if (!validate(uuid)) {
-    throw TypeError('Invalid UUID');
-  }
-
-  return parseInt(uuid.substr(14, 1), 16);
-}
-
-export default version;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/index.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/index.js
deleted file mode 100644
index 1db6f6d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-export { default as v1 } from './v1.js';
-export { default as v3 } from './v3.js';
-export { default as v4 } from './v4.js';
-export { default as v5 } from './v5.js';
-export { default as NIL } from './nil.js';
-export { default as version } from './version.js';
-export { default as validate } from './validate.js';
-export { default as stringify } from './stringify.js';
-export { default as parse } from './parse.js';
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/md5.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/md5.js
deleted file mode 100644
index 4d68b04..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/md5.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import crypto from 'crypto';
-
-function md5(bytes) {
-  if (Array.isArray(bytes)) {
-    bytes = Buffer.from(bytes);
-  } else if (typeof bytes === 'string') {
-    bytes = Buffer.from(bytes, 'utf8');
-  }
-
-  return crypto.createHash('md5').update(bytes).digest();
-}
-
-export default md5;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/nil.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/nil.js
deleted file mode 100644
index b36324c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/nil.js
+++ /dev/null
@@ -1 +0,0 @@
-export default '00000000-0000-0000-0000-000000000000';
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/parse.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/parse.js
deleted file mode 100644
index 6421c5d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/parse.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import validate from './validate.js';
-
-function parse(uuid) {
-  if (!validate(uuid)) {
-    throw TypeError('Invalid UUID');
-  }
-
-  let v;
-  const arr = new Uint8Array(16); // Parse ########-....-....-....-............
-
-  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
-  arr[1] = v >>> 16 & 0xff;
-  arr[2] = v >>> 8 & 0xff;
-  arr[3] = v & 0xff; // Parse ........-####-....-....-............
-
-  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;
-  arr[5] = v & 0xff; // Parse ........-....-####-....-............
-
-  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;
-  arr[7] = v & 0xff; // Parse ........-....-....-####-............
-
-  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;
-  arr[9] = v & 0xff; // Parse ........-....-....-....-############
-  // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes)
-
-  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;
-  arr[11] = v / 0x100000000 & 0xff;
-  arr[12] = v >>> 24 & 0xff;
-  arr[13] = v >>> 16 & 0xff;
-  arr[14] = v >>> 8 & 0xff;
-  arr[15] = v & 0xff;
-  return arr;
-}
-
-export default parse;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/regex.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/regex.js
deleted file mode 100644
index 3da8673..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/regex.js
+++ /dev/null
@@ -1 +0,0 @@
-export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/rng.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/rng.js
deleted file mode 100644
index 8006244..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/rng.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import crypto from 'crypto';
-const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate
-
-let poolPtr = rnds8Pool.length;
-export default function rng() {
-  if (poolPtr > rnds8Pool.length - 16) {
-    crypto.randomFillSync(rnds8Pool);
-    poolPtr = 0;
-  }
-
-  return rnds8Pool.slice(poolPtr, poolPtr += 16);
-}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/sha1.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/sha1.js
deleted file mode 100644
index e23850b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/sha1.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import crypto from 'crypto';
-
-function sha1(bytes) {
-  if (Array.isArray(bytes)) {
-    bytes = Buffer.from(bytes);
-  } else if (typeof bytes === 'string') {
-    bytes = Buffer.from(bytes, 'utf8');
-  }
-
-  return crypto.createHash('sha1').update(bytes).digest();
-}
-
-export default sha1;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/stringify.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/stringify.js
deleted file mode 100644
index f9bca12..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/stringify.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import validate from './validate.js';
-/**
- * Convert array of 16 byte values to UUID string format of the form:
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- */
-
-const byteToHex = [];
-
-for (let i = 0; i < 256; ++i) {
-  byteToHex.push((i + 0x100).toString(16).substr(1));
-}
-
-function stringify(arr, offset = 0) {
-  // Note: Be careful editing this code!  It's been tuned for performance
-  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
-  const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one
-  // of the following:
-  // - One or more input array values don't map to a hex octet (leading to
-  // "undefined" in the uuid)
-  // - Invalid input values for the RFC `version` or `variant` fields
-
-  if (!validate(uuid)) {
-    throw TypeError('Stringified UUID is invalid');
-  }
-
-  return uuid;
-}
-
-export default stringify;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v1.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v1.js
deleted file mode 100644
index ebf81ac..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v1.js
+++ /dev/null
@@ -1,95 +0,0 @@
-import rng from './rng.js';
-import stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**
-//
-// Inspired by https://github.com/LiosK/UUID.js
-// and http://docs.python.org/library/uuid.html
-
-let _nodeId;
-
-let _clockseq; // Previous uuid creation time
-
-
-let _lastMSecs = 0;
-let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details
-
-function v1(options, buf, offset) {
-  let i = buf && offset || 0;
-  const b = buf || new Array(16);
-  options = options || {};
-  let node = options.node || _nodeId;
-  let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not
-  // specified.  We do this lazily to minimize issues related to insufficient
-  // system entropy.  See #189
-
-  if (node == null || clockseq == null) {
-    const seedBytes = options.random || (options.rng || rng)();
-
-    if (node == null) {
-      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
-      node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];
-    }
-
-    if (clockseq == null) {
-      // Per 4.2.2, randomize (14 bit) clockseq
-      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
-    }
-  } // UUID timestamps are 100 nano-second units since the Gregorian epoch,
-  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
-  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
-  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
-
-
-  let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock
-  // cycle to simulate higher resolution clock
-
-  let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)
-
-  const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression
-
-  if (dt < 0 && options.clockseq === undefined) {
-    clockseq = clockseq + 1 & 0x3fff;
-  } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
-  // time interval
-
-
-  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
-    nsecs = 0;
-  } // Per 4.2.1.2 Throw error if too many uuids are requested
-
-
-  if (nsecs >= 10000) {
-    throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");
-  }
-
-  _lastMSecs = msecs;
-  _lastNSecs = nsecs;
-  _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
-
-  msecs += 12219292800000; // `time_low`
-
-  const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
-  b[i++] = tl >>> 24 & 0xff;
-  b[i++] = tl >>> 16 & 0xff;
-  b[i++] = tl >>> 8 & 0xff;
-  b[i++] = tl & 0xff; // `time_mid`
-
-  const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;
-  b[i++] = tmh >>> 8 & 0xff;
-  b[i++] = tmh & 0xff; // `time_high_and_version`
-
-  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
-
-  b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
-
-  b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`
-
-  b[i++] = clockseq & 0xff; // `node`
-
-  for (let n = 0; n < 6; ++n) {
-    b[i + n] = node[n];
-  }
-
-  return buf || stringify(b);
-}
-
-export default v1;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v3.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v3.js
deleted file mode 100644
index 09063b8..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v3.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import v35 from './v35.js';
-import md5 from './md5.js';
-const v3 = v35('v3', 0x30, md5);
-export default v3;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v35.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v35.js
deleted file mode 100644
index 22f6a19..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v35.js
+++ /dev/null
@@ -1,64 +0,0 @@
-import stringify from './stringify.js';
-import parse from './parse.js';
-
-function stringToBytes(str) {
-  str = unescape(encodeURIComponent(str)); // UTF8 escape
-
-  const bytes = [];
-
-  for (let i = 0; i < str.length; ++i) {
-    bytes.push(str.charCodeAt(i));
-  }
-
-  return bytes;
-}
-
-export const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
-export const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
-export default function (name, version, hashfunc) {
-  function generateUUID(value, namespace, buf, offset) {
-    if (typeof value === 'string') {
-      value = stringToBytes(value);
-    }
-
-    if (typeof namespace === 'string') {
-      namespace = parse(namespace);
-    }
-
-    if (namespace.length !== 16) {
-      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');
-    } // Compute hash of namespace and value, Per 4.3
-    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =
-    // hashfunc([...namespace, ... value])`
-
-
-    let bytes = new Uint8Array(16 + value.length);
-    bytes.set(namespace);
-    bytes.set(value, namespace.length);
-    bytes = hashfunc(bytes);
-    bytes[6] = bytes[6] & 0x0f | version;
-    bytes[8] = bytes[8] & 0x3f | 0x80;
-
-    if (buf) {
-      offset = offset || 0;
-
-      for (let i = 0; i < 16; ++i) {
-        buf[offset + i] = bytes[i];
-      }
-
-      return buf;
-    }
-
-    return stringify(bytes);
-  } // Function#name is not settable on some platforms (#270)
-
-
-  try {
-    generateUUID.name = name; // eslint-disable-next-line no-empty
-  } catch (err) {} // For CommonJS default export support
-
-
-  generateUUID.DNS = DNS;
-  generateUUID.URL = URL;
-  return generateUUID;
-}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v4.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v4.js
deleted file mode 100644
index efad926..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v4.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import rng from './rng.js';
-import stringify from './stringify.js';
-
-function v4(options, buf, offset) {
-  options = options || {};
-  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
-
-  rnds[6] = rnds[6] & 0x0f | 0x40;
-  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
-
-  if (buf) {
-    offset = offset || 0;
-
-    for (let i = 0; i < 16; ++i) {
-      buf[offset + i] = rnds[i];
-    }
-
-    return buf;
-  }
-
-  return stringify(rnds);
-}
-
-export default v4;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v5.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v5.js
deleted file mode 100644
index e87fe31..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/v5.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import v35 from './v35.js';
-import sha1 from './sha1.js';
-const v5 = v35('v5', 0x50, sha1);
-export default v5;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/validate.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/validate.js
deleted file mode 100644
index f1cdc7a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/validate.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import REGEX from './regex.js';
-
-function validate(uuid) {
-  return typeof uuid === 'string' && REGEX.test(uuid);
-}
-
-export default validate;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/version.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/version.js
deleted file mode 100644
index 77530e9..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/esm-node/version.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import validate from './validate.js';
-
-function version(uuid) {
-  if (!validate(uuid)) {
-    throw TypeError('Invalid UUID');
-  }
-
-  return parseInt(uuid.substr(14, 1), 16);
-}
-
-export default version;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/index.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/index.js
deleted file mode 100644
index bf13b10..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/index.js
+++ /dev/null
@@ -1,79 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-Object.defineProperty(exports, "v1", {
-  enumerable: true,
-  get: function () {
-    return _v.default;
-  }
-});
-Object.defineProperty(exports, "v3", {
-  enumerable: true,
-  get: function () {
-    return _v2.default;
-  }
-});
-Object.defineProperty(exports, "v4", {
-  enumerable: true,
-  get: function () {
-    return _v3.default;
-  }
-});
-Object.defineProperty(exports, "v5", {
-  enumerable: true,
-  get: function () {
-    return _v4.default;
-  }
-});
-Object.defineProperty(exports, "NIL", {
-  enumerable: true,
-  get: function () {
-    return _nil.default;
-  }
-});
-Object.defineProperty(exports, "version", {
-  enumerable: true,
-  get: function () {
-    return _version.default;
-  }
-});
-Object.defineProperty(exports, "validate", {
-  enumerable: true,
-  get: function () {
-    return _validate.default;
-  }
-});
-Object.defineProperty(exports, "stringify", {
-  enumerable: true,
-  get: function () {
-    return _stringify.default;
-  }
-});
-Object.defineProperty(exports, "parse", {
-  enumerable: true,
-  get: function () {
-    return _parse.default;
-  }
-});
-
-var _v = _interopRequireDefault(require("./v1.js"));
-
-var _v2 = _interopRequireDefault(require("./v3.js"));
-
-var _v3 = _interopRequireDefault(require("./v4.js"));
-
-var _v4 = _interopRequireDefault(require("./v5.js"));
-
-var _nil = _interopRequireDefault(require("./nil.js"));
-
-var _version = _interopRequireDefault(require("./version.js"));
-
-var _validate = _interopRequireDefault(require("./validate.js"));
-
-var _stringify = _interopRequireDefault(require("./stringify.js"));
-
-var _parse = _interopRequireDefault(require("./parse.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/md5-browser.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/md5-browser.js
deleted file mode 100644
index 7a4582a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/md5-browser.js
+++ /dev/null
@@ -1,223 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-/*
- * Browser-compatible JavaScript MD5
- *
- * Modification of JavaScript MD5
- * https://github.com/blueimp/JavaScript-MD5
- *
- * Copyright 2011, Sebastian Tschan
- * https://blueimp.net
- *
- * Licensed under the MIT license:
- * https://opensource.org/licenses/MIT
- *
- * Based on
- * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
- * Digest Algorithm, as defined in RFC 1321.
- * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for more info.
- */
-function md5(bytes) {
-  if (typeof bytes === 'string') {
-    const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
-
-    bytes = new Uint8Array(msg.length);
-
-    for (let i = 0; i < msg.length; ++i) {
-      bytes[i] = msg.charCodeAt(i);
-    }
-  }
-
-  return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));
-}
-/*
- * Convert an array of little-endian words to an array of bytes
- */
-
-
-function md5ToHexEncodedArray(input) {
-  const output = [];
-  const length32 = input.length * 32;
-  const hexTab = '0123456789abcdef';
-
-  for (let i = 0; i < length32; i += 8) {
-    const x = input[i >> 5] >>> i % 32 & 0xff;
-    const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);
-    output.push(hex);
-  }
-
-  return output;
-}
-/**
- * Calculate output length with padding and bit length
- */
-
-
-function getOutputLength(inputLength8) {
-  return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;
-}
-/*
- * Calculate the MD5 of an array of little-endian words, and a bit length.
- */
-
-
-function wordsToMd5(x, len) {
-  /* append padding */
-  x[len >> 5] |= 0x80 << len % 32;
-  x[getOutputLength(len) - 1] = len;
-  let a = 1732584193;
-  let b = -271733879;
-  let c = -1732584194;
-  let d = 271733878;
-
-  for (let i = 0; i < x.length; i += 16) {
-    const olda = a;
-    const oldb = b;
-    const oldc = c;
-    const oldd = d;
-    a = md5ff(a, b, c, d, x[i], 7, -680876936);
-    d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
-    c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
-    b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
-    a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
-    d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
-    c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
-    b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
-    a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
-    d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
-    c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
-    b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
-    a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
-    d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
-    c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
-    b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
-    a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
-    d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
-    c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
-    b = md5gg(b, c, d, a, x[i], 20, -373897302);
-    a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
-    d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
-    c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
-    b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
-    a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
-    d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
-    c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
-    b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
-    a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
-    d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
-    c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
-    b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
-    a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
-    d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
-    c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
-    b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
-    a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
-    d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
-    c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
-    b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
-    a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
-    d = md5hh(d, a, b, c, x[i], 11, -358537222);
-    c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
-    b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
-    a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
-    d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
-    c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
-    b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
-    a = md5ii(a, b, c, d, x[i], 6, -198630844);
-    d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
-    c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
-    b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
-    a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
-    d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
-    c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
-    b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
-    a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
-    d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
-    c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
-    b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
-    a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
-    d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
-    c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
-    b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
-    a = safeAdd(a, olda);
-    b = safeAdd(b, oldb);
-    c = safeAdd(c, oldc);
-    d = safeAdd(d, oldd);
-  }
-
-  return [a, b, c, d];
-}
-/*
- * Convert an array bytes to an array of little-endian words
- * Characters >255 have their high-byte silently ignored.
- */
-
-
-function bytesToWords(input) {
-  if (input.length === 0) {
-    return [];
-  }
-
-  const length8 = input.length * 8;
-  const output = new Uint32Array(getOutputLength(length8));
-
-  for (let i = 0; i < length8; i += 8) {
-    output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;
-  }
-
-  return output;
-}
-/*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
-
-
-function safeAdd(x, y) {
-  const lsw = (x & 0xffff) + (y & 0xffff);
-  const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
-  return msw << 16 | lsw & 0xffff;
-}
-/*
- * Bitwise rotate a 32-bit number to the left.
- */
-
-
-function bitRotateLeft(num, cnt) {
-  return num << cnt | num >>> 32 - cnt;
-}
-/*
- * These functions implement the four basic operations the algorithm uses.
- */
-
-
-function md5cmn(q, a, b, x, s, t) {
-  return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
-}
-
-function md5ff(a, b, c, d, x, s, t) {
-  return md5cmn(b & c | ~b & d, a, b, x, s, t);
-}
-
-function md5gg(a, b, c, d, x, s, t) {
-  return md5cmn(b & d | c & ~d, a, b, x, s, t);
-}
-
-function md5hh(a, b, c, d, x, s, t) {
-  return md5cmn(b ^ c ^ d, a, b, x, s, t);
-}
-
-function md5ii(a, b, c, d, x, s, t) {
-  return md5cmn(c ^ (b | ~d), a, b, x, s, t);
-}
-
-var _default = md5;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/md5.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/md5.js
deleted file mode 100644
index 824d481..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/md5.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _crypto = _interopRequireDefault(require("crypto"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function md5(bytes) {
-  if (Array.isArray(bytes)) {
-    bytes = Buffer.from(bytes);
-  } else if (typeof bytes === 'string') {
-    bytes = Buffer.from(bytes, 'utf8');
-  }
-
-  return _crypto.default.createHash('md5').update(bytes).digest();
-}
-
-var _default = md5;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/nil.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/nil.js
deleted file mode 100644
index 7ade577..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/nil.js
+++ /dev/null
@@ -1,8 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-var _default = '00000000-0000-0000-0000-000000000000';
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/parse.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/parse.js
deleted file mode 100644
index 4c69fc3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/parse.js
+++ /dev/null
@@ -1,45 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _validate = _interopRequireDefault(require("./validate.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function parse(uuid) {
-  if (!(0, _validate.default)(uuid)) {
-    throw TypeError('Invalid UUID');
-  }
-
-  let v;
-  const arr = new Uint8Array(16); // Parse ########-....-....-....-............
-
-  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
-  arr[1] = v >>> 16 & 0xff;
-  arr[2] = v >>> 8 & 0xff;
-  arr[3] = v & 0xff; // Parse ........-####-....-....-............
-
-  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;
-  arr[5] = v & 0xff; // Parse ........-....-####-....-............
-
-  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;
-  arr[7] = v & 0xff; // Parse ........-....-....-####-............
-
-  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;
-  arr[9] = v & 0xff; // Parse ........-....-....-....-############
-  // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes)
-
-  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;
-  arr[11] = v / 0x100000000 & 0xff;
-  arr[12] = v >>> 24 & 0xff;
-  arr[13] = v >>> 16 & 0xff;
-  arr[14] = v >>> 8 & 0xff;
-  arr[15] = v & 0xff;
-  return arr;
-}
-
-var _default = parse;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/regex.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/regex.js
deleted file mode 100644
index 1ef91d6..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/regex.js
+++ /dev/null
@@ -1,8 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/rng-browser.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/rng-browser.js
deleted file mode 100644
index 91faeae..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/rng-browser.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = rng;
-// Unique ID creation requires a high quality random # generator. In the browser we therefore
-// require the crypto API and do not support built-in fallback to lower quality random number
-// generators (like Math.random()).
-let getRandomValues;
-const rnds8 = new Uint8Array(16);
-
-function rng() {
-  // lazy load so that environments that need to polyfill have a chance to do so
-  if (!getRandomValues) {
-    // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. Also,
-    // find the complete implementation of crypto (msCrypto) on IE11.
-    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);
-
-    if (!getRandomValues) {
-      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
-    }
-  }
-
-  return getRandomValues(rnds8);
-}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/rng.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/rng.js
deleted file mode 100644
index 3507f93..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/rng.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = rng;
-
-var _crypto = _interopRequireDefault(require("crypto"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate
-
-let poolPtr = rnds8Pool.length;
-
-function rng() {
-  if (poolPtr > rnds8Pool.length - 16) {
-    _crypto.default.randomFillSync(rnds8Pool);
-
-    poolPtr = 0;
-  }
-
-  return rnds8Pool.slice(poolPtr, poolPtr += 16);
-}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/sha1-browser.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/sha1-browser.js
deleted file mode 100644
index 24cbced..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/sha1-browser.js
+++ /dev/null
@@ -1,104 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-// Adapted from Chris Veness' SHA1 code at
-// http://www.movable-type.co.uk/scripts/sha1.html
-function f(s, x, y, z) {
-  switch (s) {
-    case 0:
-      return x & y ^ ~x & z;
-
-    case 1:
-      return x ^ y ^ z;
-
-    case 2:
-      return x & y ^ x & z ^ y & z;
-
-    case 3:
-      return x ^ y ^ z;
-  }
-}
-
-function ROTL(x, n) {
-  return x << n | x >>> 32 - n;
-}
-
-function sha1(bytes) {
-  const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
-  const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
-
-  if (typeof bytes === 'string') {
-    const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
-
-    bytes = [];
-
-    for (let i = 0; i < msg.length; ++i) {
-      bytes.push(msg.charCodeAt(i));
-    }
-  } else if (!Array.isArray(bytes)) {
-    // Convert Array-like to Array
-    bytes = Array.prototype.slice.call(bytes);
-  }
-
-  bytes.push(0x80);
-  const l = bytes.length / 4 + 2;
-  const N = Math.ceil(l / 16);
-  const M = new Array(N);
-
-  for (let i = 0; i < N; ++i) {
-    const arr = new Uint32Array(16);
-
-    for (let j = 0; j < 16; ++j) {
-      arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];
-    }
-
-    M[i] = arr;
-  }
-
-  M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);
-  M[N - 1][14] = Math.floor(M[N - 1][14]);
-  M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;
-
-  for (let i = 0; i < N; ++i) {
-    const W = new Uint32Array(80);
-
-    for (let t = 0; t < 16; ++t) {
-      W[t] = M[i][t];
-    }
-
-    for (let t = 16; t < 80; ++t) {
-      W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);
-    }
-
-    let a = H[0];
-    let b = H[1];
-    let c = H[2];
-    let d = H[3];
-    let e = H[4];
-
-    for (let t = 0; t < 80; ++t) {
-      const s = Math.floor(t / 20);
-      const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;
-      e = d;
-      d = c;
-      c = ROTL(b, 30) >>> 0;
-      b = a;
-      a = T;
-    }
-
-    H[0] = H[0] + a >>> 0;
-    H[1] = H[1] + b >>> 0;
-    H[2] = H[2] + c >>> 0;
-    H[3] = H[3] + d >>> 0;
-    H[4] = H[4] + e >>> 0;
-  }
-
-  return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];
-}
-
-var _default = sha1;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/sha1.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/sha1.js
deleted file mode 100644
index 03bdd63..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/sha1.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _crypto = _interopRequireDefault(require("crypto"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function sha1(bytes) {
-  if (Array.isArray(bytes)) {
-    bytes = Buffer.from(bytes);
-  } else if (typeof bytes === 'string') {
-    bytes = Buffer.from(bytes, 'utf8');
-  }
-
-  return _crypto.default.createHash('sha1').update(bytes).digest();
-}
-
-var _default = sha1;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/stringify.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/stringify.js
deleted file mode 100644
index b8e7519..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/stringify.js
+++ /dev/null
@@ -1,39 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _validate = _interopRequireDefault(require("./validate.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Convert array of 16 byte values to UUID string format of the form:
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- */
-const byteToHex = [];
-
-for (let i = 0; i < 256; ++i) {
-  byteToHex.push((i + 0x100).toString(16).substr(1));
-}
-
-function stringify(arr, offset = 0) {
-  // Note: Be careful editing this code!  It's been tuned for performance
-  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
-  const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one
-  // of the following:
-  // - One or more input array values don't map to a hex octet (leading to
-  // "undefined" in the uuid)
-  // - Invalid input values for the RFC `version` or `variant` fields
-
-  if (!(0, _validate.default)(uuid)) {
-    throw TypeError('Stringified UUID is invalid');
-  }
-
-  return uuid;
-}
-
-var _default = stringify;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuid.min.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuid.min.js
deleted file mode 100644
index 639ca2f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuid.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((r="undefined"!=typeof globalThis?globalThis:r||self).uuid={})}(this,(function(r){"use strict";var e,n=new Uint8Array(16);function t(){if(!e&&!(e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return e(n)}var o=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function a(r){return"string"==typeof r&&o.test(r)}for(var i,u,f=[],s=0;s<256;++s)f.push((s+256).toString(16).substr(1));function c(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(f[r[e+0]]+f[r[e+1]]+f[r[e+2]]+f[r[e+3]]+"-"+f[r[e+4]]+f[r[e+5]]+"-"+f[r[e+6]]+f[r[e+7]]+"-"+f[r[e+8]]+f[r[e+9]]+"-"+f[r[e+10]]+f[r[e+11]]+f[r[e+12]]+f[r[e+13]]+f[r[e+14]]+f[r[e+15]]).toLowerCase();if(!a(n))throw TypeError("Stringified UUID is invalid");return n}var l=0,d=0;function v(r){if(!a(r))throw TypeError("Invalid UUID");var e,n=new Uint8Array(16);return n[0]=(e=parseInt(r.slice(0,8),16))>>>24,n[1]=e>>>16&255,n[2]=e>>>8&255,n[3]=255&e,n[4]=(e=parseInt(r.slice(9,13),16))>>>8,n[5]=255&e,n[6]=(e=parseInt(r.slice(14,18),16))>>>8,n[7]=255&e,n[8]=(e=parseInt(r.slice(19,23),16))>>>8,n[9]=255&e,n[10]=(e=parseInt(r.slice(24,36),16))/1099511627776&255,n[11]=e/4294967296&255,n[12]=e>>>24&255,n[13]=e>>>16&255,n[14]=e>>>8&255,n[15]=255&e,n}function p(r,e,n){function t(r,t,o,a){if("string"==typeof r&&(r=function(r){r=unescape(encodeURIComponent(r));for(var e=[],n=0;n<r.length;++n)e.push(r.charCodeAt(n));return e}(r)),"string"==typeof t&&(t=v(t)),16!==t.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var i=new Uint8Array(16+r.length);if(i.set(t),i.set(r,t.length),(i=n(i))[6]=15&i[6]|e,i[8]=63&i[8]|128,o){a=a||0;for(var u=0;u<16;++u)o[a+u]=i[u];return o}return c(i)}try{t.name=r}catch(r){}return t.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",t.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",t}function h(r){return 14+(r+64>>>9<<4)+1}function y(r,e){var n=(65535&r)+(65535&e);return(r>>16)+(e>>16)+(n>>16)<<16|65535&n}function g(r,e,n,t,o,a){return y((i=y(y(e,r),y(t,a)))<<(u=o)|i>>>32-u,n);var i,u}function m(r,e,n,t,o,a,i){return g(e&n|~e&t,r,e,o,a,i)}function w(r,e,n,t,o,a,i){return g(e&t|n&~t,r,e,o,a,i)}function b(r,e,n,t,o,a,i){return g(e^n^t,r,e,o,a,i)}function A(r,e,n,t,o,a,i){return g(n^(e|~t),r,e,o,a,i)}var U=p("v3",48,(function(r){if("string"==typeof r){var e=unescape(encodeURIComponent(r));r=new Uint8Array(e.length);for(var n=0;n<e.length;++n)r[n]=e.charCodeAt(n)}return function(r){for(var e=[],n=32*r.length,t="0123456789abcdef",o=0;o<n;o+=8){var a=r[o>>5]>>>o%32&255,i=parseInt(t.charAt(a>>>4&15)+t.charAt(15&a),16);e.push(i)}return e}(function(r,e){r[e>>5]|=128<<e%32,r[h(e)-1]=e;for(var n=1732584193,t=-271733879,o=-1732584194,a=271733878,i=0;i<r.length;i+=16){var u=n,f=t,s=o,c=a;n=m(n,t,o,a,r[i],7,-680876936),a=m(a,n,t,o,r[i+1],12,-389564586),o=m(o,a,n,t,r[i+2],17,606105819),t=m(t,o,a,n,r[i+3],22,-1044525330),n=m(n,t,o,a,r[i+4],7,-176418897),a=m(a,n,t,o,r[i+5],12,1200080426),o=m(o,a,n,t,r[i+6],17,-1473231341),t=m(t,o,a,n,r[i+7],22,-45705983),n=m(n,t,o,a,r[i+8],7,1770035416),a=m(a,n,t,o,r[i+9],12,-1958414417),o=m(o,a,n,t,r[i+10],17,-42063),t=m(t,o,a,n,r[i+11],22,-1990404162),n=m(n,t,o,a,r[i+12],7,1804603682),a=m(a,n,t,o,r[i+13],12,-40341101),o=m(o,a,n,t,r[i+14],17,-1502002290),n=w(n,t=m(t,o,a,n,r[i+15],22,1236535329),o,a,r[i+1],5,-165796510),a=w(a,n,t,o,r[i+6],9,-1069501632),o=w(o,a,n,t,r[i+11],14,643717713),t=w(t,o,a,n,r[i],20,-373897302),n=w(n,t,o,a,r[i+5],5,-701558691),a=w(a,n,t,o,r[i+10],9,38016083),o=w(o,a,n,t,r[i+15],14,-660478335),t=w(t,o,a,n,r[i+4],20,-405537848),n=w(n,t,o,a,r[i+9],5,568446438),a=w(a,n,t,o,r[i+14],9,-1019803690),o=w(o,a,n,t,r[i+3],14,-187363961),t=w(t,o,a,n,r[i+8],20,1163531501),n=w(n,t,o,a,r[i+13],5,-1444681467),a=w(a,n,t,o,r[i+2],9,-51403784),o=w(o,a,n,t,r[i+7],14,1735328473),n=b(n,t=w(t,o,a,n,r[i+12],20,-1926607734),o,a,r[i+5],4,-378558),a=b(a,n,t,o,r[i+8],11,-2022574463),o=b(o,a,n,t,r[i+11],16,1839030562),t=b(t,o,a,n,r[i+14],23,-35309556),n=b(n,t,o,a,r[i+1],4,-1530992060),a=b(a,n,t,o,r[i+4],11,1272893353),o=b(o,a,n,t,r[i+7],16,-155497632),t=b(t,o,a,n,r[i+10],23,-1094730640),n=b(n,t,o,a,r[i+13],4,681279174),a=b(a,n,t,o,r[i],11,-358537222),o=b(o,a,n,t,r[i+3],16,-722521979),t=b(t,o,a,n,r[i+6],23,76029189),n=b(n,t,o,a,r[i+9],4,-640364487),a=b(a,n,t,o,r[i+12],11,-421815835),o=b(o,a,n,t,r[i+15],16,530742520),n=A(n,t=b(t,o,a,n,r[i+2],23,-995338651),o,a,r[i],6,-198630844),a=A(a,n,t,o,r[i+7],10,1126891415),o=A(o,a,n,t,r[i+14],15,-1416354905),t=A(t,o,a,n,r[i+5],21,-57434055),n=A(n,t,o,a,r[i+12],6,1700485571),a=A(a,n,t,o,r[i+3],10,-1894986606),o=A(o,a,n,t,r[i+10],15,-1051523),t=A(t,o,a,n,r[i+1],21,-2054922799),n=A(n,t,o,a,r[i+8],6,1873313359),a=A(a,n,t,o,r[i+15],10,-30611744),o=A(o,a,n,t,r[i+6],15,-1560198380),t=A(t,o,a,n,r[i+13],21,1309151649),n=A(n,t,o,a,r[i+4],6,-145523070),a=A(a,n,t,o,r[i+11],10,-1120210379),o=A(o,a,n,t,r[i+2],15,718787259),t=A(t,o,a,n,r[i+9],21,-343485551),n=y(n,u),t=y(t,f),o=y(o,s),a=y(a,c)}return[n,t,o,a]}(function(r){if(0===r.length)return[];for(var e=8*r.length,n=new Uint32Array(h(e)),t=0;t<e;t+=8)n[t>>5]|=(255&r[t/8])<<t%32;return n}(r),8*r.length))}));function I(r,e,n,t){switch(r){case 0:return e&n^~e&t;case 1:return e^n^t;case 2:return e&n^e&t^n&t;case 3:return e^n^t}}function C(r,e){return r<<e|r>>>32-e}var R=p("v5",80,(function(r){var e=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof r){var t=unescape(encodeURIComponent(r));r=[];for(var o=0;o<t.length;++o)r.push(t.charCodeAt(o))}else Array.isArray(r)||(r=Array.prototype.slice.call(r));r.push(128);for(var a=r.length/4+2,i=Math.ceil(a/16),u=new Array(i),f=0;f<i;++f){for(var s=new Uint32Array(16),c=0;c<16;++c)s[c]=r[64*f+4*c]<<24|r[64*f+4*c+1]<<16|r[64*f+4*c+2]<<8|r[64*f+4*c+3];u[f]=s}u[i-1][14]=8*(r.length-1)/Math.pow(2,32),u[i-1][14]=Math.floor(u[i-1][14]),u[i-1][15]=8*(r.length-1)&4294967295;for(var l=0;l<i;++l){for(var d=new Uint32Array(80),v=0;v<16;++v)d[v]=u[l][v];for(var p=16;p<80;++p)d[p]=C(d[p-3]^d[p-8]^d[p-14]^d[p-16],1);for(var h=n[0],y=n[1],g=n[2],m=n[3],w=n[4],b=0;b<80;++b){var A=Math.floor(b/20),U=C(h,5)+I(A,y,g,m)+w+e[A]+d[b]>>>0;w=m,m=g,g=C(y,30)>>>0,y=h,h=U}n[0]=n[0]+h>>>0,n[1]=n[1]+y>>>0,n[2]=n[2]+g>>>0,n[3]=n[3]+m>>>0,n[4]=n[4]+w>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]}));r.NIL="00000000-0000-0000-0000-000000000000",r.parse=v,r.stringify=c,r.v1=function(r,e,n){var o=e&&n||0,a=e||new Array(16),f=(r=r||{}).node||i,s=void 0!==r.clockseq?r.clockseq:u;if(null==f||null==s){var v=r.random||(r.rng||t)();null==f&&(f=i=[1|v[0],v[1],v[2],v[3],v[4],v[5]]),null==s&&(s=u=16383&(v[6]<<8|v[7]))}var p=void 0!==r.msecs?r.msecs:Date.now(),h=void 0!==r.nsecs?r.nsecs:d+1,y=p-l+(h-d)/1e4;if(y<0&&void 0===r.clockseq&&(s=s+1&16383),(y<0||p>l)&&void 0===r.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");l=p,d=h,u=s;var g=(1e4*(268435455&(p+=122192928e5))+h)%4294967296;a[o++]=g>>>24&255,a[o++]=g>>>16&255,a[o++]=g>>>8&255,a[o++]=255&g;var m=p/4294967296*1e4&268435455;a[o++]=m>>>8&255,a[o++]=255&m,a[o++]=m>>>24&15|16,a[o++]=m>>>16&255,a[o++]=s>>>8|128,a[o++]=255&s;for(var w=0;w<6;++w)a[o+w]=f[w];return e||c(a)},r.v3=U,r.v4=function(r,e,n){var o=(r=r||{}).random||(r.rng||t)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,e){n=n||0;for(var a=0;a<16;++a)e[n+a]=o[a];return e}return c(o)},r.v5=R,r.validate=a,r.version=function(r){if(!a(r))throw TypeError("Invalid UUID");return parseInt(r.substr(14,1),16)},Object.defineProperty(r,"__esModule",{value:!0})}));
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidNIL.min.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidNIL.min.js
deleted file mode 100644
index 30b28a7..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidNIL.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidNIL=n()}(this,(function(){"use strict";return"00000000-0000-0000-0000-000000000000"}));
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidParse.min.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidParse.min.js
deleted file mode 100644
index d48ea6a..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidParse.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidParse=n()}(this,(function(){"use strict";var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;return function(n){if(!function(n){return"string"==typeof n&&e.test(n)}(n))throw TypeError("Invalid UUID");var t,i=new Uint8Array(16);return i[0]=(t=parseInt(n.slice(0,8),16))>>>24,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i[4]=(t=parseInt(n.slice(9,13),16))>>>8,i[5]=255&t,i[6]=(t=parseInt(n.slice(14,18),16))>>>8,i[7]=255&t,i[8]=(t=parseInt(n.slice(19,23),16))>>>8,i[9]=255&t,i[10]=(t=parseInt(n.slice(24,36),16))/1099511627776&255,i[11]=t/4294967296&255,i[12]=t>>>24&255,i[13]=t>>>16&255,i[14]=t>>>8&255,i[15]=255&t,i}}));
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidStringify.min.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidStringify.min.js
deleted file mode 100644
index fd39adc..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidStringify.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidStringify=t()}(this,(function(){"use strict";var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function t(t){return"string"==typeof t&&e.test(t)}for(var i=[],n=0;n<256;++n)i.push((n+256).toString(16).substr(1));return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,f=(i[e[n+0]]+i[e[n+1]]+i[e[n+2]]+i[e[n+3]]+"-"+i[e[n+4]]+i[e[n+5]]+"-"+i[e[n+6]]+i[e[n+7]]+"-"+i[e[n+8]]+i[e[n+9]]+"-"+i[e[n+10]]+i[e[n+11]]+i[e[n+12]]+i[e[n+13]]+i[e[n+14]]+i[e[n+15]]).toLowerCase();if(!t(f))throw TypeError("Stringified UUID is invalid");return f}}));
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidValidate.min.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidValidate.min.js
deleted file mode 100644
index 378e5b9..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidValidate.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidValidate=t()}(this,(function(){"use strict";var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;return function(t){return"string"==typeof t&&e.test(t)}}));
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidVersion.min.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidVersion.min.js
deleted file mode 100644
index 274bb09..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidVersion.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidVersion=t()}(this,(function(){"use strict";var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;return function(t){if(!function(t){return"string"==typeof t&&e.test(t)}(t))throw TypeError("Invalid UUID");return parseInt(t.substr(14,1),16)}}));
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidv1.min.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidv1.min.js
deleted file mode 100644
index 2622889..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidv1.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidv1=o()}(this,(function(){"use strict";var e,o=new Uint8Array(16);function t(){if(!e&&!(e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return e(o)}var n=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function r(e){return"string"==typeof e&&n.test(e)}for(var i,u,s=[],a=0;a<256;++a)s.push((a+256).toString(16).substr(1));var d=0,f=0;return function(e,o,n){var a=o&&n||0,c=o||new Array(16),l=(e=e||{}).node||i,p=void 0!==e.clockseq?e.clockseq:u;if(null==l||null==p){var v=e.random||(e.rng||t)();null==l&&(l=i=[1|v[0],v[1],v[2],v[3],v[4],v[5]]),null==p&&(p=u=16383&(v[6]<<8|v[7]))}var y=void 0!==e.msecs?e.msecs:Date.now(),m=void 0!==e.nsecs?e.nsecs:f+1,g=y-d+(m-f)/1e4;if(g<0&&void 0===e.clockseq&&(p=p+1&16383),(g<0||y>d)&&void 0===e.nsecs&&(m=0),m>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");d=y,f=m,u=p;var h=(1e4*(268435455&(y+=122192928e5))+m)%4294967296;c[a++]=h>>>24&255,c[a++]=h>>>16&255,c[a++]=h>>>8&255,c[a++]=255&h;var w=y/4294967296*1e4&268435455;c[a++]=w>>>8&255,c[a++]=255&w,c[a++]=w>>>24&15|16,c[a++]=w>>>16&255,c[a++]=p>>>8|128,c[a++]=255&p;for(var b=0;b<6;++b)c[a+b]=l[b];return o||function(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=(s[e[o+0]]+s[e[o+1]]+s[e[o+2]]+s[e[o+3]]+"-"+s[e[o+4]]+s[e[o+5]]+"-"+s[e[o+6]]+s[e[o+7]]+"-"+s[e[o+8]]+s[e[o+9]]+"-"+s[e[o+10]]+s[e[o+11]]+s[e[o+12]]+s[e[o+13]]+s[e[o+14]]+s[e[o+15]]).toLowerCase();if(!r(t))throw TypeError("Stringified UUID is invalid");return t}(c)}}));
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidv3.min.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidv3.min.js
deleted file mode 100644
index 8d37b62..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidv3.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(n="undefined"!=typeof globalThis?globalThis:n||self).uuidv3=r()}(this,(function(){"use strict";var n=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function r(r){return"string"==typeof r&&n.test(r)}for(var e=[],t=0;t<256;++t)e.push((t+256).toString(16).substr(1));function i(n){return 14+(n+64>>>9<<4)+1}function o(n,r){var e=(65535&n)+(65535&r);return(n>>16)+(r>>16)+(e>>16)<<16|65535&e}function a(n,r,e,t,i,a){return o((f=o(o(r,n),o(t,a)))<<(u=i)|f>>>32-u,e);var f,u}function f(n,r,e,t,i,o,f){return a(r&e|~r&t,n,r,i,o,f)}function u(n,r,e,t,i,o,f){return a(r&t|e&~t,n,r,i,o,f)}function c(n,r,e,t,i,o,f){return a(r^e^t,n,r,i,o,f)}function s(n,r,e,t,i,o,f){return a(e^(r|~t),n,r,i,o,f)}return function(n,t,i){function o(n,o,a,f){if("string"==typeof n&&(n=function(n){n=unescape(encodeURIComponent(n));for(var r=[],e=0;e<n.length;++e)r.push(n.charCodeAt(e));return r}(n)),"string"==typeof o&&(o=function(n){if(!r(n))throw TypeError("Invalid UUID");var e,t=new Uint8Array(16);return t[0]=(e=parseInt(n.slice(0,8),16))>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=255&e,t[4]=(e=parseInt(n.slice(9,13),16))>>>8,t[5]=255&e,t[6]=(e=parseInt(n.slice(14,18),16))>>>8,t[7]=255&e,t[8]=(e=parseInt(n.slice(19,23),16))>>>8,t[9]=255&e,t[10]=(e=parseInt(n.slice(24,36),16))/1099511627776&255,t[11]=e/4294967296&255,t[12]=e>>>24&255,t[13]=e>>>16&255,t[14]=e>>>8&255,t[15]=255&e,t}(o)),16!==o.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var u=new Uint8Array(16+n.length);if(u.set(o),u.set(n,o.length),(u=i(u))[6]=15&u[6]|t,u[8]=63&u[8]|128,a){f=f||0;for(var c=0;c<16;++c)a[f+c]=u[c];return a}return function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=(e[n[t+0]]+e[n[t+1]]+e[n[t+2]]+e[n[t+3]]+"-"+e[n[t+4]]+e[n[t+5]]+"-"+e[n[t+6]]+e[n[t+7]]+"-"+e[n[t+8]]+e[n[t+9]]+"-"+e[n[t+10]]+e[n[t+11]]+e[n[t+12]]+e[n[t+13]]+e[n[t+14]]+e[n[t+15]]).toLowerCase();if(!r(i))throw TypeError("Stringified UUID is invalid");return i}(u)}try{o.name=n}catch(n){}return o.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",o.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",o}("v3",48,(function(n){if("string"==typeof n){var r=unescape(encodeURIComponent(n));n=new Uint8Array(r.length);for(var e=0;e<r.length;++e)n[e]=r.charCodeAt(e)}return function(n){for(var r=[],e=32*n.length,t="0123456789abcdef",i=0;i<e;i+=8){var o=n[i>>5]>>>i%32&255,a=parseInt(t.charAt(o>>>4&15)+t.charAt(15&o),16);r.push(a)}return r}(function(n,r){n[r>>5]|=128<<r%32,n[i(r)-1]=r;for(var e=1732584193,t=-271733879,a=-1732584194,l=271733878,d=0;d<n.length;d+=16){var p=e,h=t,v=a,g=l;e=f(e,t,a,l,n[d],7,-680876936),l=f(l,e,t,a,n[d+1],12,-389564586),a=f(a,l,e,t,n[d+2],17,606105819),t=f(t,a,l,e,n[d+3],22,-1044525330),e=f(e,t,a,l,n[d+4],7,-176418897),l=f(l,e,t,a,n[d+5],12,1200080426),a=f(a,l,e,t,n[d+6],17,-1473231341),t=f(t,a,l,e,n[d+7],22,-45705983),e=f(e,t,a,l,n[d+8],7,1770035416),l=f(l,e,t,a,n[d+9],12,-1958414417),a=f(a,l,e,t,n[d+10],17,-42063),t=f(t,a,l,e,n[d+11],22,-1990404162),e=f(e,t,a,l,n[d+12],7,1804603682),l=f(l,e,t,a,n[d+13],12,-40341101),a=f(a,l,e,t,n[d+14],17,-1502002290),e=u(e,t=f(t,a,l,e,n[d+15],22,1236535329),a,l,n[d+1],5,-165796510),l=u(l,e,t,a,n[d+6],9,-1069501632),a=u(a,l,e,t,n[d+11],14,643717713),t=u(t,a,l,e,n[d],20,-373897302),e=u(e,t,a,l,n[d+5],5,-701558691),l=u(l,e,t,a,n[d+10],9,38016083),a=u(a,l,e,t,n[d+15],14,-660478335),t=u(t,a,l,e,n[d+4],20,-405537848),e=u(e,t,a,l,n[d+9],5,568446438),l=u(l,e,t,a,n[d+14],9,-1019803690),a=u(a,l,e,t,n[d+3],14,-187363961),t=u(t,a,l,e,n[d+8],20,1163531501),e=u(e,t,a,l,n[d+13],5,-1444681467),l=u(l,e,t,a,n[d+2],9,-51403784),a=u(a,l,e,t,n[d+7],14,1735328473),e=c(e,t=u(t,a,l,e,n[d+12],20,-1926607734),a,l,n[d+5],4,-378558),l=c(l,e,t,a,n[d+8],11,-2022574463),a=c(a,l,e,t,n[d+11],16,1839030562),t=c(t,a,l,e,n[d+14],23,-35309556),e=c(e,t,a,l,n[d+1],4,-1530992060),l=c(l,e,t,a,n[d+4],11,1272893353),a=c(a,l,e,t,n[d+7],16,-155497632),t=c(t,a,l,e,n[d+10],23,-1094730640),e=c(e,t,a,l,n[d+13],4,681279174),l=c(l,e,t,a,n[d],11,-358537222),a=c(a,l,e,t,n[d+3],16,-722521979),t=c(t,a,l,e,n[d+6],23,76029189),e=c(e,t,a,l,n[d+9],4,-640364487),l=c(l,e,t,a,n[d+12],11,-421815835),a=c(a,l,e,t,n[d+15],16,530742520),e=s(e,t=c(t,a,l,e,n[d+2],23,-995338651),a,l,n[d],6,-198630844),l=s(l,e,t,a,n[d+7],10,1126891415),a=s(a,l,e,t,n[d+14],15,-1416354905),t=s(t,a,l,e,n[d+5],21,-57434055),e=s(e,t,a,l,n[d+12],6,1700485571),l=s(l,e,t,a,n[d+3],10,-1894986606),a=s(a,l,e,t,n[d+10],15,-1051523),t=s(t,a,l,e,n[d+1],21,-2054922799),e=s(e,t,a,l,n[d+8],6,1873313359),l=s(l,e,t,a,n[d+15],10,-30611744),a=s(a,l,e,t,n[d+6],15,-1560198380),t=s(t,a,l,e,n[d+13],21,1309151649),e=s(e,t,a,l,n[d+4],6,-145523070),l=s(l,e,t,a,n[d+11],10,-1120210379),a=s(a,l,e,t,n[d+2],15,718787259),t=s(t,a,l,e,n[d+9],21,-343485551),e=o(e,p),t=o(t,h),a=o(a,v),l=o(l,g)}return[e,t,a,l]}(function(n){if(0===n.length)return[];for(var r=8*n.length,e=new Uint32Array(i(r)),t=0;t<r;t+=8)e[t>>5]|=(255&n[t/8])<<t%32;return e}(n),8*n.length))}))}));
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidv4.min.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidv4.min.js
deleted file mode 100644
index e9df84b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidv4.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).uuidv4=e()}(this,(function(){"use strict";var t,e=new Uint8Array(16);function o(){if(!t&&!(t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return t(e)}var n=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function r(t){return"string"==typeof t&&n.test(t)}for(var i=[],u=0;u<256;++u)i.push((u+256).toString(16).substr(1));return function(t,e,n){var u=(t=t||{}).random||(t.rng||o)();if(u[6]=15&u[6]|64,u[8]=63&u[8]|128,e){n=n||0;for(var f=0;f<16;++f)e[n+f]=u[f];return e}return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=(i[t[e+0]]+i[t[e+1]]+i[t[e+2]]+i[t[e+3]]+"-"+i[t[e+4]]+i[t[e+5]]+"-"+i[t[e+6]]+i[t[e+7]]+"-"+i[t[e+8]]+i[t[e+9]]+"-"+i[t[e+10]]+i[t[e+11]]+i[t[e+12]]+i[t[e+13]]+i[t[e+14]]+i[t[e+15]]).toLowerCase();if(!r(o))throw TypeError("Stringified UUID is invalid");return o}(u)}}));
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidv5.min.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidv5.min.js
deleted file mode 100644
index ba6fc63..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/umd/uuidv5.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).uuidv5=e()}(this,(function(){"use strict";var r=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function e(e){return"string"==typeof e&&r.test(e)}for(var t=[],n=0;n<256;++n)t.push((n+256).toString(16).substr(1));function a(r,e,t,n){switch(r){case 0:return e&t^~e&n;case 1:return e^t^n;case 2:return e&t^e&n^t&n;case 3:return e^t^n}}function o(r,e){return r<<e|r>>>32-e}return function(r,n,a){function o(r,o,i,f){if("string"==typeof r&&(r=function(r){r=unescape(encodeURIComponent(r));for(var e=[],t=0;t<r.length;++t)e.push(r.charCodeAt(t));return e}(r)),"string"==typeof o&&(o=function(r){if(!e(r))throw TypeError("Invalid UUID");var t,n=new Uint8Array(16);return n[0]=(t=parseInt(r.slice(0,8),16))>>>24,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=255&t,n[4]=(t=parseInt(r.slice(9,13),16))>>>8,n[5]=255&t,n[6]=(t=parseInt(r.slice(14,18),16))>>>8,n[7]=255&t,n[8]=(t=parseInt(r.slice(19,23),16))>>>8,n[9]=255&t,n[10]=(t=parseInt(r.slice(24,36),16))/1099511627776&255,n[11]=t/4294967296&255,n[12]=t>>>24&255,n[13]=t>>>16&255,n[14]=t>>>8&255,n[15]=255&t,n}(o)),16!==o.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var s=new Uint8Array(16+r.length);if(s.set(o),s.set(r,o.length),(s=a(s))[6]=15&s[6]|n,s[8]=63&s[8]|128,i){f=f||0;for(var u=0;u<16;++u)i[f+u]=s[u];return i}return function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=(t[r[n+0]]+t[r[n+1]]+t[r[n+2]]+t[r[n+3]]+"-"+t[r[n+4]]+t[r[n+5]]+"-"+t[r[n+6]]+t[r[n+7]]+"-"+t[r[n+8]]+t[r[n+9]]+"-"+t[r[n+10]]+t[r[n+11]]+t[r[n+12]]+t[r[n+13]]+t[r[n+14]]+t[r[n+15]]).toLowerCase();if(!e(a))throw TypeError("Stringified UUID is invalid");return a}(s)}try{o.name=r}catch(r){}return o.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",o.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",o}("v5",80,(function(r){var e=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof r){var n=unescape(encodeURIComponent(r));r=[];for(var i=0;i<n.length;++i)r.push(n.charCodeAt(i))}else Array.isArray(r)||(r=Array.prototype.slice.call(r));r.push(128);for(var f=r.length/4+2,s=Math.ceil(f/16),u=new Array(s),c=0;c<s;++c){for(var l=new Uint32Array(16),p=0;p<16;++p)l[p]=r[64*c+4*p]<<24|r[64*c+4*p+1]<<16|r[64*c+4*p+2]<<8|r[64*c+4*p+3];u[c]=l}u[s-1][14]=8*(r.length-1)/Math.pow(2,32),u[s-1][14]=Math.floor(u[s-1][14]),u[s-1][15]=8*(r.length-1)&4294967295;for(var d=0;d<s;++d){for(var h=new Uint32Array(80),v=0;v<16;++v)h[v]=u[d][v];for(var y=16;y<80;++y)h[y]=o(h[y-3]^h[y-8]^h[y-14]^h[y-16],1);for(var g=t[0],b=t[1],w=t[2],U=t[3],A=t[4],I=0;I<80;++I){var m=Math.floor(I/20),C=o(g,5)+a(m,b,w,U)+A+e[m]+h[I]>>>0;A=U,U=w,w=o(b,30)>>>0,b=g,g=C}t[0]=t[0]+g>>>0,t[1]=t[1]+b>>>0,t[2]=t[2]+w>>>0,t[3]=t[3]+U>>>0,t[4]=t[4]+A>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,255&t[0],t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,255&t[1],t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,255&t[2],t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,255&t[3],t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,255&t[4]]}))}));
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/uuid-bin.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/uuid-bin.js
deleted file mode 100644
index 50a7a9f..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/uuid-bin.js
+++ /dev/null
@@ -1,85 +0,0 @@
-"use strict";
-
-var _assert = _interopRequireDefault(require("assert"));
-
-var _v = _interopRequireDefault(require("./v1.js"));
-
-var _v2 = _interopRequireDefault(require("./v3.js"));
-
-var _v3 = _interopRequireDefault(require("./v4.js"));
-
-var _v4 = _interopRequireDefault(require("./v5.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function usage() {
-  console.log('Usage:');
-  console.log('  uuid');
-  console.log('  uuid v1');
-  console.log('  uuid v3 <name> <namespace uuid>');
-  console.log('  uuid v4');
-  console.log('  uuid v5 <name> <namespace uuid>');
-  console.log('  uuid --help');
-  console.log('\nNote: <namespace uuid> may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC4122');
-}
-
-const args = process.argv.slice(2);
-
-if (args.indexOf('--help') >= 0) {
-  usage();
-  process.exit(0);
-}
-
-const version = args.shift() || 'v4';
-
-switch (version) {
-  case 'v1':
-    console.log((0, _v.default)());
-    break;
-
-  case 'v3':
-    {
-      const name = args.shift();
-      let namespace = args.shift();
-      (0, _assert.default)(name != null, 'v3 name not specified');
-      (0, _assert.default)(namespace != null, 'v3 namespace not specified');
-
-      if (namespace === 'URL') {
-        namespace = _v2.default.URL;
-      }
-
-      if (namespace === 'DNS') {
-        namespace = _v2.default.DNS;
-      }
-
-      console.log((0, _v2.default)(name, namespace));
-      break;
-    }
-
-  case 'v4':
-    console.log((0, _v3.default)());
-    break;
-
-  case 'v5':
-    {
-      const name = args.shift();
-      let namespace = args.shift();
-      (0, _assert.default)(name != null, 'v5 name not specified');
-      (0, _assert.default)(namespace != null, 'v5 namespace not specified');
-
-      if (namespace === 'URL') {
-        namespace = _v4.default.URL;
-      }
-
-      if (namespace === 'DNS') {
-        namespace = _v4.default.DNS;
-      }
-
-      console.log((0, _v4.default)(name, namespace));
-      break;
-    }
-
-  default:
-    usage();
-    process.exit(1);
-}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v1.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v1.js
deleted file mode 100644
index abb9b3d..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v1.js
+++ /dev/null
@@ -1,107 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _rng = _interopRequireDefault(require("./rng.js"));
-
-var _stringify = _interopRequireDefault(require("./stringify.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// **`v1()` - Generate time-based UUID**
-//
-// Inspired by https://github.com/LiosK/UUID.js
-// and http://docs.python.org/library/uuid.html
-let _nodeId;
-
-let _clockseq; // Previous uuid creation time
-
-
-let _lastMSecs = 0;
-let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details
-
-function v1(options, buf, offset) {
-  let i = buf && offset || 0;
-  const b = buf || new Array(16);
-  options = options || {};
-  let node = options.node || _nodeId;
-  let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not
-  // specified.  We do this lazily to minimize issues related to insufficient
-  // system entropy.  See #189
-
-  if (node == null || clockseq == null) {
-    const seedBytes = options.random || (options.rng || _rng.default)();
-
-    if (node == null) {
-      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
-      node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];
-    }
-
-    if (clockseq == null) {
-      // Per 4.2.2, randomize (14 bit) clockseq
-      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
-    }
-  } // UUID timestamps are 100 nano-second units since the Gregorian epoch,
-  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
-  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
-  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
-
-
-  let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock
-  // cycle to simulate higher resolution clock
-
-  let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)
-
-  const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression
-
-  if (dt < 0 && options.clockseq === undefined) {
-    clockseq = clockseq + 1 & 0x3fff;
-  } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
-  // time interval
-
-
-  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
-    nsecs = 0;
-  } // Per 4.2.1.2 Throw error if too many uuids are requested
-
-
-  if (nsecs >= 10000) {
-    throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");
-  }
-
-  _lastMSecs = msecs;
-  _lastNSecs = nsecs;
-  _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
-
-  msecs += 12219292800000; // `time_low`
-
-  const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
-  b[i++] = tl >>> 24 & 0xff;
-  b[i++] = tl >>> 16 & 0xff;
-  b[i++] = tl >>> 8 & 0xff;
-  b[i++] = tl & 0xff; // `time_mid`
-
-  const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;
-  b[i++] = tmh >>> 8 & 0xff;
-  b[i++] = tmh & 0xff; // `time_high_and_version`
-
-  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
-
-  b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
-
-  b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`
-
-  b[i++] = clockseq & 0xff; // `node`
-
-  for (let n = 0; n < 6; ++n) {
-    b[i + n] = node[n];
-  }
-
-  return buf || (0, _stringify.default)(b);
-}
-
-var _default = v1;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v3.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v3.js
deleted file mode 100644
index 6b47ff5..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v3.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _v = _interopRequireDefault(require("./v35.js"));
-
-var _md = _interopRequireDefault(require("./md5.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const v3 = (0, _v.default)('v3', 0x30, _md.default);
-var _default = v3;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v35.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v35.js
deleted file mode 100644
index f784c63..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v35.js
+++ /dev/null
@@ -1,78 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = _default;
-exports.URL = exports.DNS = void 0;
-
-var _stringify = _interopRequireDefault(require("./stringify.js"));
-
-var _parse = _interopRequireDefault(require("./parse.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function stringToBytes(str) {
-  str = unescape(encodeURIComponent(str)); // UTF8 escape
-
-  const bytes = [];
-
-  for (let i = 0; i < str.length; ++i) {
-    bytes.push(str.charCodeAt(i));
-  }
-
-  return bytes;
-}
-
-const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
-exports.DNS = DNS;
-const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
-exports.URL = URL;
-
-function _default(name, version, hashfunc) {
-  function generateUUID(value, namespace, buf, offset) {
-    if (typeof value === 'string') {
-      value = stringToBytes(value);
-    }
-
-    if (typeof namespace === 'string') {
-      namespace = (0, _parse.default)(namespace);
-    }
-
-    if (namespace.length !== 16) {
-      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');
-    } // Compute hash of namespace and value, Per 4.3
-    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =
-    // hashfunc([...namespace, ... value])`
-
-
-    let bytes = new Uint8Array(16 + value.length);
-    bytes.set(namespace);
-    bytes.set(value, namespace.length);
-    bytes = hashfunc(bytes);
-    bytes[6] = bytes[6] & 0x0f | version;
-    bytes[8] = bytes[8] & 0x3f | 0x80;
-
-    if (buf) {
-      offset = offset || 0;
-
-      for (let i = 0; i < 16; ++i) {
-        buf[offset + i] = bytes[i];
-      }
-
-      return buf;
-    }
-
-    return (0, _stringify.default)(bytes);
-  } // Function#name is not settable on some platforms (#270)
-
-
-  try {
-    generateUUID.name = name; // eslint-disable-next-line no-empty
-  } catch (err) {} // For CommonJS default export support
-
-
-  generateUUID.DNS = DNS;
-  generateUUID.URL = URL;
-  return generateUUID;
-}
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v4.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v4.js
deleted file mode 100644
index 838ce0b..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v4.js
+++ /dev/null
@@ -1,37 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _rng = _interopRequireDefault(require("./rng.js"));
-
-var _stringify = _interopRequireDefault(require("./stringify.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function v4(options, buf, offset) {
-  options = options || {};
-
-  const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
-
-
-  rnds[6] = rnds[6] & 0x0f | 0x40;
-  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
-
-  if (buf) {
-    offset = offset || 0;
-
-    for (let i = 0; i < 16; ++i) {
-      buf[offset + i] = rnds[i];
-    }
-
-    return buf;
-  }
-
-  return (0, _stringify.default)(rnds);
-}
-
-var _default = v4;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v5.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v5.js
deleted file mode 100644
index 99d615e..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/v5.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _v = _interopRequireDefault(require("./v35.js"));
-
-var _sha = _interopRequireDefault(require("./sha1.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const v5 = (0, _v.default)('v5', 0x50, _sha.default);
-var _default = v5;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/validate.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/validate.js
deleted file mode 100644
index fd05215..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/validate.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _regex = _interopRequireDefault(require("./regex.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function validate(uuid) {
-  return typeof uuid === 'string' && _regex.default.test(uuid);
-}
-
-var _default = validate;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/version.js b/actions/bcr-pr-review-notifier/node_modules/uuid/dist/version.js
deleted file mode 100644
index b72949c..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/dist/version.js
+++ /dev/null
@@ -1,21 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _validate = _interopRequireDefault(require("./validate.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function version(uuid) {
-  if (!(0, _validate.default)(uuid)) {
-    throw TypeError('Invalid UUID');
-  }
-
-  return parseInt(uuid.substr(14, 1), 16);
-}
-
-var _default = version;
-exports.default = _default;
\ No newline at end of file
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/package.json b/actions/bcr-pr-review-notifier/node_modules/uuid/package.json
deleted file mode 100644
index f0ab371..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/package.json
+++ /dev/null
@@ -1,135 +0,0 @@
-{
-  "name": "uuid",
-  "version": "8.3.2",
-  "description": "RFC4122 (v1, v4, and v5) UUIDs",
-  "commitlint": {
-    "extends": [
-      "@commitlint/config-conventional"
-    ]
-  },
-  "keywords": [
-    "uuid",
-    "guid",
-    "rfc4122"
-  ],
-  "license": "MIT",
-  "bin": {
-    "uuid": "./dist/bin/uuid"
-  },
-  "sideEffects": false,
-  "main": "./dist/index.js",
-  "exports": {
-    ".": {
-      "node": {
-        "module": "./dist/esm-node/index.js",
-        "require": "./dist/index.js",
-        "import": "./wrapper.mjs"
-      },
-      "default": "./dist/esm-browser/index.js"
-    },
-    "./package.json": "./package.json"
-  },
-  "module": "./dist/esm-node/index.js",
-  "browser": {
-    "./dist/md5.js": "./dist/md5-browser.js",
-    "./dist/rng.js": "./dist/rng-browser.js",
-    "./dist/sha1.js": "./dist/sha1-browser.js",
-    "./dist/esm-node/index.js": "./dist/esm-browser/index.js"
-  },
-  "files": [
-    "CHANGELOG.md",
-    "CONTRIBUTING.md",
-    "LICENSE.md",
-    "README.md",
-    "dist",
-    "wrapper.mjs"
-  ],
-  "devDependencies": {
-    "@babel/cli": "7.11.6",
-    "@babel/core": "7.11.6",
-    "@babel/preset-env": "7.11.5",
-    "@commitlint/cli": "11.0.0",
-    "@commitlint/config-conventional": "11.0.0",
-    "@rollup/plugin-node-resolve": "9.0.0",
-    "babel-eslint": "10.1.0",
-    "bundlewatch": "0.3.1",
-    "eslint": "7.10.0",
-    "eslint-config-prettier": "6.12.0",
-    "eslint-config-standard": "14.1.1",
-    "eslint-plugin-import": "2.22.1",
-    "eslint-plugin-node": "11.1.0",
-    "eslint-plugin-prettier": "3.1.4",
-    "eslint-plugin-promise": "4.2.1",
-    "eslint-plugin-standard": "4.0.1",
-    "husky": "4.3.0",
-    "jest": "25.5.4",
-    "lint-staged": "10.4.0",
-    "npm-run-all": "4.1.5",
-    "optional-dev-dependency": "2.0.1",
-    "prettier": "2.1.2",
-    "random-seed": "0.3.0",
-    "rollup": "2.28.2",
-    "rollup-plugin-terser": "7.0.2",
-    "runmd": "1.3.2",
-    "standard-version": "9.0.0"
-  },
-  "optionalDevDependencies": {
-    "@wdio/browserstack-service": "6.4.0",
-    "@wdio/cli": "6.4.0",
-    "@wdio/jasmine-framework": "6.4.0",
-    "@wdio/local-runner": "6.4.0",
-    "@wdio/spec-reporter": "6.4.0",
-    "@wdio/static-server-service": "6.4.0",
-    "@wdio/sync": "6.4.0"
-  },
-  "scripts": {
-    "examples:browser:webpack:build": "cd examples/browser-webpack && npm install && npm run build",
-    "examples:browser:rollup:build": "cd examples/browser-rollup && npm install && npm run build",
-    "examples:node:commonjs:test": "cd examples/node-commonjs && npm install && npm test",
-    "examples:node:esmodules:test": "cd examples/node-esmodules && npm install && npm test",
-    "lint": "npm run eslint:check && npm run prettier:check",
-    "eslint:check": "eslint src/ test/ examples/ *.js",
-    "eslint:fix": "eslint --fix src/ test/ examples/ *.js",
-    "pretest": "[ -n $CI ] || npm run build",
-    "test": "BABEL_ENV=commonjs node --throw-deprecation node_modules/.bin/jest test/unit/",
-    "pretest:browser": "optional-dev-dependency && npm run build && npm-run-all --parallel examples:browser:**",
-    "test:browser": "wdio run ./wdio.conf.js",
-    "pretest:node": "npm run build",
-    "test:node": "npm-run-all --parallel examples:node:**",
-    "test:pack": "./scripts/testpack.sh",
-    "pretest:benchmark": "npm run build",
-    "test:benchmark": "cd examples/benchmark && npm install && npm test",
-    "prettier:check": "prettier --ignore-path .prettierignore --check '**/*.{js,jsx,json,md}'",
-    "prettier:fix": "prettier --ignore-path .prettierignore --write '**/*.{js,jsx,json,md}'",
-    "bundlewatch": "npm run pretest:browser && bundlewatch --config bundlewatch.config.json",
-    "md": "runmd --watch --output=README.md README_js.md",
-    "docs": "( node --version | grep -q 'v12' ) && ( npm run build && runmd --output=README.md README_js.md )",
-    "docs:diff": "npm run docs && git diff --quiet README.md",
-    "build": "./scripts/build.sh",
-    "prepack": "npm run build",
-    "release": "standard-version --no-verify"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/uuidjs/uuid.git"
-  },
-  "husky": {
-    "hooks": {
-      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
-      "pre-commit": "lint-staged"
-    }
-  },
-  "lint-staged": {
-    "*.{js,jsx,json,md}": [
-      "prettier --write"
-    ],
-    "*.{js,jsx}": [
-      "eslint --fix"
-    ]
-  },
-  "standard-version": {
-    "scripts": {
-      "postchangelog": "prettier --write CHANGELOG.md"
-    }
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/uuid/wrapper.mjs b/actions/bcr-pr-review-notifier/node_modules/uuid/wrapper.mjs
deleted file mode 100644
index c31e9ce..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/uuid/wrapper.mjs
+++ /dev/null
@@ -1,10 +0,0 @@
-import uuid from './dist/index.js';
-export const v1 = uuid.v1;
-export const v3 = uuid.v3;
-export const v4 = uuid.v4;
-export const v5 = uuid.v5;
-export const NIL = uuid.NIL;
-export const version = uuid.version;
-export const validate = uuid.validate;
-export const stringify = uuid.stringify;
-export const parse = uuid.parse;
diff --git a/actions/bcr-pr-review-notifier/node_modules/wrappy/LICENSE b/actions/bcr-pr-review-notifier/node_modules/wrappy/LICENSE
deleted file mode 100644
index 19129e3..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/wrappy/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/actions/bcr-pr-review-notifier/node_modules/wrappy/README.md b/actions/bcr-pr-review-notifier/node_modules/wrappy/README.md
deleted file mode 100644
index 98eab25..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/wrappy/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# wrappy
-
-Callback wrapping utility
-
-## USAGE
-
-```javascript
-var wrappy = require("wrappy")
-
-// var wrapper = wrappy(wrapperFunction)
-
-// make sure a cb is called only once
-// See also: http://npm.im/once for this specific use case
-var once = wrappy(function (cb) {
-  var called = false
-  return function () {
-    if (called) return
-    called = true
-    return cb.apply(this, arguments)
-  }
-})
-
-function printBoo () {
-  console.log('boo')
-}
-// has some rando property
-printBoo.iAmBooPrinter = true
-
-var onlyPrintOnce = once(printBoo)
-
-onlyPrintOnce() // prints 'boo'
-onlyPrintOnce() // does nothing
-
-// random property is retained!
-assert.equal(onlyPrintOnce.iAmBooPrinter, true)
-```
diff --git a/actions/bcr-pr-review-notifier/node_modules/wrappy/package.json b/actions/bcr-pr-review-notifier/node_modules/wrappy/package.json
deleted file mode 100644
index 1307520..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/wrappy/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "name": "wrappy",
-  "version": "1.0.2",
-  "description": "Callback wrapping utility",
-  "main": "wrappy.js",
-  "files": [
-    "wrappy.js"
-  ],
-  "directories": {
-    "test": "test"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "tap": "^2.3.1"
-  },
-  "scripts": {
-    "test": "tap --coverage test/*.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/npm/wrappy"
-  },
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/npm/wrappy/issues"
-  },
-  "homepage": "https://github.com/npm/wrappy"
-}
diff --git a/actions/bcr-pr-review-notifier/node_modules/wrappy/wrappy.js b/actions/bcr-pr-review-notifier/node_modules/wrappy/wrappy.js
deleted file mode 100644
index bb7e7d6..0000000
--- a/actions/bcr-pr-review-notifier/node_modules/wrappy/wrappy.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Returns a wrapper function that returns a wrapped callback
-// The wrapper function should do some stuff, and return a
-// presumably different callback function.
-// This makes sure that own properties are retained, so that
-// decorations and such are not lost along the way.
-module.exports = wrappy
-function wrappy (fn, cb) {
-  if (fn && cb) return wrappy(fn)(cb)
-
-  if (typeof fn !== 'function')
-    throw new TypeError('need wrapper function')
-
-  Object.keys(fn).forEach(function (k) {
-    wrapper[k] = fn[k]
-  })
-
-  return wrapper
-
-  function wrapper() {
-    var args = new Array(arguments.length)
-    for (var i = 0; i < args.length; i++) {
-      args[i] = arguments[i]
-    }
-    var ret = fn.apply(this, args)
-    var cb = args[args.length-1]
-    if (typeof ret === 'function' && ret !== cb) {
-      Object.keys(cb).forEach(function (k) {
-        ret[k] = cb[k]
-      })
-    }
-    return ret
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/package-lock.json b/actions/bcr-pr-review-notifier/package-lock.json
deleted file mode 100644
index fe39f2d..0000000
--- a/actions/bcr-pr-review-notifier/package-lock.json
+++ /dev/null
@@ -1,227 +0,0 @@
-{
-  "name": "bcr-pr-review-notifier",
-  "version": "1.0.0",
-  "lockfileVersion": 3,
-  "requires": true,
-  "packages": {
-    "": {
-      "name": "bcr-pr-review-notifier",
-      "version": "1.0.0",
-      "license": "ISC",
-      "dependencies": {
-        "@actions/core": "^1.10.1",
-        "@actions/github": "^6.0.0"
-      }
-    },
-    "node_modules/@actions/core": {
-      "version": "1.10.1",
-      "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz",
-      "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==",
-      "dependencies": {
-        "@actions/http-client": "^2.0.1",
-        "uuid": "^8.3.2"
-      }
-    },
-    "node_modules/@actions/github": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz",
-      "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==",
-      "dependencies": {
-        "@actions/http-client": "^2.2.0",
-        "@octokit/core": "^5.0.1",
-        "@octokit/plugin-paginate-rest": "^9.0.0",
-        "@octokit/plugin-rest-endpoint-methods": "^10.0.0"
-      }
-    },
-    "node_modules/@actions/http-client": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.0.tgz",
-      "integrity": "sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==",
-      "dependencies": {
-        "tunnel": "^0.0.6",
-        "undici": "^5.25.4"
-      }
-    },
-    "node_modules/@fastify/busboy": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz",
-      "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==",
-      "engines": {
-        "node": ">=14"
-      }
-    },
-    "node_modules/@octokit/auth-token": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
-      "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/@octokit/core": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.1.0.tgz",
-      "integrity": "sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==",
-      "dependencies": {
-        "@octokit/auth-token": "^4.0.0",
-        "@octokit/graphql": "^7.0.0",
-        "@octokit/request": "^8.0.2",
-        "@octokit/request-error": "^5.0.0",
-        "@octokit/types": "^12.0.0",
-        "before-after-hook": "^2.2.0",
-        "universal-user-agent": "^6.0.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/@octokit/endpoint": {
-      "version": "9.0.4",
-      "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz",
-      "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==",
-      "dependencies": {
-        "@octokit/types": "^12.0.0",
-        "universal-user-agent": "^6.0.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/@octokit/graphql": {
-      "version": "7.0.2",
-      "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz",
-      "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==",
-      "dependencies": {
-        "@octokit/request": "^8.0.1",
-        "@octokit/types": "^12.0.0",
-        "universal-user-agent": "^6.0.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/@octokit/openapi-types": {
-      "version": "19.1.0",
-      "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz",
-      "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw=="
-    },
-    "node_modules/@octokit/plugin-paginate-rest": {
-      "version": "9.1.5",
-      "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz",
-      "integrity": "sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==",
-      "dependencies": {
-        "@octokit/types": "^12.4.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      },
-      "peerDependencies": {
-        "@octokit/core": ">=5"
-      }
-    },
-    "node_modules/@octokit/plugin-rest-endpoint-methods": {
-      "version": "10.2.0",
-      "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.2.0.tgz",
-      "integrity": "sha512-ePbgBMYtGoRNXDyKGvr9cyHjQ163PbwD0y1MkDJCpkO2YH4OeXX40c4wYHKikHGZcpGPbcRLuy0unPUuafco8Q==",
-      "dependencies": {
-        "@octokit/types": "^12.3.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      },
-      "peerDependencies": {
-        "@octokit/core": ">=5"
-      }
-    },
-    "node_modules/@octokit/request": {
-      "version": "8.1.6",
-      "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz",
-      "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==",
-      "dependencies": {
-        "@octokit/endpoint": "^9.0.0",
-        "@octokit/request-error": "^5.0.0",
-        "@octokit/types": "^12.0.0",
-        "universal-user-agent": "^6.0.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/@octokit/request-error": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz",
-      "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==",
-      "dependencies": {
-        "@octokit/types": "^12.0.0",
-        "deprecation": "^2.0.0",
-        "once": "^1.4.0"
-      },
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/@octokit/types": {
-      "version": "12.4.0",
-      "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.4.0.tgz",
-      "integrity": "sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==",
-      "dependencies": {
-        "@octokit/openapi-types": "^19.1.0"
-      }
-    },
-    "node_modules/before-after-hook": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
-      "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ=="
-    },
-    "node_modules/deprecation": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
-      "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
-    },
-    "node_modules/once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
-      "dependencies": {
-        "wrappy": "1"
-      }
-    },
-    "node_modules/tunnel": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
-      "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
-      "engines": {
-        "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
-      }
-    },
-    "node_modules/undici": {
-      "version": "5.28.2",
-      "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz",
-      "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==",
-      "dependencies": {
-        "@fastify/busboy": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=14.0"
-      }
-    },
-    "node_modules/universal-user-agent": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
-      "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ=="
-    },
-    "node_modules/uuid": {
-      "version": "8.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-      "bin": {
-        "uuid": "dist/bin/uuid"
-      }
-    },
-    "node_modules/wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
-    }
-  }
-}
diff --git a/actions/bcr-pr-review-notifier/package.json b/actions/bcr-pr-review-notifier/package.json
deleted file mode 100644
index 4ab9a0b..0000000
--- a/actions/bcr-pr-review-notifier/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "name": "bcr-pr-review-notifier",
-  "version": "1.0.0",
-  "description": "",
-  "main": "index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "author": "",
-  "license": "ISC",
-  "dependencies": {
-    "@actions/core": "^1.10.1",
-    "@actions/github": "^6.0.0"
-  }
-}
diff --git a/actions/bcr-pr-reviewer/action.yml b/actions/bcr-pr-reviewer/action.yml
new file mode 100644
index 0000000..5c57208
--- /dev/null
+++ b/actions/bcr-pr-reviewer/action.yml
@@ -0,0 +1,15 @@
+name: 'BCR PR Reviewer'
+description: 'Helps notify module maintainers and approve PRs of Bazel Central Registry.'
+inputs:
+  token:
+    description: 'The GitHub token'
+    required: false
+    default: ${{ github.token }}
+
+  action-type:
+    description: 'The type of action this reviewer should perform, valid values are: notify_maintainers, review_prs, dismiss_approvals'
+    required: true
+
+runs:
+  using: 'node20'
+  main: 'index.js'
diff --git a/actions/bcr-pr-reviewer/index.js b/actions/bcr-pr-reviewer/index.js
new file mode 100644
index 0000000..278a7c7
--- /dev/null
+++ b/actions/bcr-pr-reviewer/index.js
@@ -0,0 +1,389 @@
+const { getInput, setFailed } = require('@actions/core');
+const { context, getOctokit } = require("@actions/github");
+
+async function fetchAllModifiedModules(octokit, owner, repo, prNumber) {
+  let page = 1;
+  const perPage = 100; // GitHub's max per_page value
+  let accumulate = new Set();
+  let response;
+
+  do {
+    response = await octokit.rest.pulls.listFiles({
+      owner,
+      repo,
+      pull_number: prNumber,
+      per_page: perPage,
+      page,
+    });
+
+    response.data.forEach(file => {
+      const match = file.filename.match(/^modules\/([^\/]+)\//);
+      if (match) {
+        accumulate.add(match[1]);
+      }
+    });
+
+    page++;
+  } while (response.data.length === perPage);
+
+  return accumulate;
+}
+
+async function generateMaintainersMap(octokit, owner, repo, modifiedModules) {
+  const maintainersMap = new Map(); // Map: maintainer GitHub username -> Set of module they maintain
+  const modulesWithoutGithubMaintainers = new Set(); // Set of module names without module maintainers
+  for (const moduleName of modifiedModules) {
+    console.log(`Fetching metadata for module: ${moduleName}`);
+    try {
+      const { data: metadataContent } = await octokit.rest.repos.getContent({
+        owner,
+        repo,
+        path: `modules/${moduleName}/metadata.json`,
+        ref: 'main',
+      });
+
+      const metadata = JSON.parse(Buffer.from(metadataContent.content, 'base64').toString('utf-8'));
+      let hasGithubMaintainer = false;
+      metadata.maintainers.forEach(maintainer => {
+        if (maintainer.github) { // Check if the github field is specified
+          hasGithubMaintainer = true;
+          if (!maintainersMap.has(maintainer.github)) {
+            maintainersMap.set(maintainer.github, new Set());
+          }
+          maintainersMap.get(maintainer.github).add(moduleName);
+        }
+      });
+
+      if (!hasGithubMaintainer) {
+        modulesWithoutGithubMaintainers.add(moduleName);
+      }
+    } catch (error) {
+      if (error.status === 404) {
+        console.log(`Module ${moduleName} does not have a metadata.json file on the main branch.`);
+        modulesWithoutGithubMaintainers.add(moduleName);
+      } else {
+        console.error(`Error processing module ${moduleName}: ${error}`);
+        setFailed(`Failed to notify maintainers for module ${moduleName}`);
+      }
+    }
+  }
+  return [maintainersMap, modulesWithoutGithubMaintainers];
+}
+
+async function notifyMaintainers(octokit, owner, repo, prNumber, maintainersMap) {
+  // For the list of maintainers who maintain the same set of modules, we want to group them together
+  const moduleListToMaintainers = new Map(); // Map: Serialized Module List -> Maintainers
+
+  // Populate moduleListToMaintainers based on maintainersMap
+  for (const [maintainer, modules] of maintainersMap.entries()) {
+    const modulesList = Array.from(modules).sort().join(', '); // Serialize module list
+    if (!moduleListToMaintainers.has(modulesList)) {
+      moduleListToMaintainers.set(modulesList, new Set());
+    }
+    moduleListToMaintainers.get(modulesList).add(`@${maintainer}`);
+  }
+
+  // Notify maintainers based on grouped module lists
+  const prAuthor = context.payload.pull_request.user.login;
+  for (const [modulesList, maintainers] of moduleListToMaintainers.entries()) {
+    // Skip notifying the PR author if they are one of the module maintainers
+    const maintainersCopy = new Set(maintainers);
+    if (maintainersCopy.has(`@${prAuthor}`)) {
+      console.log(`Skipping notifying PR author ${prAuthor} from the maintainers list for modules: ${modulesList}`);
+      maintainersCopy.delete(`@${prAuthor}`);
+    }
+    if (maintainersCopy.size === 0) {
+      continue;
+    }
+    const maintainersList = Array.from(maintainersCopy).join(', ');
+    console.log(`Notifying ${maintainersList} for modules: ${modulesList}`);
+    const commentBody = `Hello ${maintainersList}, modules you maintain (${modulesList}) have been updated in this PR. Please review the changes.`;
+    await postComment(octokit, owner, repo, prNumber, commentBody);
+  }
+}
+
+async function postComment(octokit, owner, repo, prNumber, body) {
+  // Check if the same comment already exists for the PR in the past two weeks
+  const existingComments = await octokit.rest.issues.listComments({
+    owner,
+    repo,
+    issue_number: prNumber,
+    since: new Date(Date.now() - 14 * 24 * 60 * 60 * 1000).toISOString(), // Two weeks ago
+  });
+
+  const commentExists = existingComments.data.some(comment => comment.body === body);
+  if (commentExists) {
+    console.log('Skipping comment as it\'s already posted for the PR within the past two weeks.');
+    return;
+  }
+
+  const comment = {
+    owner,
+    repo,
+    issue_number: prNumber,
+    body,
+  };
+  await octokit.rest.issues.createComment(comment).catch(error => {
+    console.error(`Failed to post comment: ${error}`);
+    setFailed(`Failed to notify maintainers: ${error}`);
+  });
+}
+
+async function getPrApprovers(octokit, owner, repo, prNumber) {
+  // Get the commits for the PR
+  const commits = await octokit.rest.pulls.listCommits({
+    owner,
+    repo,
+    pull_number: prNumber,
+  });
+
+  // Filter out the merge commits whose parents length is larger than 1
+  const nonMergeCommits = commits.data.filter(commit => commit.parents.length === 1);
+
+  // Get the latest commit submitted time
+  const latestCommit = nonMergeCommits[nonMergeCommits.length - 1];
+  const latestCommitTime = new Date(latestCommit.commit.author.date);
+  console.log(`Latest commit: ${latestCommit.sha}`);
+  console.log(`Latest commit time: ${latestCommitTime}`);
+
+  // Get review events for the PR
+  const reviewEvents = await octokit.rest.pulls.listReviews({
+    owner,
+    repo,
+    pull_number: prNumber,
+  });
+
+  // For each reviewer, collect their latest review that are newer than the latest non-merge commit
+  // Key: reviewer, Value: review
+  const latestReviews = new Map();
+  reviewEvents.data.forEach(review => {
+    if (new Date(review.submitted_at) < latestCommitTime) {
+      return;
+    }
+
+    const reviewer = review.user.login;
+
+    if (!latestReviews.has(reviewer)) {
+      latestReviews.set(reviewer, review);
+      return;
+    }
+
+    existingSubmittedAt = new Date(latestReviews.get(reviewer).submitted_at);
+    submittedAt = new Date(review.submitted_at);
+    if (submittedAt > existingSubmittedAt) {
+      latestReviews.set(reviewer, review);
+    }
+  });
+
+  // Print out the latest valid reviews and collect approvers
+  console.log(`Latest Reviews:`);
+  const approvers = new Set();
+  latestReviews.forEach(review => {
+    console.log(`- Reviewer: ${review.user.login}, State: ${review.state}, Submitted At: ${review.submitted_at}`);
+    if (review.state === 'APPROVED') {
+      approvers.add(review.user.login);
+    }
+  });
+
+  // Print out the approvers
+  console.log(`Approvers: ${Array.from(approvers).join(', ')}`);
+
+  return approvers;
+}
+
+async function checkIfAllModifiedModulesApproved(modifiedModules, maintainersMap, approvers) {
+  let allModulesApproved = true;
+  const modulesNotApproved = [];
+
+  for (const module of modifiedModules) {
+    let moduleApproved = false;
+    for (const [maintainer, maintainedModules] of maintainersMap.entries()) {
+      if (maintainedModules.has(module) && approvers.has(maintainer)) {
+        moduleApproved = true;
+        console.log(`Module '${module}' has maintainers' approval from '${maintainer}'.`);
+        break;
+      }
+    }
+    if (!moduleApproved) {
+      allModulesApproved = false;
+      modulesNotApproved.push(module);
+      console.log(`Module '${module}' does not have maintainers' approval.`);
+    }
+  }
+
+
+  if (!allModulesApproved) {
+    console.log(`Cannot auto-merge this PR, the following modules do not have maintainers' approval: ${modulesNotApproved.join(', ')}`);
+  } else {
+    console.log('All modified modules have maintainers\' approval');
+  }
+
+  return allModulesApproved;
+}
+
+async function reviewPR(octokit, owner, repo, prNumber) {
+
+  console.log('\n');
+  console.log(`Processing PR #${prNumber}`);
+
+  // Fetch modified modules
+  const modifiedModules = await fetchAllModifiedModules(octokit, owner, repo, prNumber);
+  console.log(`Modified modules: ${Array.from(modifiedModules).join(', ')}`);
+  if (modifiedModules.size === 0) {
+    console.log('No modules are modified in this PR');
+    return;
+  }
+
+  // Figure out maintainers for each modified module
+  const [ maintainersMap, modulesWithoutGithubMaintainers ] = await generateMaintainersMap(octokit, owner, repo, modifiedModules);
+  console.log('Maintainers Map:');
+  for (const [maintainer, maintainedModules] of maintainersMap.entries()) {
+    console.log(`- Maintainer: ${maintainer}, Modules: ${Array.from(maintainedModules).join(', ')}`);
+  }
+
+  // If modulesWithoutGithubMaintainers is not empty, then return
+  if (modulesWithoutGithubMaintainers.size > 0) {
+    console.log(`Cannot auto-merge this PR with maintainers approval because the following modules do not have maintainers with GitHub usernames: ${Array.from(modulesWithoutGithubMaintainers).join(', ')}`);
+    return;
+  }
+
+  // Get the approvers for the PR
+  const approvers = await getPrApprovers(octokit, owner, repo, prNumber);
+
+  // Verify if all modified modules have at least one maintainer's approval
+  const allModulesApproved = await checkIfAllModifiedModulesApproved(modifiedModules, maintainersMap, approvers);
+
+  const myLogin = context.actor;
+
+  // Approve the PR if not previously approved and all modules are approved
+  if (allModulesApproved) {
+    if (!approvers.has(myLogin)) {
+      console.log('Approving the PR');
+      await octokit.rest.pulls.createReview({
+        owner,
+        repo,
+        pull_number: prNumber,
+        event: 'APPROVE',
+        body: 'Hello @bazelbuild/bcr-maintainers, all modules in this PR have been approved by their maintainers. Please take a final look to merge this PR.',
+      });
+    }
+
+    // TODO: Enable the following when it's safe to do so.
+    // // Try to merge the PR
+    // try {
+    //   await octokit.rest.pulls.merge({
+    //     owner,
+    //     repo,
+    //     pull_number: prNumber,
+    //   });
+    // } catch (error) {
+    //   console.error('Failed to merge PR:', error.message);
+    //   console.error('This PR is not mergeable probably due to failed presubmits.');
+    // }
+  }
+
+  // Discard previous approvals if not all modules are approved
+  if (!allModulesApproved && approvers.has(myLogin)) {
+    console.log('Discarding previous approval');
+    await octokit.rest.pulls.createReview({
+      owner,
+      repo,
+      pull_number: prNumber,
+      event: 'REQUEST_CHANGES',
+      body: 'Require module maintainers\' approval.',
+    });
+  }
+}
+
+async function runNotifier(octokit) {
+  const prNumber = context.issue.number;
+  if (!prNumber) {
+    console.log('Could not get pull request number from context, exiting');
+    return;
+  }
+  console.log(`Processing PR #${prNumber}`);
+
+  const { owner, repo } = context.repo;
+
+  // Fetch modified modules
+  const modifiedModules = await fetchAllModifiedModules(octokit, owner, repo, prNumber);
+  console.log(`Modified modules: ${Array.from(modifiedModules).join(', ')}`);
+
+  // Figure out maintainers for each modified module
+  const [ maintainersMap, modulesWithoutGithubMaintainers ] = await generateMaintainersMap(octokit, owner, repo, modifiedModules);
+
+  // Notify maintainers for modules with module maintainers
+  await notifyMaintainers(octokit, owner, repo, prNumber, maintainersMap);
+
+  // Notify BCR maintainers for modules without module maintainers
+  if (modulesWithoutGithubMaintainers.size > 0) {
+    const modulesList = Array.from(modulesWithoutGithubMaintainers).join(', ');
+    console.log(`Notifying @bazelbuild/bcr-maintainers for modules: ${modulesList}`);
+    await postComment(octokit, owner, repo, prNumber, `Hello @bazelbuild/bcr-maintainers, modules without existing maintainers (${modulesList}) have been updated in this PR. Please review the changes.`);
+  }
+}
+
+async function runPrReviewer(octokit) {
+  const { owner, repo } = context.repo;
+
+  // Get all open PRs from the repo
+  const prs = await octokit.rest.pulls.list({
+    owner,
+    repo,
+    state: 'open',
+  });
+
+  // Review each PR
+  for (const pr of prs.data) {
+    await reviewPR(octokit, owner, repo, pr.number);
+  }
+}
+
+async function runDismissApproval(octokit) {
+  const prNumber = context.issue.number;
+  if (!prNumber) {
+    console.log('Could not get pull request number from context, exiting');
+    return;
+  }
+  console.log(`Processing PR #${prNumber}`);
+
+  const reviews = await octokit.rest.pulls.listReviews({
+    owner: context.repo.owner,
+    repo: context.repo.repo,
+    pull_number: prNumber,
+  });
+
+  for (const review of reviews.data) {
+    if (review.state === 'APPROVED') {
+      console.log(`Dismiss approval from ${review.user.login}`);
+      await octokit.rest.pulls.dismissReview({
+        owner: context.repo.owner,
+        repo: context.repo.repo,
+        pull_number: prNumber,
+        review_id: review.id,
+        message: 'Require module maintainers\' approval for newly pushed changes.',
+      });
+    }
+  }
+}
+
+async function run() {
+  const action_type = getInput("action-type");
+  const token = getInput("token");
+  const octokit = getOctokit(token);
+
+  if (action_type === "notify_maintainers") {
+    await runNotifier(octokit);
+  } else if (action_type === "review_prs") {
+    await runPrReviewer(octokit);
+  } else if (action_type === "dismiss_approvals") {
+    await runDismissApproval(octokit);
+  } else {
+    console.log(`Unknown action type: ${action_type}`);
+  }
+}
+
+run().catch(err => {
+  console.error(err);
+  setFailed(err.message);
+});
diff --git a/actions/bcr-pr-review-approver/node_modules/.bin/uuid b/actions/bcr-pr-reviewer/node_modules/.bin/uuid
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/.bin/uuid
rename to actions/bcr-pr-reviewer/node_modules/.bin/uuid
diff --git a/actions/bcr-pr-review-approver/node_modules/.package-lock.json b/actions/bcr-pr-reviewer/node_modules/.package-lock.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/.package-lock.json
rename to actions/bcr-pr-reviewer/node_modules/.package-lock.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/LICENSE.md b/actions/bcr-pr-reviewer/node_modules/@actions/core/LICENSE.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/LICENSE.md
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/LICENSE.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/README.md b/actions/bcr-pr-reviewer/node_modules/@actions/core/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/README.md
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/command.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/command.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/command.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/command.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/command.js b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/command.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/command.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/command.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/command.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/command.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/command.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/command.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/core.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/core.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/core.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/core.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/core.js b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/core.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/core.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/core.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/core.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/core.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/core.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/core.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/file-command.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/file-command.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/file-command.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/file-command.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/file-command.js b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/file-command.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/file-command.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/file-command.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/file-command.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/file-command.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/file-command.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/file-command.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/oidc-utils.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/oidc-utils.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/oidc-utils.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/oidc-utils.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/oidc-utils.js b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/oidc-utils.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/oidc-utils.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/oidc-utils.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/oidc-utils.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/oidc-utils.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/oidc-utils.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/oidc-utils.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/path-utils.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/path-utils.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/path-utils.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/path-utils.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/path-utils.js b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/path-utils.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/path-utils.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/path-utils.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/path-utils.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/path-utils.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/path-utils.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/path-utils.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/summary.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/summary.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/summary.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/summary.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/summary.js b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/summary.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/summary.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/summary.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/summary.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/summary.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/summary.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/summary.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/utils.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/utils.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/utils.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/utils.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/utils.js b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/utils.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/utils.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/utils.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/lib/utils.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/core/lib/utils.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/lib/utils.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/lib/utils.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/core/package.json b/actions/bcr-pr-reviewer/node_modules/@actions/core/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/core/package.json
rename to actions/bcr-pr-reviewer/node_modules/@actions/core/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/LICENSE.md b/actions/bcr-pr-reviewer/node_modules/@actions/github/LICENSE.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/LICENSE.md
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/LICENSE.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/README.md b/actions/bcr-pr-reviewer/node_modules/@actions/github/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/README.md
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/context.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/context.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/context.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/context.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/context.js b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/context.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/context.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/context.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/context.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/context.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/context.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/context.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/github.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/github.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/github.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/github.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/github.js b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/github.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/github.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/github.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/github.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/github.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/github.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/github.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/interfaces.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/interfaces.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/interfaces.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/interfaces.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/interfaces.js b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/interfaces.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/interfaces.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/interfaces.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/interfaces.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/interfaces.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/interfaces.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/interfaces.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/internal/utils.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/internal/utils.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/internal/utils.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/internal/utils.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/internal/utils.js b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/internal/utils.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/internal/utils.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/internal/utils.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/internal/utils.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/internal/utils.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/internal/utils.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/internal/utils.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/utils.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/utils.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/utils.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/utils.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/utils.js b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/utils.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/utils.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/utils.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/lib/utils.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/github/lib/utils.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/lib/utils.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/lib/utils.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/github/package.json b/actions/bcr-pr-reviewer/node_modules/@actions/github/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/github/package.json
rename to actions/bcr-pr-reviewer/node_modules/@actions/github/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/LICENSE b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/README.md b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/README.md
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/auth.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/auth.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/auth.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/auth.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/auth.js b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/auth.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/auth.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/auth.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/auth.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/auth.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/auth.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/auth.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/index.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/index.js b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/index.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/index.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/interfaces.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/interfaces.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/interfaces.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/interfaces.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/interfaces.js b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/interfaces.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/interfaces.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/interfaces.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/interfaces.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/interfaces.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/interfaces.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/interfaces.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/proxy.d.ts b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/proxy.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/proxy.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/proxy.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/proxy.js b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/proxy.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/proxy.js
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/proxy.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/proxy.js.map b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/proxy.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/lib/proxy.js.map
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/lib/proxy.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@actions/http-client/package.json b/actions/bcr-pr-reviewer/node_modules/@actions/http-client/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@actions/http-client/package.json
rename to actions/bcr-pr-reviewer/node_modules/@actions/http-client/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/LICENSE b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/README.md b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/README.md
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/deps/dicer/LICENSE b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/deps/dicer/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/deps/dicer/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/deps/dicer/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/deps/dicer/lib/dicer.d.ts b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/deps/dicer/lib/dicer.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/deps/dicer/lib/dicer.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/deps/dicer/lib/dicer.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/main.d.ts b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/main.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/main.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/main.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/main.js b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/main.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/main.js
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/main.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/types/multipart.js b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/types/multipart.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/types/multipart.js
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/types/multipart.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/types/urlencoded.js b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/types/urlencoded.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/types/urlencoded.js
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/types/urlencoded.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/utils/Decoder.js b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/utils/Decoder.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/utils/Decoder.js
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/utils/Decoder.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/utils/basename.js b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/utils/basename.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/utils/basename.js
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/utils/basename.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/utils/decodeText.js b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/utils/decodeText.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/utils/decodeText.js
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/utils/decodeText.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/utils/getLimit.js b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/utils/getLimit.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/utils/getLimit.js
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/utils/getLimit.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/utils/parseParams.js b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/utils/parseParams.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/lib/utils/parseParams.js
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/lib/utils/parseParams.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@fastify/busboy/package.json b/actions/bcr-pr-reviewer/node_modules/@fastify/busboy/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@fastify/busboy/package.json
rename to actions/bcr-pr-reviewer/node_modules/@fastify/busboy/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/LICENSE b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/README.md b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/README.md
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-node/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-node/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-node/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-node/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-node/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-node/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-node/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-node/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-src/auth.js b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-src/auth.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-src/auth.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-src/auth.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-src/hook.js b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-src/hook.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-src/hook.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-src/hook.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-src/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-src/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-src/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-src/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-types/auth.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-types/auth.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-types/auth.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-types/auth.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-types/hook.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-types/hook.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-types/hook.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-types/hook.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-types/index.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-types/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-types/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-types/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-types/types.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-types/types.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-types/types.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-types/types.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-web/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-web/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-web/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-web/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-web/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-web/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/dist-web/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/dist-web/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/package.json b/actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/auth-token/package.json
rename to actions/bcr-pr-reviewer/node_modules/@octokit/auth-token/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/core/LICENSE b/actions/bcr-pr-reviewer/node_modules/@octokit/core/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/core/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@octokit/core/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/core/README.md b/actions/bcr-pr-reviewer/node_modules/@octokit/core/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/core/README.md
rename to actions/bcr-pr-reviewer/node_modules/@octokit/core/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-node/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-node/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-node/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-node/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-node/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-node/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-node/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-node/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-src/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-src/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-src/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-src/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-src/version.js b/actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-src/version.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-src/version.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-src/version.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-types/index.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-types/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-types/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-types/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-types/types.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-types/types.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-types/types.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-types/types.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-types/version.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-types/version.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-types/version.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-types/version.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-web/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-web/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-web/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-web/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-web/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-web/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/core/dist-web/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/core/dist-web/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/core/package.json b/actions/bcr-pr-reviewer/node_modules/@octokit/core/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/core/package.json
rename to actions/bcr-pr-reviewer/node_modules/@octokit/core/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/LICENSE b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/README.md b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/README.md
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-node/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-node/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-node/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-node/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-node/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-node/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-node/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-node/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/defaults.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/defaults.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/defaults.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/defaults.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/merge.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/merge.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/merge.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/merge.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/parse.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/parse.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/parse.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/parse.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/omit.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/omit.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/omit.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/omit.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/url-template.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/url-template.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/util/url-template.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/util/url-template.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/version.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/version.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/version.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/version.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/with-defaults.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/with-defaults.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-src/with-defaults.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-src/with-defaults.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/defaults.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/defaults.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/defaults.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/defaults.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/index.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/merge.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/merge.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/merge.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/merge.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/parse.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/parse.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/parse.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/parse.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/version.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/version.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/version.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/version.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-web/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-web/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-web/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-web/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-web/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-web/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/dist-web/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/dist-web/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/package.json b/actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/endpoint/package.json
rename to actions/bcr-pr-reviewer/node_modules/@octokit/endpoint/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/LICENSE b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/README.md b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/README.md
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-node/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-node/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-node/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-node/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-node/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-node/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-node/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-node/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-src/error.js b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-src/error.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-src/error.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-src/error.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-src/graphql.js b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-src/graphql.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-src/graphql.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-src/graphql.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-src/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-src/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-src/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-src/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-src/version.js b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-src/version.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-src/version.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-src/version.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-src/with-defaults.js b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-src/with-defaults.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-src/with-defaults.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-src/with-defaults.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-types/error.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-types/error.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-types/error.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-types/error.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-types/graphql.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-types/graphql.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-types/graphql.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-types/graphql.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-types/index.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-types/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-types/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-types/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-types/types.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-types/types.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-types/types.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-types/types.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-types/version.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-types/version.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-types/version.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-types/version.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-web/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-web/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-web/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-web/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-web/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-web/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/dist-web/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/dist-web/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/graphql/package.json b/actions/bcr-pr-reviewer/node_modules/@octokit/graphql/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/graphql/package.json
rename to actions/bcr-pr-reviewer/node_modules/@octokit/graphql/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/openapi-types/LICENSE b/actions/bcr-pr-reviewer/node_modules/@octokit/openapi-types/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/openapi-types/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@octokit/openapi-types/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/openapi-types/README.md b/actions/bcr-pr-reviewer/node_modules/@octokit/openapi-types/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/openapi-types/README.md
rename to actions/bcr-pr-reviewer/node_modules/@octokit/openapi-types/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/openapi-types/package.json b/actions/bcr-pr-reviewer/node_modules/@octokit/openapi-types/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/openapi-types/package.json
rename to actions/bcr-pr-reviewer/node_modules/@octokit/openapi-types/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/openapi-types/types.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/openapi-types/types.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/openapi-types/types.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/openapi-types/types.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/LICENSE b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/README.md b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/README.md
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/package.json b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-paginate-rest/package.json
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-paginate-rest/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/README.md b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/README.md
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/package.json b/actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/plugin-rest-endpoint-methods/package.json
rename to actions/bcr-pr-reviewer/node_modules/@octokit/plugin-rest-endpoint-methods/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request-error/LICENSE b/actions/bcr-pr-reviewer/node_modules/@octokit/request-error/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request-error/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request-error/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request-error/README.md b/actions/bcr-pr-reviewer/node_modules/@octokit/request-error/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request-error/README.md
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request-error/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-node/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-node/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-node/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-node/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-node/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-node/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-node/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-node/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-src/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-src/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-src/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-src/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-types/index.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-types/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-types/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-types/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-types/types.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-types/types.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-types/types.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-types/types.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-web/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-web/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-web/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-web/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-web/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-web/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request-error/dist-web/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request-error/dist-web/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request-error/package.json b/actions/bcr-pr-reviewer/node_modules/@octokit/request-error/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request-error/package.json
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request-error/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/LICENSE b/actions/bcr-pr-reviewer/node_modules/@octokit/request/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/README.md b/actions/bcr-pr-reviewer/node_modules/@octokit/request/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/README.md
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-node/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-node/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-node/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-node/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-node/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-node/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-node/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-node/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-src/fetch-wrapper.js b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-src/fetch-wrapper.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-src/fetch-wrapper.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-src/fetch-wrapper.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-src/get-buffer-response.js b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-src/get-buffer-response.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-src/get-buffer-response.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-src/get-buffer-response.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-src/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-src/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-src/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-src/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-src/is-plain-object.js b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-src/is-plain-object.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-src/is-plain-object.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-src/is-plain-object.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-src/version.js b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-src/version.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-src/version.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-src/version.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-src/with-defaults.js b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-src/with-defaults.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-src/with-defaults.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-src/with-defaults.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-types/index.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-types/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-types/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-types/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-types/is-plain-object.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-types/is-plain-object.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-types/is-plain-object.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-types/is-plain-object.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-types/version.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-types/version.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-types/version.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-types/version.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-types/with-defaults.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-types/with-defaults.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-types/with-defaults.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-types/with-defaults.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-web/index.js b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-web/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-web/index.js
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-web/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-web/index.js.map b/actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-web/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/dist-web/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/dist-web/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/request/package.json b/actions/bcr-pr-reviewer/node_modules/@octokit/request/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/request/package.json
rename to actions/bcr-pr-reviewer/node_modules/@octokit/request/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/LICENSE b/actions/bcr-pr-reviewer/node_modules/@octokit/types/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/README.md b/actions/bcr-pr-reviewer/node_modules/@octokit/types/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/README.md
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/AuthInterface.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/AuthInterface.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/AuthInterface.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/AuthInterface.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/Fetch.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/Fetch.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/Fetch.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/Fetch.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestError.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestError.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestError.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestError.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestInterface.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestInterface.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestInterface.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestInterface.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestMethod.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestMethod.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestMethod.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestMethod.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestOptions.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestOptions.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestOptions.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestOptions.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestParameters.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestParameters.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestParameters.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestParameters.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/Route.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/Route.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/Route.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/Route.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/Signal.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/Signal.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/Signal.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/Signal.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/Url.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/Url.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/Url.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/Url.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/VERSION.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/VERSION.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/VERSION.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/VERSION.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/index.d.ts b/actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/dist-types/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/dist-types/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/@octokit/types/package.json b/actions/bcr-pr-reviewer/node_modules/@octokit/types/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/@octokit/types/package.json
rename to actions/bcr-pr-reviewer/node_modules/@octokit/types/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/before-after-hook/LICENSE b/actions/bcr-pr-reviewer/node_modules/before-after-hook/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/before-after-hook/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/before-after-hook/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/before-after-hook/README.md b/actions/bcr-pr-reviewer/node_modules/before-after-hook/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/before-after-hook/README.md
rename to actions/bcr-pr-reviewer/node_modules/before-after-hook/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/before-after-hook/index.d.ts b/actions/bcr-pr-reviewer/node_modules/before-after-hook/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/before-after-hook/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/before-after-hook/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/before-after-hook/index.js b/actions/bcr-pr-reviewer/node_modules/before-after-hook/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/before-after-hook/index.js
rename to actions/bcr-pr-reviewer/node_modules/before-after-hook/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/before-after-hook/lib/add.js b/actions/bcr-pr-reviewer/node_modules/before-after-hook/lib/add.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/before-after-hook/lib/add.js
rename to actions/bcr-pr-reviewer/node_modules/before-after-hook/lib/add.js
diff --git a/actions/bcr-pr-review-approver/node_modules/before-after-hook/lib/register.js b/actions/bcr-pr-reviewer/node_modules/before-after-hook/lib/register.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/before-after-hook/lib/register.js
rename to actions/bcr-pr-reviewer/node_modules/before-after-hook/lib/register.js
diff --git a/actions/bcr-pr-review-approver/node_modules/before-after-hook/lib/remove.js b/actions/bcr-pr-reviewer/node_modules/before-after-hook/lib/remove.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/before-after-hook/lib/remove.js
rename to actions/bcr-pr-reviewer/node_modules/before-after-hook/lib/remove.js
diff --git a/actions/bcr-pr-review-approver/node_modules/before-after-hook/package.json b/actions/bcr-pr-reviewer/node_modules/before-after-hook/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/before-after-hook/package.json
rename to actions/bcr-pr-reviewer/node_modules/before-after-hook/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/deprecation/LICENSE b/actions/bcr-pr-reviewer/node_modules/deprecation/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/deprecation/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/deprecation/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/deprecation/README.md b/actions/bcr-pr-reviewer/node_modules/deprecation/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/deprecation/README.md
rename to actions/bcr-pr-reviewer/node_modules/deprecation/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/deprecation/dist-node/index.js b/actions/bcr-pr-reviewer/node_modules/deprecation/dist-node/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/deprecation/dist-node/index.js
rename to actions/bcr-pr-reviewer/node_modules/deprecation/dist-node/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/deprecation/dist-src/index.js b/actions/bcr-pr-reviewer/node_modules/deprecation/dist-src/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/deprecation/dist-src/index.js
rename to actions/bcr-pr-reviewer/node_modules/deprecation/dist-src/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/deprecation/dist-types/index.d.ts b/actions/bcr-pr-reviewer/node_modules/deprecation/dist-types/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/deprecation/dist-types/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/deprecation/dist-types/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/deprecation/dist-web/index.js b/actions/bcr-pr-reviewer/node_modules/deprecation/dist-web/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/deprecation/dist-web/index.js
rename to actions/bcr-pr-reviewer/node_modules/deprecation/dist-web/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/deprecation/package.json b/actions/bcr-pr-reviewer/node_modules/deprecation/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/deprecation/package.json
rename to actions/bcr-pr-reviewer/node_modules/deprecation/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/once/LICENSE b/actions/bcr-pr-reviewer/node_modules/once/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/once/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/once/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/once/README.md b/actions/bcr-pr-reviewer/node_modules/once/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/once/README.md
rename to actions/bcr-pr-reviewer/node_modules/once/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/once/once.js b/actions/bcr-pr-reviewer/node_modules/once/once.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/once/once.js
rename to actions/bcr-pr-reviewer/node_modules/once/once.js
diff --git a/actions/bcr-pr-review-approver/node_modules/once/package.json b/actions/bcr-pr-reviewer/node_modules/once/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/once/package.json
rename to actions/bcr-pr-reviewer/node_modules/once/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/tunnel/.idea/encodings.xml b/actions/bcr-pr-reviewer/node_modules/tunnel/.idea/encodings.xml
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/tunnel/.idea/encodings.xml
rename to actions/bcr-pr-reviewer/node_modules/tunnel/.idea/encodings.xml
diff --git a/actions/bcr-pr-review-approver/node_modules/tunnel/.idea/modules.xml b/actions/bcr-pr-reviewer/node_modules/tunnel/.idea/modules.xml
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/tunnel/.idea/modules.xml
rename to actions/bcr-pr-reviewer/node_modules/tunnel/.idea/modules.xml
diff --git a/actions/bcr-pr-review-approver/node_modules/tunnel/.idea/node-tunnel.iml b/actions/bcr-pr-reviewer/node_modules/tunnel/.idea/node-tunnel.iml
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/tunnel/.idea/node-tunnel.iml
rename to actions/bcr-pr-reviewer/node_modules/tunnel/.idea/node-tunnel.iml
diff --git a/actions/bcr-pr-review-approver/node_modules/tunnel/.idea/vcs.xml b/actions/bcr-pr-reviewer/node_modules/tunnel/.idea/vcs.xml
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/tunnel/.idea/vcs.xml
rename to actions/bcr-pr-reviewer/node_modules/tunnel/.idea/vcs.xml
diff --git a/actions/bcr-pr-review-approver/node_modules/tunnel/.idea/workspace.xml b/actions/bcr-pr-reviewer/node_modules/tunnel/.idea/workspace.xml
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/tunnel/.idea/workspace.xml
rename to actions/bcr-pr-reviewer/node_modules/tunnel/.idea/workspace.xml
diff --git a/actions/bcr-pr-review-approver/node_modules/tunnel/.travis.yml b/actions/bcr-pr-reviewer/node_modules/tunnel/.travis.yml
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/tunnel/.travis.yml
rename to actions/bcr-pr-reviewer/node_modules/tunnel/.travis.yml
diff --git a/actions/bcr-pr-review-approver/node_modules/tunnel/CHANGELOG.md b/actions/bcr-pr-reviewer/node_modules/tunnel/CHANGELOG.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/tunnel/CHANGELOG.md
rename to actions/bcr-pr-reviewer/node_modules/tunnel/CHANGELOG.md
diff --git a/actions/bcr-pr-review-approver/node_modules/tunnel/LICENSE b/actions/bcr-pr-reviewer/node_modules/tunnel/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/tunnel/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/tunnel/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/tunnel/README.md b/actions/bcr-pr-reviewer/node_modules/tunnel/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/tunnel/README.md
rename to actions/bcr-pr-reviewer/node_modules/tunnel/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/tunnel/index.js b/actions/bcr-pr-reviewer/node_modules/tunnel/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/tunnel/index.js
rename to actions/bcr-pr-reviewer/node_modules/tunnel/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/tunnel/lib/tunnel.js b/actions/bcr-pr-reviewer/node_modules/tunnel/lib/tunnel.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/tunnel/lib/tunnel.js
rename to actions/bcr-pr-reviewer/node_modules/tunnel/lib/tunnel.js
diff --git a/actions/bcr-pr-review-approver/node_modules/tunnel/package.json b/actions/bcr-pr-reviewer/node_modules/tunnel/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/tunnel/package.json
rename to actions/bcr-pr-reviewer/node_modules/tunnel/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/LICENSE b/actions/bcr-pr-reviewer/node_modules/undici/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/undici/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/README.md b/actions/bcr-pr-reviewer/node_modules/undici/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/README.md
rename to actions/bcr-pr-reviewer/node_modules/undici/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/Agent.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/Agent.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/Agent.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/Agent.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/BalancedPool.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/BalancedPool.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/BalancedPool.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/BalancedPool.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/CacheStorage.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/CacheStorage.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/CacheStorage.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/CacheStorage.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/Client.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/Client.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/Client.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/Client.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/Connector.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/Connector.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/Connector.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/Connector.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/ContentType.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/ContentType.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/ContentType.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/ContentType.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/Cookies.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/Cookies.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/Cookies.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/Cookies.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/DiagnosticsChannel.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/DiagnosticsChannel.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/DiagnosticsChannel.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/DiagnosticsChannel.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/DispatchInterceptor.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/DispatchInterceptor.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/DispatchInterceptor.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/DispatchInterceptor.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/Dispatcher.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/Dispatcher.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/Dispatcher.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/Dispatcher.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/Errors.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/Errors.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/Errors.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/Errors.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/Fetch.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/Fetch.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/Fetch.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/Fetch.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/MockAgent.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/MockAgent.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/MockAgent.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/MockAgent.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/MockClient.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/MockClient.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/MockClient.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/MockClient.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/MockErrors.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/MockErrors.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/MockErrors.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/MockErrors.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/MockPool.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/MockPool.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/MockPool.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/MockPool.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/Pool.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/Pool.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/Pool.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/Pool.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/PoolStats.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/PoolStats.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/PoolStats.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/PoolStats.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/ProxyAgent.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/ProxyAgent.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/ProxyAgent.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/ProxyAgent.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/RetryHandler.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/RetryHandler.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/RetryHandler.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/RetryHandler.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/WebSocket.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/WebSocket.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/WebSocket.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/WebSocket.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/api/api-lifecycle.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/api/api-lifecycle.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/api/api-lifecycle.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/api/api-lifecycle.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/assets/lifecycle-diagram.png b/actions/bcr-pr-reviewer/node_modules/undici/docs/assets/lifecycle-diagram.png
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/assets/lifecycle-diagram.png
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/assets/lifecycle-diagram.png
Binary files differ
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/best-practices/client-certificate.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/best-practices/client-certificate.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/best-practices/client-certificate.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/best-practices/client-certificate.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/best-practices/mocking-request.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/best-practices/mocking-request.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/best-practices/mocking-request.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/best-practices/mocking-request.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/best-practices/proxy.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/best-practices/proxy.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/best-practices/proxy.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/best-practices/proxy.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/docs/best-practices/writing-tests.md b/actions/bcr-pr-reviewer/node_modules/undici/docs/best-practices/writing-tests.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/docs/best-practices/writing-tests.md
rename to actions/bcr-pr-reviewer/node_modules/undici/docs/best-practices/writing-tests.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/index-fetch.js b/actions/bcr-pr-reviewer/node_modules/undici/index-fetch.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/index-fetch.js
rename to actions/bcr-pr-reviewer/node_modules/undici/index-fetch.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/index.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/index.js b/actions/bcr-pr-reviewer/node_modules/undici/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/index.js
rename to actions/bcr-pr-reviewer/node_modules/undici/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/agent.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/agent.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/agent.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/agent.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/api/abort-signal.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/api/abort-signal.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/api/abort-signal.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/api/abort-signal.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/api/api-connect.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/api/api-connect.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/api/api-connect.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/api/api-connect.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/api/api-pipeline.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/api/api-pipeline.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/api/api-pipeline.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/api/api-pipeline.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/api/api-request.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/api/api-request.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/api/api-request.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/api/api-request.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/api/api-stream.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/api/api-stream.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/api/api-stream.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/api/api-stream.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/api/api-upgrade.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/api/api-upgrade.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/api/api-upgrade.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/api/api-upgrade.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/api/index.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/api/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/api/index.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/api/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/api/readable.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/api/readable.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/api/readable.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/api/readable.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/api/util.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/api/util.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/api/util.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/api/util.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/balanced-pool.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/balanced-pool.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/balanced-pool.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/balanced-pool.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/cache/cache.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/cache/cache.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/cache/cache.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/cache/cache.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/cache/cachestorage.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/cache/cachestorage.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/cache/cachestorage.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/cache/cachestorage.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/cache/symbols.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/cache/symbols.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/cache/symbols.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/cache/symbols.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/cache/util.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/cache/util.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/cache/util.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/cache/util.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/client.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/client.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/client.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/client.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/compat/dispatcher-weakref.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/compat/dispatcher-weakref.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/compat/dispatcher-weakref.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/compat/dispatcher-weakref.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/cookies/constants.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/cookies/constants.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/cookies/constants.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/cookies/constants.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/cookies/index.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/cookies/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/cookies/index.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/cookies/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/cookies/parse.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/cookies/parse.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/cookies/parse.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/cookies/parse.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/cookies/util.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/cookies/util.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/cookies/util.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/cookies/util.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/core/connect.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/core/connect.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/core/connect.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/core/connect.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/core/errors.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/core/errors.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/core/errors.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/core/errors.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/core/request.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/core/request.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/core/request.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/core/request.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/core/symbols.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/core/symbols.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/core/symbols.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/core/symbols.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/core/util.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/core/util.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/core/util.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/core/util.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/dispatcher-base.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/dispatcher-base.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/dispatcher-base.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/dispatcher-base.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/dispatcher.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/dispatcher.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/dispatcher.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/dispatcher.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/LICENSE b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/body.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/body.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/body.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/body.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/constants.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/constants.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/constants.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/constants.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/dataURL.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/dataURL.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/dataURL.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/dataURL.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/file.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/file.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/file.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/file.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/formdata.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/formdata.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/formdata.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/formdata.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/global.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/global.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/global.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/global.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/headers.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/headers.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/headers.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/headers.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/index.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/index.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/request.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/request.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/request.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/request.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/response.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/response.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/response.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/response.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/symbols.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/symbols.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/symbols.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/symbols.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/util.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/util.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/util.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/util.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/webidl.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/webidl.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fetch/webidl.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fetch/webidl.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fileapi/encoding.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fileapi/encoding.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fileapi/encoding.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fileapi/encoding.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fileapi/filereader.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fileapi/filereader.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fileapi/filereader.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fileapi/filereader.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fileapi/progressevent.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fileapi/progressevent.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fileapi/progressevent.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fileapi/progressevent.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fileapi/symbols.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fileapi/symbols.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fileapi/symbols.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fileapi/symbols.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/fileapi/util.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/fileapi/util.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/fileapi/util.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/fileapi/util.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/global.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/global.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/global.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/global.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/handler/DecoratorHandler.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/handler/DecoratorHandler.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/handler/DecoratorHandler.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/handler/DecoratorHandler.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/handler/RedirectHandler.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/handler/RedirectHandler.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/handler/RedirectHandler.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/handler/RedirectHandler.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/handler/RetryHandler.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/handler/RetryHandler.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/handler/RetryHandler.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/handler/RetryHandler.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/interceptor/redirectInterceptor.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/interceptor/redirectInterceptor.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/interceptor/redirectInterceptor.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/interceptor/redirectInterceptor.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/constants.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/constants.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/constants.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/constants.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/constants.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/constants.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/constants.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/constants.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/constants.js.map b/actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/constants.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/constants.js.map
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/constants.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/llhttp-wasm.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/llhttp-wasm.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/llhttp-wasm.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/llhttp-wasm.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/llhttp.wasm b/actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/llhttp.wasm
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/llhttp.wasm
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/llhttp.wasm
Binary files differ
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/llhttp_simd.wasm b/actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/llhttp_simd.wasm
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/llhttp_simd.wasm
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/llhttp_simd.wasm
Binary files differ
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/utils.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/utils.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/utils.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/utils.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/utils.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/utils.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/utils.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/utils.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/utils.js.map b/actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/utils.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/utils.js.map
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/utils.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/wasm_build_env.txt b/actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/wasm_build_env.txt
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/llhttp/wasm_build_env.txt
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/llhttp/wasm_build_env.txt
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-agent.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-agent.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-agent.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-agent.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-client.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-client.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-client.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-client.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-errors.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-errors.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-errors.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-errors.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-interceptor.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-interceptor.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-interceptor.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-interceptor.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-pool.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-pool.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-pool.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-pool.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-symbols.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-symbols.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-symbols.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-symbols.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-utils.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-utils.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/mock/mock-utils.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/mock/mock-utils.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/mock/pending-interceptors-formatter.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/mock/pending-interceptors-formatter.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/mock/pending-interceptors-formatter.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/mock/pending-interceptors-formatter.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/mock/pluralizer.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/mock/pluralizer.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/mock/pluralizer.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/mock/pluralizer.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/node/fixed-queue.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/node/fixed-queue.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/node/fixed-queue.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/node/fixed-queue.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/pool-base.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/pool-base.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/pool-base.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/pool-base.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/pool-stats.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/pool-stats.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/pool-stats.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/pool-stats.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/pool.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/pool.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/pool.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/pool.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/proxy-agent.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/proxy-agent.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/proxy-agent.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/proxy-agent.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/timers.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/timers.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/timers.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/timers.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/connection.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/connection.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/connection.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/connection.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/constants.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/constants.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/constants.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/constants.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/events.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/events.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/events.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/events.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/frame.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/frame.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/frame.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/frame.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/receiver.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/receiver.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/receiver.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/receiver.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/symbols.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/symbols.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/symbols.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/symbols.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/util.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/util.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/util.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/util.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/websocket.js b/actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/websocket.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/lib/websocket/websocket.js
rename to actions/bcr-pr-reviewer/node_modules/undici/lib/websocket/websocket.js
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/package.json b/actions/bcr-pr-reviewer/node_modules/undici/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/package.json
rename to actions/bcr-pr-reviewer/node_modules/undici/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/README.md b/actions/bcr-pr-reviewer/node_modules/undici/types/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/README.md
rename to actions/bcr-pr-reviewer/node_modules/undici/types/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/agent.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/agent.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/agent.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/agent.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/api.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/api.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/api.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/api.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/balanced-pool.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/balanced-pool.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/balanced-pool.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/balanced-pool.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/cache.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/cache.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/cache.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/cache.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/client.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/client.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/client.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/client.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/connector.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/connector.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/connector.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/connector.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/content-type.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/content-type.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/content-type.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/content-type.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/cookies.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/cookies.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/cookies.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/cookies.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/diagnostics-channel.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/diagnostics-channel.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/diagnostics-channel.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/diagnostics-channel.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/dispatcher.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/dispatcher.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/dispatcher.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/dispatcher.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/errors.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/errors.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/errors.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/errors.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/fetch.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/fetch.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/fetch.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/fetch.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/file.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/file.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/file.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/file.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/filereader.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/filereader.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/filereader.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/filereader.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/formdata.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/formdata.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/formdata.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/formdata.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/global-dispatcher.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/global-dispatcher.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/global-dispatcher.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/global-dispatcher.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/global-origin.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/global-origin.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/global-origin.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/global-origin.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/handlers.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/handlers.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/handlers.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/handlers.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/header.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/header.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/header.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/header.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/index.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/interceptors.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/interceptors.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/interceptors.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/interceptors.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/mock-agent.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/mock-agent.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/mock-agent.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/mock-agent.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/mock-client.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/mock-client.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/mock-client.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/mock-client.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/mock-errors.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/mock-errors.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/mock-errors.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/mock-errors.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/mock-interceptor.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/mock-interceptor.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/mock-interceptor.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/mock-interceptor.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/mock-pool.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/mock-pool.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/mock-pool.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/mock-pool.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/patch.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/patch.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/patch.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/patch.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/pool-stats.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/pool-stats.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/pool-stats.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/pool-stats.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/pool.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/pool.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/pool.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/pool.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/proxy-agent.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/proxy-agent.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/proxy-agent.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/proxy-agent.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/readable.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/readable.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/readable.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/readable.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/retry-handler.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/retry-handler.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/retry-handler.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/retry-handler.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/webidl.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/webidl.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/webidl.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/webidl.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/undici/types/websocket.d.ts b/actions/bcr-pr-reviewer/node_modules/undici/types/websocket.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/undici/types/websocket.d.ts
rename to actions/bcr-pr-reviewer/node_modules/undici/types/websocket.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/universal-user-agent/LICENSE.md b/actions/bcr-pr-reviewer/node_modules/universal-user-agent/LICENSE.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/universal-user-agent/LICENSE.md
rename to actions/bcr-pr-reviewer/node_modules/universal-user-agent/LICENSE.md
diff --git a/actions/bcr-pr-review-approver/node_modules/universal-user-agent/README.md b/actions/bcr-pr-reviewer/node_modules/universal-user-agent/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/universal-user-agent/README.md
rename to actions/bcr-pr-reviewer/node_modules/universal-user-agent/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/universal-user-agent/dist-node/index.js b/actions/bcr-pr-reviewer/node_modules/universal-user-agent/dist-node/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/universal-user-agent/dist-node/index.js
rename to actions/bcr-pr-reviewer/node_modules/universal-user-agent/dist-node/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/universal-user-agent/dist-node/index.js.map b/actions/bcr-pr-reviewer/node_modules/universal-user-agent/dist-node/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/universal-user-agent/dist-node/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/universal-user-agent/dist-node/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/universal-user-agent/dist-src/index.js b/actions/bcr-pr-reviewer/node_modules/universal-user-agent/dist-src/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/universal-user-agent/dist-src/index.js
rename to actions/bcr-pr-reviewer/node_modules/universal-user-agent/dist-src/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/universal-user-agent/dist-types/index.d.ts b/actions/bcr-pr-reviewer/node_modules/universal-user-agent/dist-types/index.d.ts
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/universal-user-agent/dist-types/index.d.ts
rename to actions/bcr-pr-reviewer/node_modules/universal-user-agent/dist-types/index.d.ts
diff --git a/actions/bcr-pr-review-approver/node_modules/universal-user-agent/dist-web/index.js b/actions/bcr-pr-reviewer/node_modules/universal-user-agent/dist-web/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/universal-user-agent/dist-web/index.js
rename to actions/bcr-pr-reviewer/node_modules/universal-user-agent/dist-web/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/universal-user-agent/dist-web/index.js.map b/actions/bcr-pr-reviewer/node_modules/universal-user-agent/dist-web/index.js.map
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/universal-user-agent/dist-web/index.js.map
rename to actions/bcr-pr-reviewer/node_modules/universal-user-agent/dist-web/index.js.map
diff --git a/actions/bcr-pr-review-approver/node_modules/universal-user-agent/package.json b/actions/bcr-pr-reviewer/node_modules/universal-user-agent/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/universal-user-agent/package.json
rename to actions/bcr-pr-reviewer/node_modules/universal-user-agent/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/CHANGELOG.md b/actions/bcr-pr-reviewer/node_modules/uuid/CHANGELOG.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/CHANGELOG.md
rename to actions/bcr-pr-reviewer/node_modules/uuid/CHANGELOG.md
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/CONTRIBUTING.md b/actions/bcr-pr-reviewer/node_modules/uuid/CONTRIBUTING.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/CONTRIBUTING.md
rename to actions/bcr-pr-reviewer/node_modules/uuid/CONTRIBUTING.md
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/LICENSE.md b/actions/bcr-pr-reviewer/node_modules/uuid/LICENSE.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/LICENSE.md
rename to actions/bcr-pr-reviewer/node_modules/uuid/LICENSE.md
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/README.md b/actions/bcr-pr-reviewer/node_modules/uuid/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/README.md
rename to actions/bcr-pr-reviewer/node_modules/uuid/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/bin/uuid b/actions/bcr-pr-reviewer/node_modules/uuid/dist/bin/uuid
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/bin/uuid
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/bin/uuid
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/index.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/index.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/md5.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/md5.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/md5.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/md5.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/nil.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/nil.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/nil.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/nil.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/parse.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/parse.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/parse.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/parse.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/regex.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/regex.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/regex.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/regex.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/rng.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/rng.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/rng.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/rng.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/sha1.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/sha1.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/sha1.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/sha1.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/stringify.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/stringify.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/stringify.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/stringify.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/v1.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/v1.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/v1.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/v1.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/v3.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/v3.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/v3.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/v3.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/v35.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/v35.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/v35.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/v35.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/v4.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/v4.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/v4.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/v4.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/v5.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/v5.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/v5.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/v5.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/validate.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/validate.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/validate.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/validate.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/version.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/version.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-browser/version.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-browser/version.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/index.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/index.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/md5.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/md5.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/md5.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/md5.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/nil.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/nil.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/nil.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/nil.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/parse.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/parse.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/parse.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/parse.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/regex.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/regex.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/regex.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/regex.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/rng.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/rng.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/rng.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/rng.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/sha1.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/sha1.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/sha1.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/sha1.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/stringify.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/stringify.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/stringify.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/stringify.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/v1.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/v1.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/v1.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/v1.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/v3.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/v3.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/v3.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/v3.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/v35.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/v35.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/v35.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/v35.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/v4.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/v4.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/v4.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/v4.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/v5.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/v5.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/v5.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/v5.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/validate.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/validate.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/validate.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/validate.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/version.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/version.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/esm-node/version.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/esm-node/version.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/index.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/index.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/index.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/index.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/md5-browser.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/md5-browser.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/md5-browser.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/md5-browser.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/md5.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/md5.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/md5.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/md5.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/nil.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/nil.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/nil.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/nil.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/parse.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/parse.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/parse.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/parse.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/regex.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/regex.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/regex.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/regex.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/rng-browser.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/rng-browser.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/rng-browser.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/rng-browser.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/rng.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/rng.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/rng.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/rng.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/sha1-browser.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/sha1-browser.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/sha1-browser.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/sha1-browser.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/sha1.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/sha1.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/sha1.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/sha1.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/stringify.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/stringify.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/stringify.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/stringify.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuid.min.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuid.min.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuid.min.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuid.min.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidNIL.min.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidNIL.min.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidNIL.min.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidNIL.min.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidParse.min.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidParse.min.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidParse.min.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidParse.min.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidStringify.min.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidStringify.min.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidStringify.min.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidStringify.min.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidValidate.min.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidValidate.min.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidValidate.min.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidValidate.min.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidVersion.min.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidVersion.min.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidVersion.min.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidVersion.min.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidv1.min.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidv1.min.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidv1.min.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidv1.min.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidv3.min.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidv3.min.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidv3.min.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidv3.min.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidv4.min.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidv4.min.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidv4.min.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidv4.min.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidv5.min.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidv5.min.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/umd/uuidv5.min.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/umd/uuidv5.min.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/uuid-bin.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/uuid-bin.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/uuid-bin.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/uuid-bin.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/v1.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/v1.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/v1.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/v1.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/v3.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/v3.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/v3.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/v3.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/v35.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/v35.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/v35.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/v35.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/v4.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/v4.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/v4.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/v4.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/v5.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/v5.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/v5.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/v5.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/validate.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/validate.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/validate.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/validate.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/dist/version.js b/actions/bcr-pr-reviewer/node_modules/uuid/dist/version.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/dist/version.js
rename to actions/bcr-pr-reviewer/node_modules/uuid/dist/version.js
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/package.json b/actions/bcr-pr-reviewer/node_modules/uuid/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/package.json
rename to actions/bcr-pr-reviewer/node_modules/uuid/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/uuid/wrapper.mjs b/actions/bcr-pr-reviewer/node_modules/uuid/wrapper.mjs
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/uuid/wrapper.mjs
rename to actions/bcr-pr-reviewer/node_modules/uuid/wrapper.mjs
diff --git a/actions/bcr-pr-review-approver/node_modules/wrappy/LICENSE b/actions/bcr-pr-reviewer/node_modules/wrappy/LICENSE
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/wrappy/LICENSE
rename to actions/bcr-pr-reviewer/node_modules/wrappy/LICENSE
diff --git a/actions/bcr-pr-review-approver/node_modules/wrappy/README.md b/actions/bcr-pr-reviewer/node_modules/wrappy/README.md
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/wrappy/README.md
rename to actions/bcr-pr-reviewer/node_modules/wrappy/README.md
diff --git a/actions/bcr-pr-review-approver/node_modules/wrappy/package.json b/actions/bcr-pr-reviewer/node_modules/wrappy/package.json
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/wrappy/package.json
rename to actions/bcr-pr-reviewer/node_modules/wrappy/package.json
diff --git a/actions/bcr-pr-review-approver/node_modules/wrappy/wrappy.js b/actions/bcr-pr-reviewer/node_modules/wrappy/wrappy.js
similarity index 100%
rename from actions/bcr-pr-review-approver/node_modules/wrappy/wrappy.js
rename to actions/bcr-pr-reviewer/node_modules/wrappy/wrappy.js
diff --git a/actions/bcr-pr-review-approver/package-lock.json b/actions/bcr-pr-reviewer/package-lock.json
similarity index 100%
rename from actions/bcr-pr-review-approver/package-lock.json
rename to actions/bcr-pr-reviewer/package-lock.json
diff --git a/actions/bcr-pr-reviewer/package.json b/actions/bcr-pr-reviewer/package.json
new file mode 100644
index 0000000..e887dc1
--- /dev/null
+++ b/actions/bcr-pr-reviewer/package.json
@@ -0,0 +1,15 @@
+{
+  "name": "bcr-pr-reviewer",
+  "version": "1.0.0",
+  "description": "",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "@actions/core": "^1.10.1",
+    "@actions/github": "^6.0.0"
+  }
+}
